/[gentoo]/xml/htdocs/doc/en/xml-guide.xml
Gentoo

Diff of /xml/htdocs/doc/en/xml-guide.xml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.36 Revision 1.68
1<?xml version='1.0' encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/xml-guide.xml,v 1.36 2005/02/14 16:14:46 swift Exp $ --> 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/xml-guide.xml,v 1.68 2008/03/09 13:13:15 neysx Exp $ -->
3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd"> 3<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4 4
5<guide link="/doc/en/xml-guide.xml"> 5<guide>
6<title>Gentoo Linux XML Guide</title> 6<title>Gentoo GuideXML Guide</title>
7 7
8<author title="Author">
9 <mail link="neysx"/>
10</author>
8<author title="Author"> 11<author title="Author">
9 <mail link="drobbins@gentoo.org">Daniel Robbins</mail> 12 <mail link="drobbins@gentoo.org">Daniel Robbins</mail>
10</author> 13</author>
11<author title="Author"><!-- zhen@gentoo.org --> 14<author title="Author"><!-- zhen@gentoo.org -->
12 John P. Davis 15 John P. Davis
15 <mail link="peesh@gentoo.org">Jorge Paulo</mail> 18 <mail link="peesh@gentoo.org">Jorge Paulo</mail>
16</author> 19</author>
17<author title="Editor"> 20<author title="Editor">
18 <mail link="swift@gentoo.org">Sven Vermeulen</mail> 21 <mail link="swift@gentoo.org">Sven Vermeulen</mail>
19</author> 22</author>
20<author title="Editor">
21 <mail link="neysx@gentoo.org">Xavier Neys</mail>
22</author>
23 23
24<abstract> 24<abstract>
25This guide shows you how to compose web documentation using the new lightweight 25This guide shows you how to compose web documentation using the new lightweight
26Gentoo GuideXML syntax. This syntax is the official format for Gentoo Linux 26Gentoo GuideXML syntax. This syntax is the official format for Gentoo
27documentation, and this document itself was created using GuideXML. This guide 27documentation, and this document itself was created using GuideXML. This guide
28assumes a basic working knowledge of XML and HTML. 28assumes a basic working knowledge of XML and HTML.
29</abstract> 29</abstract>
30 30
31<!-- The content of this document is licensed under the CC-BY-SA license --> 31<!-- The content of this document is licensed under the CC-BY-SA license -->
32<!-- See http://creativecommons.org/licenses/by-sa/2.0 --> 32<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
33<license/> 33<license/>
34 34
35<version>2.13</version> 35<version>9</version>
36<date>2005-02-14</date> 36<date>2008-03-09</date>
37 37
38<chapter> 38<chapter>
39<title>Guide basics</title> 39<title>GuideXML basics</title>
40<section> 40<section>
41<title>Guide XML design goals</title> 41<title>GuideXML design goals</title>
42<body> 42<body>
43 43
44<p> 44<p>
45The guide XML syntax is lightweight yet expressive, so that it is easy to 45The guideXML syntax is lightweight yet expressive, so that it is easy to
46learn yet also provides all the features we need for the creation of web 46learn yet also provides all the features we need for the creation of web
47documentation. The number of tags is kept to a minimum -- just those we need. 47documentation. The number of tags is kept to a minimum -- just those we need.
48This makes it easy to transform guide into other formats, such as DocBook 48This makes it easy to transform guide into other formats, such as DocBook
49XML/SGML or web-ready HTML. 49XML/SGML or web-ready HTML.
50</p> 50</p>
51 51
52<p> 52<p>
53The goal is to make it easy to <e>create</e> and <e>transform</e> guide XML 53The goal is to make it easy to <e>create</e> and <e>transform</e> guideXML
54documents. 54documents.
55</p> 55</p>
56 56
57</body> 57</body>
58</section> 58</section>
60<title>Further Resources</title> 60<title>Further Resources</title>
61<body> 61<body>
62 62
63<p> 63<p>
64If you are planning on contributing documentation to Gentoo, or you want to 64If you are planning on contributing documentation to Gentoo, or you want to
65test GuideXML, please read the <uri 65test GuideXML, please read our <uri
66link="/proj/en/gdp/doc/doc-tipsntricks.xml">Tips and Tricks</uri> which 66link="/proj/en/gdp/doc/doc-tipsntricks.xml">Doc Tips 'n' Tricks</uri> guide
67contains tips and tricks for documentation development. 67which contains tips and tricks for documentation development.
68</p>
69
70<p>
71You may want to look at the <uri link="?passthru=1">XML source</uri> of this
72document while you read it.
68</p> 73</p>
69 74
70</body> 75</body>
71</section> 76</section>
72</chapter> 77</chapter>
73 78
74<chapter> 79<chapter>
75<title>Guide XML</title> 80<title>GuideXML</title>
76<section> 81<section>
77<title>Basic structure</title> 82<title>Basic structure</title>
78<body> 83<body>
79 84
80<p> 85<p>
81Let's start learning the GuideXML syntax. We'll start with the the initial 86Let's start learning the GuideXML syntax. We'll start with the the initial
82tags used in a GuideXML document: 87tags used in a GuideXML document:
83</p> 88</p>
84 89
85<pre caption="The initial part of a guide XML document"> 90<pre caption="The initial part of a guide XML document">
86&lt;?xml version='1.0' encoding="UTF-8"?&gt; 91&lt;?xml version="1.0" encoding="UTF-8"?&gt;
87&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt; 92&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt;
93&lt;!-- &#36;Header&#36; --&gt;
94
88&lt;guide link="<i>relative/link/to/your/guide.xml</i>" lang="<i>en</i>"&gt; 95&lt;guide link="<i>/doc/en/guide.xml</i>" lang="<i>en</i>"&gt;
89&lt;title&gt;<i>Gentoo Linux Documentation Guide</i>&lt;/title&gt; 96&lt;title&gt;<i>Gentoo Documentation Guide</i>&lt;/title&gt;
97
90&lt;author title="<i>Author</i>"&gt; 98&lt;author title="<i>Author</i>"&gt;
91 &lt;mail link="<i>yourname@gentoo.org</i>"&gt;<i>Your Name</i>&lt;/mail&gt; 99 &lt;mail link="<i>yourname@gentoo.org</i>"&gt;<i>Your Name</i>&lt;/mail&gt;
92&lt;/author&gt; 100&lt;/author&gt;
93 101
94&lt;abstract&gt; 102&lt;abstract&gt;
95<i>This guide shows you how to compose web documentation using 103<i>This guide shows you how to compose web documentation using
96our new lightweight Gentoo GuideXML syntax. This syntax is the official 104our new lightweight Gentoo GuideXML syntax. This syntax is the official
97format for Gentoo Linux web documentation, and this document itself was created 105format for Gentoo web documentation, and this document itself was created
98using GuideXML.</i> 106using GuideXML.</i>
99&lt;/abstract&gt; 107&lt;/abstract&gt;
100 108
101&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt; 109&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
102&lt;!-- See http://creativecommons.org/licenses/by-sa/2.0 --&gt; 110&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
103&lt;license/&gt; 111&lt;license/&gt;
104 112
105&lt;version&gt;<i>1.0</i>&lt;/version&gt; 113&lt;version&gt;<i>1.0</i>&lt;/version&gt;
106&lt;date&gt;<i>2004-12-25</i>&lt;/date&gt; 114&lt;date&gt;<i>2004-12-25</i>&lt;/date&gt;
107</pre> 115</pre>
108 116
109<p> 117<p>
110On the first, line, we see the requisite tag that identifies this as an XML 118On the first lines, we see the requisite tag that identifies this as an XML
111document. Following it, there's a <c>&lt;guide&gt;</c> tag -- the entire 119document and specifies its DTD. The <c>&lt;!-- &#36;Header&#36; --&gt;</c> line
120will be automatically modified by the CVS server and helps to track revisions.
121Next, there's a <c>&lt;guide&gt;</c> tag -- the entire guide document is
112guide document is enclosed within a <c>&lt;guide&gt; &lt;/guide&gt;</c> pair. 122enclosed within a <c>&lt;guide&gt; &lt;/guide&gt;</c> pair.
123<br/>
113The <c>link</c> attribute is compulsory and should preferably contain the 124The <c>link</c> attribute is optional and should preferably contain the
114relative path to the document even though the file name alone will work. It is 125absolute path to the document relatively to the document root even though the
115mainly used to generate a link to a printer-friendly version of your document. 126file name alone will work. It is only used to generate a link to a
116If you use a wrong value, the link to the printable version will either not 127printer-friendly version of your document and check whether a translation is
117work or point to a wrong document. The <c>lang</c> attribute can be used to 128up-to-date. Our XSL back-engine passes the actual path to our XSL stylesheet.
118specify the language code of your document. It is used to format the date and 129The link attribute is only used as a fall-back value in case the XML is
119insert strings like "<e>Note</e>", "<e>Content</e>", etc. in the specified 130processed by other means.
120language. The default is English. 131<br/>
132The <c>lang</c> attribute should be used to specify the language code of your
133document. It is used to format the date and insert strings like "<e>Note</e>",
134"<e>Content</e>", etc. in the specified language. The default is English.
121</p> 135</p>
122 136
123<p> 137<p>
124Next, there's a <c>&lt;title&gt;</c> tag, used to set the title for the entire 138Next, there's a <c>&lt;title&gt;</c> tag, used to set the title for the entire
125guide document. 139guide document.
126</p> 140</p>
127 141
128<p> 142<p>
129Then, we come to the <c>&lt;author&gt;</c> tags, which contain information 143Then, we come to the <c>&lt;author&gt;</c> tags, which contain information
130about the various authors of the document. Each <c>&lt;author&gt;</c> tag 144about the various authors of the document. Each <c>&lt;author&gt;</c> tag
131allows for an optional <c>title=</c> element, used to specify the author's 145allows for an optional <c>title</c> element, used to specify the author's
132relationship to the document (author, co-author, editor, etc.). In this 146relationship to the document (author, co-author, editor, etc.). In this
133particular example, the authors' names are enclosed in another tag -- a 147particular example, the authors' names are enclosed in another tag -- a
134<c>&lt;mail&gt;</c> tag, used to specify an email address for this particular 148<c>&lt;mail&gt;</c> tag, used to specify an email address for this particular
135person. The <c>&lt;mail&gt;</c> tag is optional and can be omitted, and no 149person. The <c>&lt;mail&gt;</c> tag is optional and can be omitted, and at
136more than one <c>&lt;author&gt;</c> element is required per guide document. 150least one <c>&lt;author&gt;</c> element is required per guide document.
137</p> 151</p>
138 152
139<p> 153<p>
140Next, we come to the <c>&lt;abstract&gt;</c>, <c>&lt;version&gt;</c> and 154Next, we come to the <c>&lt;abstract&gt;</c>, <c>&lt;version&gt;</c> and
141<c>&lt;date&gt;</c> tags, used to specify a summary of the document, the 155<c>&lt;date&gt;</c> tags, used to specify a summary of the document, the
143respectively. Dates that are invalid or not in the YYYY-MM-DD format will 157respectively. Dates that are invalid or not in the YYYY-MM-DD format will
144appear verbatim in the rendered document. 158appear verbatim in the rendered document.
145</p> 159</p>
146 160
147<p> 161<p>
148This rounds out the tags that should appear at the beginning of a guide 162This sums up the tags that should appear at the beginning of a guide document.
149document. Besides the <c>&lt;title&gt;</c> and <c>&lt;mail&gt;</c> tags, these 163Besides the <c>&lt;title&gt;</c> and <c>&lt;mail&gt;</c> tags, these tags
150tags shouldn't appear anywhere else except immediately inside the 164shouldn't appear anywhere else except immediately inside the
151<c>&lt;guide&gt;</c> tag, and for consistency it's recommended (but not 165<c>&lt;guide&gt;</c> tag, and for consistency it's recommended (but not
152required) that these tags appear before the content of the document. 166required) that these tags appear before the content of the document.
153</p> 167</p>
154 168
155<p> 169<p>
156Finally we have the <c>&lt;license/&gt;</c> tag, used to publish the 170Finally we have the <c>&lt;license/&gt;</c> tag, used to publish the document
157document under the <uri link="http://creativecommons.org/licenses/by-sa/2.0/">Creative 171under the <uri link="http://creativecommons.org/licenses/by-sa/2.5/">Creative
158Commons - Attribution / Share Alike</uri> license as required by the <uri 172Commons - Attribution / Share Alike</uri> license as required by the <uri
159link="/doc/en/doc-policy.xml">Documentation Policy</uri>. 173link="/proj/en/gdp/doc/doc-policy.xml">Documentation Policy</uri>.
160</p> 174</p>
161 175
162</body> 176</body>
163</section> 177</section>
164<section> 178<section>
165<title>Chapters and sections</title> 179<title>Chapters and sections</title>
166<body> 180<body>
167 181
168<p> 182<p>
169Once the initial tags have been specified, you're ready to start adding 183Once the initial tags have been specified, you're ready to start adding the
170the structural elements of the document. Guide documents are divided into 184structural elements of the document. Guide documents are divided into
171chapters, and each chapter can hold one or more sections. Every chapter 185chapters, and each chapter can hold one or more sections. Every chapter and
172and section has a title. Here's an example chapter with a single section, 186section has a title. Here's an example chapter with a single section,
173consisting of a paragraph. If you append this XML to the XML in the <uri link="#doc_chap2_pre1">previous 187consisting of a paragraph. If you append this XML to the XML in the <uri
188link="#doc_chap2_pre1">previous excerpt</uri> and append a
174excerpt</uri> and append a <c>&lt;/guide&gt;</c> to the end of the file, you'll have a valid 189<c>&lt;/guide&gt;</c> to the end of the file, you'll have a valid (if minimal)
175(if minimal) guide document: 190guide document:
176</p> 191</p>
177 192
178<pre> 193<pre caption="Minimal guide example">
179&lt;chapter&gt; 194&lt;chapter&gt;
180&lt;title&gt;<i>This is my chapter</i>&lt;/title&gt; 195&lt;title&gt;<i>This is my chapter</i>&lt;/title&gt;
181&lt;section&gt; 196&lt;section&gt;
182&lt;title&gt;<i>This is section one of my chapter</i>&lt;/title&gt; 197&lt;title&gt;<i>This is section one of my chapter</i>&lt;/title&gt;
183&lt;body&gt; 198&lt;body&gt;
201content of this particular section. We'll look at the tags that are allowed 216content of this particular section. We'll look at the tags that are allowed
202inside a <c>&lt;body&gt;</c> element in a bit. 217inside a <c>&lt;body&gt;</c> element in a bit.
203</p> 218</p>
204 219
205<note> 220<note>
206A <c>&lt;guide&gt;</c> element can contain multiple <c>&lt;chapter&gt;</c> 221A <c>&lt;guide&gt;</c> element must contain at least one <c>&lt;chapter&gt;</c>
207elements, and a <c>&lt;chapter&gt;</c> can contain multiple 222elements, a <c>&lt;chapter&gt;</c> must contain at least one
208<c>&lt;section&gt;</c> elements. However, a <c>&lt;section&gt;</c> 223<c>&lt;section&gt;</c> elements and a <c>&lt;section&gt;</c> element must
209element can only contain one <c>&lt;body&gt;</c> element. 224contain at least one <c>&lt;body&gt;</c> element.
210</note> 225</note>
211 226
212</body> 227</body>
213</section> 228</section>
214<section> 229<section>
215<title>An example &lt;body&gt;</title> 230<title>An example &lt;body&gt;</title>
216<body> 231<body>
217 232
218<p> 233<p>
219Now, it's time to learn how to mark up actual content. Here's the XML code for an example <c>&lt;body&gt;</c> element: 234Now, it's time to learn how to mark up actual content. Here's the XML code for
235an example <c>&lt;body&gt;</c> element:
220</p> 236</p>
221 237
222<pre> 238<pre caption="Example of a body element">
223&lt;p&gt; 239&lt;p&gt;
224This is a paragraph. &lt;path&gt;/etc/passwd&lt;/path&gt; is a file. 240This is a paragraph. &lt;path&gt;/etc/passwd&lt;/path&gt; is a file.
225&lt;uri&gt;http://forums.gentoo.org&lt;/uri&gt; is my favorite website. 241&lt;uri&gt;http://forums.gentoo.org&lt;/uri&gt; is my favorite website.
226Type &lt;c&gt;ls&lt;/c&gt; if you feel like it. I &lt;e&gt;really&lt;/e&gt; want to go to sleep now. 242Type &lt;c&gt;ls&lt;/c&gt; if you feel like it. I &lt;e&gt;really&lt;/e&gt; want to go to sleep now.
227&lt;/p&gt; 243&lt;/p&gt;
228 244
229&lt;pre&gt; 245&lt;pre caption="Code Sample"&gt;
230This is text output or code. 246This is text output or code.
231# &lt;i&gt;this is user input&lt;/i&gt; 247# &lt;i&gt;this is user input&lt;/i&gt;
232 248
233Make HTML/XML easier to read by using selective emphasis: 249Make HTML/XML easier to read by using selective emphasis:
234&lt;foo&gt;&lt;i&gt;bar&lt;/i&gt;&lt;/foo&gt; 250&lt;foo&gt;&lt;i&gt;bar&lt;/i&gt;&lt;/foo&gt;
235 251
236&lt;codenote&gt;This is how to insert an inline note into the code block&lt;/codenote&gt; 252&lt;comment&gt;(This is how to insert a comment into a code block)&lt;/comment&gt;
237&lt;/pre&gt; 253&lt;/pre&gt;
238 254
239&lt;note&gt; 255&lt;note&gt;
240This is a note. 256This is a note.
241&lt;/note&gt; 257&lt;/note&gt;
248This is important. 264This is important.
249&lt;/impo&gt; 265&lt;/impo&gt;
250</pre> 266</pre>
251 267
252<p> 268<p>
253Now, here's how this <c>&lt;body&gt;</c> element is rendered: 269Now, here's how the <c>&lt;body&gt;</c> element above is rendered:
254</p> 270</p>
255 271
256<p> 272<p>
257This is a paragraph. <path>/etc/passwd</path> is a file. 273This is a paragraph. <path>/etc/passwd</path> is a file.
258<uri>http://forums.gentoo.org</uri> is my favorite website. 274<uri>http://forums.gentoo.org</uri> is my favorite web site.
259Type <c>ls</c> if you feel like it. I <e>really</e> want to go to sleep now. 275Type <c>ls</c> if you feel like it. I <e>really</e> want to go to sleep now.
260</p> 276</p>
261 277
262<pre> 278<pre caption="Code Sample">
263This is text output or code. 279This is text output or code.
264# <i>this is user input</i> 280# <i>this is user input</i>
265 281
266Make HTML/XML easier to read by using selective emphasis: 282Make HTML/XML easier to read by using selective emphasis:
267&lt;foo&gt;<i>bar</i>&lt;/foo&gt; 283&lt;foo&gt;<i>bar</i>&lt;/foo&gt;
268 284
269<codenote>This is how to insert an inline note into the code block</codenote> 285<comment>(This is how to insert a comment into a code block)</comment>
270</pre> 286</pre>
271 287
272<note> 288<note>
273This is a note. 289This is a note.
274</note> 290</note>
286<section> 302<section>
287<title>The &lt;body&gt; tags</title> 303<title>The &lt;body&gt; tags</title>
288<body> 304<body>
289 305
290<p> 306<p>
291We introduced a lot of new tags in the previous section -- here's what you 307We introduced a lot of new tags in the previous section -- here's what you need
292need to know. The <c>&lt;p&gt;</c> (paragraph), <c>&lt;pre&gt;</c> (code 308to know. The <c>&lt;p&gt;</c> (paragraph), <c>&lt;pre&gt;</c> (code block),
293block), <c>&lt;note&gt;</c>, <c>&lt;warn&gt;</c> (warning) and 309<c>&lt;note&gt;</c>, <c>&lt;warn&gt;</c> (warning) and <c>&lt;impo&gt;</c>
294<c>&lt;impo&gt;</c> (important) tags all can contain one or more lines of text. 310(important) tags all can contain one or more lines of text. Besides the
311<c>&lt;table&gt;</c>, <c>&lt;ul&gt;</c>, <c>&lt;ol&gt;</c> and
295Besides the <c>&lt;table&gt;</c> element (which we'll cover in just a bit), 312<c>&lt;dl&gt;</c> elements (which we'll cover in just a bit), these are the
296these are the only tags that should appear immediately inside a 313only tags that should appear immediately inside a <c>&lt;body&gt;</c> element.
297<c>&lt;body&gt;</c> element. Another thing -- these tags <e>should not</e> be 314Another thing -- these tags <e>should not</e> be stacked -- in other words,
298stacked -- in other words, don't put a <c>&lt;note&gt;</c> element inside a 315don't put a <c>&lt;note&gt;</c> element inside a <c>&lt;p&gt;</c> element. As
299<c>&lt;p&gt;</c> element. As you might guess, the <c>&lt;pre&gt;</c> element 316you might guess, the <c>&lt;pre&gt;</c> element preserves its whitespace
300preserves its whitespace exactly, making it well-suited for code excerpts. 317exactly, making it well-suited for code excerpts. You must name the
301You can also name the <c>&lt;pre&gt;</c> tag: 318<c>&lt;pre&gt;</c> tag with a <c>caption</c> attribute:
302</p> 319</p>
303 320
304<pre caption = "Named &lt;pre&gt;"> 321<pre caption="Named &lt;pre&gt;">
305&lt;pre caption = "Output of uptime"&gt; 322&lt;pre caption="Output of uptime"&gt;
306# &lt;i&gt;uptime&lt;/i&gt; 323# &lt;i&gt;uptime&lt;/i&gt;
30716:50:47 up 164 days, 2:06, 5 users, load average: 0.23, 0.20, 0.25 32416:50:47 up 164 days, 2:06, 5 users, load average: 0.23, 0.20, 0.25
308&lt;/pre&gt; 325&lt;/pre&gt;
309</pre> 326</pre>
310 327
311</body> 328</body>
312</section> 329</section>
313<section> 330<section>
314<title>&lt;path&gt;, &lt;c&gt; and &lt;e&gt;</title> 331<title>Epigraphs</title>
332<body>
333
334<p by="Anonymous student">
335Delegates from the original 13 states formed the Contented Congress. Thomas
336Jefferson, a Virgin, and Benjamin Franklin were two singers of the Declaration
337of Independence. Franklin discovered electricity by rubbing two cats backwards
338and declared, "A horse divided against itself cannot stand." Franklin died in
3391790 and is still dead.
340</p>
341
342<p>
343Epigraphs are sometimes used at the beginning of chapters to illustrate what is
344to follow. It is simply a paragraph with a <c>by</c> attribute that contains
345the signature.
346</p>
347
348<pre caption="Short epigraph">
349&lt;p by="Anonymous student"&gt;
350Delegates from the original 13 states formed the...
351&lt;/p&gt;
352</pre>
353
315<body> 354</body>
355</section>
356<section>
357<title>
358 &lt;path&gt;, &lt;c&gt;, &lt;b&gt;, &lt;e&gt;, &lt;sub&gt; and &lt;sup&gt;
359</title>
360<body>
316 361
317<p> 362<p>
318The <c>&lt;path&gt;</c>, <c>&lt;c&gt;</c> and <c>&lt;e&gt;</c> elements can 363The <c>&lt;path&gt;</c>, <c>&lt;c&gt;</c>, <c>&lt;b&gt;</c>, <c>&lt;e&gt;</c>,
319be used inside any child <c>&lt;body&gt;</c> tag, except for 364<c>&lt;sub&gt;</c> and <c>&lt;sup&gt;</c> elements can be used inside any child
320<c>&lt;pre&gt;</c>. 365<c>&lt;body&gt;</c> tag, except for <c>&lt;pre&gt;</c>.
321</p> 366</p>
322 367
323<p> 368<p>
324The <c>&lt;path&gt;</c> element is used to mark text that refers to an 369The <c>&lt;path&gt;</c> element is used to mark text that refers to an
325<e>on-disk file</e> -- either an <e>absolute or relative path</e>, or a 370<e>on-disk file</e> -- either an <e>absolute or relative path</e>, or a
326<e>simple filename</e>. This element is generally rendered with a monospaced 371<e>simple filename</e>. This element is generally rendered with a mono spaced
327font to offset it from the standard paragraph type. 372font to offset it from the standard paragraph type.
328</p> 373</p>
329 374
330<p> 375<p>
331The <c>&lt;c&gt;</c> element is used to mark up a <e>command</e> or <e>user 376The <c>&lt;c&gt;</c> element is used to mark up a <e>command</e> or <e>user
341the use of unnecessary double-quotes makes a document more readable -- and 386the use of unnecessary double-quotes makes a document more readable -- and
342adorable! 387adorable!
343</p> 388</p>
344 389
345<p> 390<p>
391As you might have guessed, <c>&lt;b&gt;</c> is used to <b>boldface</b> some
392text.
393</p>
394
395<p>
346<c>&lt;e&gt;</c> is used to apply emphasis to a word or phrase; for example: 396<c>&lt;e&gt;</c> is used to apply emphasis to a word or phrase; for example:
347I <e>really</e> should use semicolons more often. As you can see, this text is 397I <e>really</e> should use semicolons more often. As you can see, this text is
348offset from the regular paragraph type for emphasis. This helps to give your 398offset from the regular paragraph type for emphasis. This helps to give your
349prose more <e>punch</e>! 399prose more <e>punch</e>!
350</p> 400</p>
351 401
402<p>
403The <c>&lt;sub&gt;</c> and <c>&lt;sup&gt;</c> elements are used to specify
404<sub>subscript</sub> and <sup>superscript</sup>.
405</p>
406
407</body>
408</section>
409<section>
410<title>Code samples and colour-coding</title>
411<body>
412
413<p>
414To improve the readability of code samples, the following tags are allowed
415inside <c>&lt;pre&gt;</c> blocks:
416</p>
417
418<dl>
419 <dt><c>&lt;i&gt;</c></dt>
420 <dd>Distinguishes user input from displayed text</dd>
421 <dt><c>&lt;comment&gt;</c></dt>
422 <dd>Comments relevant to the action(s) that appear after the comment</dd>
423 <dt><c>&lt;keyword&gt;</c></dt>
424 <dd>Denotes a keyword in the language used in the code sample
425 </dd>
426 <dt><c>&lt;ident&gt;</c></dt>
427 <dd>Used for an identifier
428 </dd>
429 <dt><c>&lt;const&gt;</c></dt>
430 <dd>Used for a constant
431 </dd>
432 <dt><c>&lt;stmt&gt;</c></dt>
433 <dd>Used for a statement
434 </dd>
435 <dt><c>&lt;var&gt;</c></dt>
436 <dd>Used for a variable
437 </dd>
438</dl>
439
440<note>
441Remember that all leading and trailing spaces, and line breaks in
442<c>&lt;pre&gt;</c> blocks will appear in the displayed html page.
443</note>
444
445<p>
446Sample colour-coded <c>&lt;pre&gt;</c> block:
447</p>
448
449<pre caption="My first ebuild">
450<comment># Copyright 1999-2006 <b>Gentoo Foundation</b>
451# Distributed under the terms of the GNU General Public License v2
452# &#36;Header: $</comment>
453
454<ident>DESCRIPTION</ident>=<const>"Exuberant ctags generates tags files for quick source navigation"</const>
455<ident>HOMEPAGE</ident>=<const>"http://ctags.sourceforge.net"</const>
456<ident>SRC_URI</ident>=<const>"mirror://sourceforge/ctags/<var>${P}</var>.tar.gz"</const>
457
458<ident>LICENSE</ident>=<const>"GPL-2"</const>
459<ident>SLOT</ident>=<const>"0"</const>
460<ident>KEYWORDS</ident>=<const>"~mips ~sparc ~x86"</const>
461<ident>IUSE</ident>=<const>""</const>
462
463<stmt>src_compile()</stmt> {
464 <keyword>econf</keyword> --with-posix-regex || <keyword>die</keyword> <const>"econf failed"</const>
465 <keyword>emake</keyword> || <keyword>die</keyword> <const>"emake failed"</const>
466}
467
468<stmt>src_install()</stmt> {
469 <keyword>make</keyword> <ident>DESTDIR</ident>="<var>${D}</var>" install || <keyword>die</keyword> <const>"install failed"</const>
470
471 <keyword>dodoc</keyword> FAQ NEWS README
472 <keyword>dohtml</keyword> EXTENDING.html ctags.html
473}
474</pre>
475
352</body> 476</body>
353</section> 477</section>
354<section> 478<section>
355<title>&lt;mail&gt; and &lt;uri&gt;</title> 479<title>&lt;mail&gt; and &lt;uri&gt;</title>
356<body> 480<body>
357 481
358<p> 482<p>
359We've taken a look at the <c>&lt;mail&gt;</c> tag earlier; it's used to link 483We've taken a look at the <c>&lt;mail&gt;</c> tag earlier; it's used to link
360some text with a particular email address, and takes the form <c>&lt;mail 484some text with a particular email address, and takes the form <c>&lt;mail
361link="foo@bar.com"&gt;Mr. Foo Bar&lt;/mail&gt;</c>. 485link="foo.bar@example.com"&gt;Mr. Foo Bar&lt;/mail&gt;</c>. If you want to display the
486email address, you can use <c>&lt;mail&gt;foo.bar@example.com&lt;/mail&gt;</c>, this
487would be displayed as <mail>foo.bar@example.com</mail>.
488</p>
489
490<p>
491Shorter forms make it easier to use names and emails of Gentoo developers. Both
492<c>&lt;mail&gt;neysx&lt;/mail&gt;</c> and <c>&lt;mail link="neysx"/&gt;</c>
493would appear as <mail>neysx</mail>. If you want to use a Gentoo dev's email
494with a different content than his full name, use the second form with some
495content. For instance, use a dev's first name: <c>&lt;mail
496link="neysx"&gt;Xavier&lt;/mail&gt;</c> appears as <mail
497link="neysx">Xavier</mail>.
498<br/>
499This is particularly useful when you want to name a developer whose name
500contains "funny" characters that you can't type.
362</p> 501</p>
363 502
364<p> 503<p>
365The <c>&lt;uri&gt;</c> tag is used to point to files/locations on the Internet. 504The <c>&lt;uri&gt;</c> tag is used to point to files/locations on the Internet.
366It has two forms -- the first can be used when you want to have the actual URI 505It has two forms -- the first can be used when you want to have the actual URI
367displayed in the body text, such as this link to 506displayed in the body text, such as this link to
368<uri>http://forums.gentoo.org</uri>. To create this link, I typed 507<uri>http://forums.gentoo.org/</uri>. To create this link, I typed
369<c>&lt;uri&gt;http://forums.gentoo.org&lt;/uri&gt;</c>. The alternate form is 508<c>&lt;uri&gt;http://forums.gentoo.org/&lt;/uri&gt;</c>. The alternate form is
370when you want to associate a URI with some other text -- for example, <uri 509when you want to associate a URI with some other text -- for example, <uri
371link="http://forums.gentoo.org">the Gentoo Forums</uri>. To create <e>this</e> 510link="http://forums.gentoo.org/">the Gentoo Forums</uri>. To create
372link, I typed <c>&lt;uri link="http://forums.gentoo.org"&gt;the Gentoo 511<e>this</e> link, I typed <c>&lt;uri link="http://forums.gentoo.org/"&gt;the
373Forums&lt;/uri&gt;</c>. You don't need to write <c>http://www.gentoo.org/</c> 512Gentoo Forums&lt;/uri&gt;</c>. You don't need to write
374to link to other parts of the Gentoo website. For instance, a link to the <uri 513<c>http://www.gentoo.org/</c> to link to other parts of the Gentoo web site.
375link="/doc/en/">documentation main index</uri> should be simply <c>&lt;uri 514For instance, a link to the <uri link="/doc/en/">documentation main index</uri>
376link="/doc/en/index.xml"&gt;documentation main index&lt;/uri&gt;</c>. You can 515should be simply <c>&lt;uri link="/doc/en/index.xml"&gt;documentation main
377even omit <c>index.xml</c> when you link to a directory index, e.g. <c>&lt;uri 516index&lt;/uri&gt;</c>. You can even omit <c>index.xml</c> when you link to a
378link="/doc/en/"&gt;documentation main index&lt;/uri&gt;</c>. 517directory index, e.g. <c>&lt;uri link="/doc/en/"&gt;documentation main
518index&lt;/uri&gt;</c>. Leaving the trailing slash saves an extra HTTP request.
519</p>
520
521<p>
522You should not use a <c>&lt;uri&gt;</c> tag with a <c>link</c> attribute that
523starts with <c>mailto:</c>. In this case, use a <c>&lt;mail&gt;</c> tag.
524</p>
525
526<p>
527Please avoid the <uri link="http://en.wikipedia.org/wiki/Click_here">click here
528syndrome</uri> as recommended by the <uri
529link="http://www.w3.org/QA/Tips/noClickHere">W3C</uri>.
379</p> 530</p>
380 531
381</body> 532</body>
382</section> 533</section>
383<section> 534<section>
384<title>Figures</title> 535<title>Figures</title>
385
386<body> 536<body>
387 537
388<p> 538<p>
389Here's how to insert a figure into a document -- <c>&lt;figure 539Here's how to insert a figure into a document -- <c>&lt;figure
390link="mygfx.png" short="my picture" caption="my favorite picture of all 540link="mygfx.png" short="my picture" caption="my favorite picture of all
391time"/&gt;</c>. The <c>link=</c> attribute points to the actual graphic image, 541time"/&gt;</c>. The <c>link</c> attribute points to the actual graphic image,
392the <c>short=</c> attribute specifies a short description (currently used for 542the <c>short</c> attribute specifies a short description (currently used for
393the image's HTML <c>alt=</c> attribute), and a caption. Not too difficult 543the image's HTML <c>alt</c> attribute), and a caption. Not too difficult
394:) We also support the standard HTML-style &lt;img src="foo.gif"/&gt; tag 544:) We also support the standard HTML-style &lt;img src="foo.gif"/&gt; tag
395for adding images without captions, borders, etc. 545for adding images without captions, borders, etc.
396</p> 546</p>
397 547
398</body> 548</body>
399</section> 549</section>
400<section> 550<section>
401<title>Tables and lists</title> 551<title>Tables</title>
402<body> 552<body>
403 553
404<p> 554<p>
405Guide supports a simplified table syntax similar to that of HTML. To start 555GuideXML supports a simplified table syntax similar to that of HTML. To start a
406a table, use a <c>&lt;table&gt;</c> tag. Start a row with a <c>&lt;tr&gt;</c> 556table, use a <c>&lt;table&gt;</c> tag. Start a row with a <c>&lt;tr&gt;</c>
407tag. However, for inserting actual table data, we <e>don't</e> support the 557tag. However, for inserting actual table data, we <e>don't</e> support the HTML
408HTML &lt;td&gt; tag; instead, use the <c>&lt;th&gt;</c> if you are inserting a 558&lt;td&gt; tag; instead, use the <c>&lt;th&gt;</c> if you are inserting a
409header, and <c>&lt;ti&gt;</c> if you are inserting a normal informational 559header, and <c>&lt;ti&gt;</c> if you are inserting a normal informational
410block. You can use a <c>&lt;th&gt;</c> anywhere you can use a <c>&lt;ti&gt;</c> 560block. You can use a <c>&lt;th&gt;</c> anywhere you can use a <c>&lt;ti&gt;</c>
411-- there's no requirement that <c>&lt;th&gt;</c> elements appear only in the 561-- there's no requirement that <c>&lt;th&gt;</c> elements appear only in the
412first row. Currently, these tags don't support any attributes, but some will 562first row.
413be added (such as a <c>caption=</c> attribute for <c>&lt;table&gt;</c>) soon.
414</p>
415
416<p> 563</p>
564
565<p>
566Besides, both table headers (<c>&lt;th&gt;</c>) and table items
567(<c>&lt;ti&gt;</c>) accept the <c>colspan</c> and <c>rowspan</c> attributes to
568span their content across rows, columns or both.
569</p>
570
571<p>
572Furthermore, table cells (<c>&lt;ti&gt;</c> &amp; <c>&lt;th&gt;</c>) can be
573right-aligned, left-aligned or centered with the <c>align</c> attribute.
574</p>
575
576<table>
577 <tr>
578 <th align="center" colspan="4">This title spans 4 columns</th>
579 </tr>
580 <tr>
581 <th rowspan="6">This title spans 6 rows</th>
582 <ti>Item A1</ti>
583 <ti>Item A2</ti>
584 <ti>Item A3</ti>
585 </tr>
586 <tr>
587 <ti align="center">Item B1</ti>
588 <th colspan="2" rowspan="2" align="right">Blocky 2x2 title</th>
589 </tr>
590 <tr>
591 <ti align="right">Item C1</ti>
592 </tr>
593 <tr>
594 <ti colspan="3" align="center">Item D1..D3</ti>
595 </tr>
596 <tr>
597 <ti rowspan="2">Item E1..F1</ti>
598 <ti colspan="2" align="right">Item E2..E3</ti>
599 </tr>
600 <tr>
601 <ti colspan="2" align="right">Item F2..F3</ti>
602 </tr>
603</table>
604
605</body>
606</section>
607<section>
608<title>Lists</title>
609<body>
610
611<p>
417To create ordered or unordered lists, simply use the HTML-style 612To create ordered or unordered lists, simply use the XHTML-style
418<c>&lt;ol&gt;</c>, <c>&lt;ul&gt;</c> and <c>&lt;li&gt;</c> tags. List tags 613<c>&lt;ol&gt;</c>, <c>&lt;ul&gt;</c> and <c>&lt;li&gt;</c> tags. Lists may only
419should only appear inside a <c>&lt;body&gt;</c>, <c>&lt;ul&gt;</c> or 614appear inside the <c>&lt;body&gt;</c> and <c>&lt;li&gt;</c> tags which means
420<c>&lt;ol&gt;</c> tag. 615that you can have lists inside lists. Don't forget that you are writing XML and
616that you must close all tags including list items unlike in HTML.
617</p>
618
421</p> 619<p>
620Definition lists (<c>&lt;dl&gt;</c>) are also supported. Please note that
621neither the definition term tag (<c>&lt;dt&gt;</c>) nor the definition data tag
622(<c>&lt;dd&gt;</c>) accept any other block level tag such as paragraphs or
623admonitions. A definition list comprises:
624</p>
625
626<dl>
627 <dt><c>&lt;dl&gt;</c></dt>
628 <dd>A <b>D</b>efinition <b>L</b>ist Tag containing</dd>
629 <dt><c>&lt;dt&gt;</c></dt>
630 <dd>Pairs of <b>D</b>efinition <b>T</b>erm Tags</dd>
631 <dt><c>&lt;dd&gt;</c></dt>
632 <dd>and <b>D</b>efinition <b>D</b>ata Tags</dd>
633</dl>
634
635<p>
636The following list copied from <uri
637link="http://www.w3.org/TR/REC-html40/struct/lists.html">w3.org</uri> shows
638that a definition list can contain ordered and unordered lists. It may not
639contain another definition list though.
640</p>
641
642<dl>
643 <dt><b>The ingredients:</b></dt>
644 <dd>
645 <ul>
646 <li>100 g. flour</li>
647 <li>10 g. sugar</li>
648 <li>1 cup water</li>
649 <li>2 eggs</li>
650 <li>salt, pepper</li>
651 </ul>
652 </dd>
653 <dt><b>The procedure:</b></dt>
654 <dd>
655 <ol>
656 <li>Mix dry ingredients thoroughly</li>
657 <li>Pour in wet ingredients</li>
658 <li>Mix for 10 minutes</li>
659 <li>Bake for one hour at 300 degrees</li>
660 </ol>
661 </dd>
662 <dt><b>Notes:</b></dt>
663 <dd>The recipe may be improved by adding raisins</dd>
664</dl>
422 665
423</body> 666</body>
424</section> 667</section>
425<section> 668<section>
426<title>Intra-document references</title> 669<title>Intra-document references</title>
427<body> 670<body>
428 671
429<p> 672<p>
430Guide makes it really easy to reference other parts of the document using 673GuideXML makes it really easy to reference other parts of the document using
431hyperlinks. You can create a link pointing to <uri link="#doc_chap1">Chapter 674hyperlinks. You can create a link pointing to <uri link="#doc_chap1">Chapter
432One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter 675One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter
433One&lt;/uri&gt;</c>. To point to <uri link="#doc_chap1_sect2">section two of 676One&lt;/uri&gt;</c>. To point to <uri link="#doc_chap1_sect2">section two of
434Chapter One</uri>, type <c>&lt;uri link="#doc_chap1_sect2"&gt;section two of 677Chapter One</uri>, type <c>&lt;uri link="#doc_chap1_sect2"&gt;section two of
435Chapter One&lt;/uri&gt;</c>. To refer to figure 3 in chapter 1, type <c>&lt;uri 678Chapter One&lt;/uri&gt;</c>. To refer to figure 3 in chapter 1, type
436link="doc_chap1_fig3"&gt;figure 1.3&lt;/uri&gt;</c>. Or, to refer to <uri 679<c>&lt;uri link="#doc_chap1_fig3"&gt;figure 1.3&lt;/uri&gt;</c>. Or, to refer
437link="#doc_chap2_pre2">code listing 2 in chapter 2</uri>, type <c>&lt;uri 680to <uri link="#doc_chap2_pre2">code listing 2 in chapter 2</uri>, type
438link="doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>. We'll be 681<c>&lt;uri link="#doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>.
439adding other auto-link abilities (such as table support) soon.
440</p> 682</p>
441 683
442<p> 684<p>
443However, some guides change often and using such "counting" can lead to broken 685However, some guides change often and using such "counting" can lead to broken
444links. In order to cope with this, you can define a name for a 686links. In order to cope with this, you can define a name for a
445<c>&lt;chapter&gt;</c> or <c>&lt;section&gt;</c> by using the <c>id</c> 687<c>&lt;chapter&gt;</c>, <c>&lt;section&gt;</c> or a <c>&lt;tr&gt;</c> by using
446attribute, and then point to that attribute, like this: 688the <c>id</c> attribute, and then point to that attribute, like this:
447</p> 689</p>
448 690
449<pre caption="Using the id attribute"> 691<pre caption="Using the id attribute">
450&lt;chapter id="foo"&gt; 692&lt;chapter id="foo"&gt;
451&lt;title&gt;This is foo!&lt;/title&gt; 693&lt;title&gt;This is foo!&lt;/title&gt;
455&lt;/p&gt; 697&lt;/p&gt;
456</pre> 698</pre>
457 699
458</body> 700</body>
459</section> 701</section>
702<section>
703<title>Disclaimers and obsolete documents</title>
704<body>
705
706<p>
707A <c>disclaimer</c> attribute can be applied to guides and handbooks to display
708a predefined disclaimer at the top of the document. The available disclaimers
709are:
710</p>
711
712<ul>
713 <li>
714 <b>articles</b> is used for <uri link="/doc/en/articles/">republished
715 articles</uri>
716 </li>
717 <li>
718 <b>draft</b> is used to indicate a document is still being worked on and
719 should not be considered official
720 </li>
721 <li>
722 <b>oldbook</b> is used on old handbooks to indicate they are not maintained
723 anymore
724 </li>
725 <li><b>obsolete</b> is used to mark a document as obsolete.</li>
726</ul>
727
728<p>
729When marking a document as obsolete, you might want to add a link to a new
730version. The <c>redirect</c> attribute does just that. The user might be
731automatically redirected to the new page but you should not rely on that
732behaviour.
733</p>
734
735<pre caption="Disclaimer sample">
736&lt;?xml version="1.0" encoding="UTF-8"?&gt;
737&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt;
738&lt;!-- &#36;Header&#36; --&gt;
739
740&lt;guide disclaimer="obsolete" redirect="/doc/en/handbook/handbook-x86.xml"&gt;
741&lt;title>Gentoo x86 Installation Guide&lt;/title&gt;
742
743&lt;author title="Author"&gt;
744...
745</pre>
746
747</body>
748</section>
749<section>
750<title>FAQs</title>
751<body>
752
753<p>
754FAQ documents need to start with a list of questions with links to their
755answers. Creating such a list is both time-consuming and error-prone. The list
756can be created automatically if you use a <c>faqindex</c> element as the first
757chapter of your document. This element has the same structure as a
758<c>chapter</c> to allow some introductory text. The structure of the document
759is expected to be split into chapters (at least one chapter) containing
760sections, each section containing one question specified in its <c>title</c>
761element with the answer in its <c>body</c>. The FAQ index will appear as one
762section per chapter and one link per question.
763</p>
764
765<p>
766A quick look at a <uri link="/doc/en/faq.xml">FAQ</uri> and <uri
767link="/doc/en/faq.xml?passthru=1">its source</uri> should make the above
768obvious.
769</p>
770
771</body>
772</section>
460</chapter> 773</chapter>
461 774
462<chapter> 775<chapter>
776<title>Handbook Format</title>
777<section>
778<title>Guide vs Book</title>
779<body>
780
781<p>
782For high-volume documentation, such as the <uri
783link="/doc/en/handbook/handbook-x86.xml?part=1">Installation Instructions</uri>, a
784broader format was needed. We designed a GuideXML-compatible enhancement that
785allows us to write modular and multi-page documentation.
786</p>
787
788</body>
789</section>
790<section>
791<title>Main File</title>
792<body>
793
794<p>
795The first change is the need for a "master" document. This document contains no
796real content, but links to the individual documentation modules. The syntax
797doesn't differ much from GuideXML:
798</p>
799
800<pre caption="Example book usage">
801&lt;?xml version='1.0' encoding='UTF-8'?&gt;
802&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
803&lt;!-- &#36;Header&#36; --&gt;
804
805&lt;<i>book</i>&gt;
806&lt;title&gt;Example Book Usage&lt;/title&gt;
807
808&lt;author...&gt;
809 ...
810&lt;/author&gt;
811
812&lt;abstract&gt;
813 ...
814&lt;/abstract&gt;
815
816&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
817&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
818&lt;license/&gt;
819
820&lt;version&gt;...&lt;/version&gt;
821&lt;date&gt;...&lt;/date&gt;
822</pre>
823
824<p>
825So far no real differences (except for the <c>&lt;book&gt;</c> instead of
826<c>&lt;guide&gt;</c> tag). Instead of starting with the individual
827<c>&lt;chapter&gt;</c>s, you define a <c>&lt;part&gt;</c>, which is the
828equivalent of a separate part in a book:
829</p>
830
831<pre caption="Defining a part">
832&lt;part&gt;
833&lt;title&gt;Part One&lt;/title&gt;
834&lt;abstract&gt;
835 ...
836&lt;/abstract&gt;
837
838<comment>(Defining the several chapters)</comment>
839&lt;/part&gt;
840</pre>
841
842<p>
843Each part is accompanied by a <c>&lt;title&gt;</c> and an
844<c>&lt;abstract&gt;</c> which gives a small introduction to the part.
845</p>
846
847<p>
848Inside each part, you define the individual <c>&lt;chapter&gt;</c>s. Each
849chapter <e>must</e> be a separate document. As a result it is no surprise that
850a special tag (<c>&lt;include&gt;</c>) is added to allow including the separate
851document.
852</p>
853
854<pre caption="Defining a chapter">
855&lt;chapter&gt;
856&lt;title&gt;Chapter One&lt;/title&gt;
857
858 &lt;include href="path/to/chapter-one.xml"/&gt;
859
860&lt;/chapter&gt;
861</pre>
862
863</body>
864</section>
865<section>
866<title>Designing the Individual Chapters</title>
867<body>
868
869<p>
870The content of an individual chapter is structured as follows:
871</p>
872
873<pre caption="Chapter Syntax">
874&lt;?xml version='1.0' encoding='UTF-8'?&gt;
875&lt;!DOCTYPE sections SYSTEM "/dtd/book.dtd"&gt;
876&lt;!-- &#36;Header&#36; --&gt;
877
878&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
879&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
880
881&lt;sections&gt;
882
883&lt;abstract&gt;
884 This is a small explanation on chapter one.
885&lt;/abstract&gt;
886
887&lt;version&gt;...&lt;/version&gt;
888&lt;date&gt;...&lt;/date&gt;
889
890<comment>(Define the several &lt;section&gt; and &lt;subsection&gt;)</comment>
891
892&lt;/sections&gt;
893</pre>
894
895<p>
896Inside each chapter you can define <c>&lt;section&gt;</c>s (equivalent of
897<c>&lt;chapter&gt;</c> in a Guide) and <c>&lt;subsection&gt;</c>s (equivalent
898of <c>&lt;section&gt;</c> in a Guide).
899</p>
900
901<p>
902Each individual chapter should have its own date and version elements. The
903latest date of all chapters and master document will be displayed when a user
904browses through all parts of the book.
905</p>
906
907</body>
908</section>
909</chapter>
910
911<chapter>
912<title>Advanced Handbook Features</title>
913<section>
914<title>Global Values</title>
915<body>
916
917<p>
918Sometimes, the same values are repeated many times in several parts of a
919handbook. Global search and replace operations tend to forget some or introduce
920unwanted changes. Besides, it can be useful to define different values to be
921used in shared chapters depending on which handbook includes the chapter.
922</p>
923
924<p>
925Global values can be defined in a handbook master file and used in all included
926chapters.
927</p>
928
929<p>
930To define global values, add a <c>&lt;values&gt;</c> element to the handbook
931master file. Each value is then defined in a <c>&lt;key&gt;</c> element whose
932<c>id</c> attribute identifies the value, i.e. it is the name of your variable.
933The content of the <c>&lt;key&gt;</c> is its value.
934</p>
935
936<p>
937The following example defines three values in a handbook master file:
938</p>
939
940<pre caption="Define values in a handbook">
941&lt;?xml version='1.0' encoding='UTF-8'?&gt;
942&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
943&lt;!-- &#36;Header&#36; --&gt;
944
945&lt;book&gt;
946&lt;title&gt;Example Book Usage&lt;/title&gt;
947
948<i>&lt;values>
949 &lt;key id="arch"&gt;x86&lt;/key&gt;
950 &lt;key id="min-cd-name"&gt;install-x86-minimal-2007.0-r1.iso&lt;/key&gt;
951 &lt;key id="min-cd-size"&gt;57&lt;/key&gt;
952&lt;/values&gt;</i>
953
954&lt;author...&gt;
955 ...
956&lt;/author&gt;
957
958...
959</pre>
960
961<p>
962The defined values can then be used throughout the handbook with the in-line
963<c>&lt;keyval id="key_id"/&gt;</c> element. Specify the name of the key in its
964<c>id</c> attribute, e.g. &lt;keyval id="min-cd-name"/&gt; would be replaced by
965"install-x86-minimal-2007.0-r1.iso" in our example.
966</p>
967
968<pre caption="Using defined values">
969&lt;p&gt;
970The Minimal Installation CD is called &lt;c&gt;<i>&lt;keyval id="min-cd-name"/&gt;</i>&lt;/c&gt;
971and takes up only <i>&lt;keyval id="min-cd-size"/&gt;</i> MB of diskspace. You can use this
972Installation CD to install Gentoo, but &lt;e&gt;only&lt;/e&gt; with a working Internet
973connection.
974&lt;/p&gt;
975</pre>
976
977<p>
978To make life easier on our translators, only use actual values, i.e. content
979that does not need to be translated. For instance, we defined the
980<c>min-cd-size</c> value to <c>57</c> and not <c>57 MB</c>.
981</p>
982
983</body>
984</section>
985<section>
986<title>Conditional Elements</title>
987<body>
988
989<p>
990Chapters that are shared by several handbooks such as our <uri
991link="/doc/en/handbook/">Installation Handbooks</uri> often have small
992differences depending on which handbook includes them. Instead of adding
993content that is irrelevant to some handbooks, authors can add a condition to
994the following elements: <c>&lt;section&gt;</c>, <c>&lt;subsection&gt;</c>,
995<c>&lt;body&gt;</c>, <c>&lt;note&gt;</c>, <c>&lt;impo&gt;</c>,
996<c>&lt;warn&gt;</c>, <c>&lt;pre&gt;</c>, <c>&lt;p&gt;</c>,
997<c>&lt;table&gt;</c>, <c>&lt;tr&gt;</c>, <c>&lt;ul&gt;</c>, <c>&lt;ol&gt;</c>
998and <c>&lt;li&gt;</c>.
999</p>
1000
1001<p>
1002The condition must be an <uri
1003link="http://en.wikipedia.org/wiki/XPath">XPATH</uri> expression that will be
1004evaluated when transforming the XML. If it evaluates to <c>true</c>, the
1005element is processed, if not, it is ignored. The condition is specified in a
1006<c>test</c> attribute.
1007</p>
1008
1009<p>
1010The following example uses the <c>arch</c> value that is defined in each
1011handbook master file to condition some content:
1012</p>
1013
1014<pre caption="Using conditional elements">
1015&lt;body test="contains('AMD64 x86',func:keyval('arch'))"&gt;
1016
1017&lt;p&gt;
1018This paragraph applies to both x86 and AMD64 architectures.
1019&lt;/p&gt;
1020
1021&lt;p test="func:keyval('arch')='x86'"&gt;
1022This paragraph only applies to the x86 architecture.
1023&lt;/p&gt;
1024
1025&lt;p test="func:keyval('arch')='AMD64'"&gt;
1026This paragraph only applies to the AMD64 architecture.
1027&lt;/p&gt;
1028
1029&lt;p test="func:keyval('arch')='PPC'"&gt;
1030This paragraph will never be seen!
1031The whole body is skipped because of the first condition.
1032&lt;/p&gt;
1033
1034&lt;/body&gt;
1035
1036&lt;body test="contains('AMD64 PPC64',func:keyval('arch'))"&gt;
1037
1038&lt;p&gt;
1039This paragraph applies to the AMD64, PPC64 <comment>and PPC</comment> architectures because
1040the 'AMD64 PPC64' string does contain 'PPC'.
1041&lt;/p&gt;
1042
1043&lt;note test="func:keyval('arch')='AMD64' or func:keyval('arch')='PPC64'"&gt;
1044This note only applies to the AMD64 and PPC64 architectures.
1045&lt;/note&gt;
1046
1047&lt;/body&gt;
1048</pre>
1049
1050</body>
1051</section>
1052</chapter>
1053
1054<chapter id="codingstyle">
463<title>Coding Style</title> 1055<title>Coding Style</title>
464<section> 1056<section>
465<title>Introduction</title> 1057<title>Introduction</title>
466<body> 1058<body>
467 1059
468<p> 1060<p>
469Since all Gentoo Documentation is a joint effort and several people will 1061Since all Gentoo Documentation is a joint effort and several people will
470most likely change existing documentation, a coding style is needed. 1062most likely change existing documentation, a coding style is needed.
471A coding style contains two sections. The first one is regarding 1063A coding style contains two sections. The first one is regarding
472internal coding - how the xml-tags are placed. The second one is 1064internal coding - how the XML-tags are placed. The second one is
473regarding the content - how not to confuse the reader. 1065regarding the content - how not to confuse the reader.
474</p> 1066</p>
475 1067
476<p> 1068<p>
477Both sections are described next. 1069Both sections are described next.
487<b>Newlines</b> must be placed immediately after <e>every</e> 1079<b>Newlines</b> must be placed immediately after <e>every</e>
488GuideXML-tag (both opening as closing), except for: 1080GuideXML-tag (both opening as closing), except for:
489<c>&lt;version&gt;</c>, <c>&lt;date&gt;</c>, <c>&lt;title&gt;</c>, 1081<c>&lt;version&gt;</c>, <c>&lt;date&gt;</c>, <c>&lt;title&gt;</c>,
490<c>&lt;th&gt;</c>, <c>&lt;ti&gt;</c>, 1082<c>&lt;th&gt;</c>, <c>&lt;ti&gt;</c>,
491<c>&lt;li&gt;</c>, <c>&lt;i&gt;</c>, <c>&lt;e&gt;</c>, 1083<c>&lt;li&gt;</c>, <c>&lt;i&gt;</c>, <c>&lt;e&gt;</c>,
492<c>&lt;uri&gt;</c>, <c>&lt;path&gt;</c>, <c>&lt;b&gt;</c>, 1084<c>&lt;uri&gt;</c>, <c>&lt;path&gt;</c>, <c>&lt;b&gt;</c>, <c>&lt;c&gt;</c>,
493<c>&lt;comment&gt;</c>, <c>&lt;codenote&gt;</c>, <c>&lt;mail&gt;</c>. 1085<c>&lt;comment&gt;</c>, <c>&lt;mail&gt;</c>.
494</p> 1086</p>
495 1087
496<p> 1088<p>
497<b>Blank lines</b> must be placed immediately after <e>every</e> 1089<b>Blank lines</b> must be placed immediately after <e>every</e>
498<c>&lt;body&gt;</c> (opening tag only) and before <e>every</e> 1090<c>&lt;body&gt;</c> (opening tag only) and before <e>every</e>
502<c>&lt;impo&gt;</c> (opening tags only). 1094<c>&lt;impo&gt;</c> (opening tags only).
503</p> 1095</p>
504 1096
505<p> 1097<p>
506<b>Word-wrapping</b> must be applied at 80 characters except inside 1098<b>Word-wrapping</b> must be applied at 80 characters except inside
507<c>&lt;pre&gt;</c>. Only when there is no other choice can be deviated from 1099<c>&lt;pre&gt;</c>. You may only deviate from this rule when there is no other
508this rule (for instance when a URL exceeds the maximum amount of characters). 1100choice (for instance when a URL exceeds the maximum amount of characters). The
509The editor must then wrap whenever the first whitespace occurs. 1101editor must then wrap whenever the first whitespace occurs. You should try to
510</p> 1102keep the <e>rendered</e> content of <c>&lt;pre&gt;</c> elements within 80
511 1103columns to help console users.
512<p> 1104</p>
1105
1106<p>
513<b>Indentation</b> may not be used, except with the XML-constructs of which 1107<b>Indentation</b> may not be used, except with the XML-constructs of which the
514the parent XML-tags are <c>&lt;tr&gt;</c> (from <c>&lt;table&gt;</c>), 1108parent XML-tags are <c>&lt;tr&gt;</c> (from <c>&lt;table&gt;</c>),
515<c>&lt;ul&gt;</c>, <c>&lt;ol&gt;</c> and <c>&lt;author&gt;</c>. If indentation 1109<c>&lt;ul&gt;</c>, <c>&lt;ol&gt;</c>, <c>&lt;dl&gt;</c>, and
516is used, it <e>must</e> be two spaces for each indentation. That means <e>no</e> 1110<c>&lt;author&gt;</c>. If indentation is used, it <e>must</e> be two spaces for
517tabs and <e>not</e> more spaces. 1111each indentation. That means <e>no tabs</e> and <e>not</e> more spaces.
518</p> 1112Besides, tabs are not allowed in GuideXML documents.
519
520<p> 1113</p>
1114
1115<p>
521In case word-wrapping happens in <c>&lt;ti&gt;</c>, <c>&lt;th&gt;</c> or 1116In case word-wrapping happens in <c>&lt;ti&gt;</c>, <c>&lt;th&gt;</c>,
522<c>&lt;li&gt;</c> constructs, indentation must be used for the content. 1117<c>&lt;li&gt;</c> or <c>&lt;dd&gt;</c> constructs, indentation must be used for
1118the content.
523</p> 1119</p>
524 1120
525<p> 1121<p>
526An example for indentation is: 1122An example for indentation is:
527</p> 1123</p>
528 1124
529<pre caption = "Indentation Example"> 1125<pre caption="Indentation Example">
530&lt;table&gt; 1126&lt;table&gt;
531&lt;tr&gt; 1127&lt;tr&gt;
532 &lt;th&gt;Foo&lt;/th&gt; 1128 &lt;th&gt;Foo&lt;/th&gt;
533 &lt;th&gt;Bar&lt;/th&gt; 1129 &lt;th&gt;Bar&lt;/th&gt;
534&lt;/tr&gt; 1130&lt;/tr&gt;
535&lt;tr&gt; 1131&lt;tr&gt;
536 &lt;ti&gt;This is an example for indentation.&lt;/ti&gt; 1132 &lt;ti&gt;This is an example for indentation&lt;/ti&gt;
537 &lt;ti&gt; 1133 &lt;ti&gt;
538 In case text cannot be shown within an 80-character wide line, you 1134 In case text cannot be shown within an 80-character wide line, you
539 must use indentation if the parent tag allows it. 1135 must use indentation if the parent tag allows it
540 &lt;/ti&gt; 1136 &lt;/ti&gt;
541&lt;/tr&gt; 1137&lt;/tr&gt;
542&lt;/table&gt; 1138&lt;/table&gt;
543 1139
544&lt;ul&gt; 1140&lt;ul&gt;
546 &lt;li&gt;Second option&lt;/li&gt; 1142 &lt;li&gt;Second option&lt;/li&gt;
547&lt;/ul&gt; 1143&lt;/ul&gt;
548</pre> 1144</pre>
549 1145
550<p> 1146<p>
551<b>Attributes</b> may not have spaces in between the attribute, the 1147<b>Attributes</b> may not have spaces in between the attribute, the "=" mark,
552&quot;=&quot; mark, and the attribute value. As an example: 1148and the attribute value. As an example:
553</p> 1149</p>
554 1150
555<pre caption="Attributes"> 1151<pre caption="Attributes">
556<comment>Wrong :</comment> &lt;pre caption = "Attributes"&gt; 1152<comment>Wrong :</comment> &lt;pre caption = "Attributes"&gt;
557<comment>Correct:</comment> &lt;pre caption="Attributes"&gt; 1153<comment>Correct:</comment> &lt;pre caption="Attributes"&gt;
562<section> 1158<section>
563<title>External Coding Style</title> 1159<title>External Coding Style</title>
564<body> 1160<body>
565 1161
566<p> 1162<p>
567Inside tables (<c>&lt;table&gt;</c>) and listings (<c>&lt;ul&gt;</c> and 1163Inside tables (<c>&lt;table&gt;</c>) and listings (<c>&lt;ul&gt;</c>,
568<c>&lt;ol&gt;</c>), periods (&quot;.&quot;) should not be used unless multiple 1164<c>&lt;ol&gt;</c>) and <c>&lt;dl&gt;</c>, periods (".") should not be used
569sentences are used. In that case, every sentence should end with a period (or 1165unless multiple sentences are used. In that case, every sentence should end
570other reading marks). 1166with a period (or other reading marks).
571</p> 1167</p>
572 1168
573<p> 1169<p>
574Every sentence, including those inside tables and listings, should start 1170Every sentence, including those inside tables and listings, should start
575with a capital letter. 1171with a capital letter.
591possible. In other words, the <uri link="http://forums.gentoo.org">Gentoo 1187possible. In other words, the <uri link="http://forums.gentoo.org">Gentoo
592Forums</uri> is preferred over <uri>http://forums.gentoo.org</uri>. 1188Forums</uri> is preferred over <uri>http://forums.gentoo.org</uri>.
593</p> 1189</p>
594 1190
595<p> 1191<p>
596When you comment something inside a <c>&lt;pre&gt;</c> construct, only use 1192When you comment something inside a <c>&lt;pre&gt;</c> construct, use
597<c>&lt;codenote&gt;</c> if the content is a C or C++ code snippet. Otherwise, 1193<c>&lt;comment&gt;</c> and parentheses or the comment marker for the language
598use <c>&lt;comment&gt;</c> and parentheses. Also place the comment <e>before</e> 1194that is being used (<c>#</c> for bash scripts and many other things, <c>//</c>
599the subject of the comment. 1195for C code, etc.) Also place the comment <e>before</e> the subject of the
1196comment.
600</p> 1197</p>
601 1198
602<pre caption="Comment example"> 1199<pre caption="Comment example">
603<comment>(Substitute "john" with your user name)</comment> 1200<comment>(Substitute "john" with your user name)</comment>
604# <i>id john</i> 1201# <i>id john</i>
607</body> 1204</body>
608</section> 1205</section>
609</chapter> 1206</chapter>
610 1207
611<chapter> 1208<chapter>
612<title>Handbook Format</title>
613<section>
614<title>Guide vs Book</title>
615<body>
616
617<p>
618For high-volume documentation, such as the <uri
619link="/doc/en/handbook/handbook-x86.xml?part=1">Installation Instructions</uri>, a
620broader format was needed. We designed a GuideXML-compatible enhancement that
621allows us to write modular and multi-page documentation.
622</p>
623
624</body>
625</section>
626<section>
627<title>Main File</title>
628<body>
629
630<p>
631The first change is the need for a "master" document. This document contains no
632real content, but links to the individual documentation modules. The syntaxis
633doesn't differ much from GuideXML:
634</p>
635
636<pre caption="Example book usage">
637&lt;?xml version='1.0' encoding='UTF-8'?&gt;
638&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
639
640&lt;<i>book</i> link="example.xml"&gt;
641&lt;title&gt;Example Book Usage&lt;/title&gt;
642
643&lt;author...&gt;
644 ...
645&lt;/author&gt;
646
647&lt;abstract&gt;
648 ...
649&lt;/abstract&gt;
650
651&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
652&lt;!-- See http://creativecommons.org/licenses/by-sa/2.0 --&gt;
653&lt;license/&gt;
654
655&lt;version&gt;...&lt;/version&gt;
656&lt;date&gt;...&lt;/date&gt;
657</pre>
658
659<p>
660So far no real differences (except for the <c>&lt;book&gt;</c> instead of
661<c>&lt;guide&gt;</c> tag). Instead of starting with the individual
662<c>&lt;chapter&gt;</c>'s, you define a <c>&lt;part&gt;</c>, which is the
663equivalent of a separate part in a book:
664</p>
665
666<pre caption="Defining a part">
667&lt;part&gt;
668&lt;title&gt;Part One&lt;/title&gt;
669&lt;abstract&gt;
670 ...
671&lt;/abstract&gt;
672
673<comment>(Defining the several chapters)</comment>
674&lt;/part&gt;
675</pre>
676
677<p>
678Each part is accompanied by a <c>&lt;title&gt;</c> and an
679<c>&lt;abstract&gt;</c> which gives a small introduction to the part.
680</p>
681
682<p>
683Inside each part, you define the individual <c>&lt;chapter&gt;</c>'s. Each
684chapter <e>must</e> be a separate document. As a result it is no surprise that a
685special tag (<c>&lt;include&gt;</c>) is added to allow including the separate
686document.
687</p>
688
689<pre caption="Defining a chapter">
690&lt;chapter&gt;
691&lt;title&gt;Chapter One&lt;/title&gt;
692&lt;abstract&gt;
693 This is a small explanation on chapter one.
694&lt;/abstract&gt;
695
696 &lt;include href="path/to/chapter-one.xml"/&gt;
697
698&lt;/chapter&gt;
699</pre>
700
701</body>
702</section>
703<section>
704<title>Designing the Individual Chapters</title>
705<body>
706
707<p>
708The content of an individual chapter is structured as follows:
709</p>
710
711<pre caption="Chapter Syntax">
712&lt;?xml version='1.0' encoding='UTF-8'?&gt;
713&lt;!DOCTYPE sections SYSTEM "/dtd/book.dtd"&gt;
714
715&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
716&lt;!-- See http://creativecommons.org/licenses/by-sa/2.0 --&gt;
717
718&lt;sections&gt;
719
720&lt;version&gt;...&lt;/version&gt;
721&lt;date&gt;...&lt;/date&gt;
722
723<comment>(Define the several &lt;section&gt; and &lt;subsection&gt;)</comment>
724
725&lt;/sections&gt;
726</pre>
727
728<p>
729Inside each chapter you can define <c>&lt;section&gt;</c>'s (equivalent of
730<c>&lt;chapter&gt;</c> in a Guide) and <c>&lt;subsection&gt;</c>'s (equivalent
731of <c>&lt;section&gt;</c> in a Guide).
732</p>
733
734<p>
735Each individual chapter should have its own date and version elements. The
736latest date of all chapters and master document will be displayed when a user
737browses through all parts of the book.
738</p>
739
740</body>
741</section>
742</chapter>
743
744<chapter>
745<title>Resources</title> 1209<title>Resources</title>
746<section> 1210<section>
747<title>Start writing</title> 1211<title>Start writing</title>
748<body> 1212<body>
749 1213
750<p> 1214<p>
751Guide has been specially designed to be "lean and mean" so that developers can 1215GuideXML has been specially designed to be "lean and mean" so that developers
752spend more time writing documentation and less time learning the actual XML 1216can spend more time writing documentation and less time learning the actual XML
753syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy" 1217syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy"
754to start writing quality Gentoo Linux documentation. You might be interested 1218to start writing quality Gentoo documentation. You might be interested in our
755in our <uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation 1219<uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation Development Tips
756Development Tips &amp; Tricks</uri>. If you'd like to help (or have any 1220&amp; Tricks</uri>. If you'd like to help (or have any questions about
757questions about guide), please post a message to the <mail 1221GuideXML), please post a message to the <uri
758link="gentoo-doc@gentoo.org">gentoo-doc mailing list</mail> stating what you'd 1222link="/main/en/lists.xml">gentoo-doc mailing list</uri> stating what you'd like
759like to tackle. Have fun! 1223to tackle. Have fun!
760</p> 1224</p>
761 1225
762</body> 1226</body>
763</section> 1227</section>
764</chapter> 1228</chapter>

Legend:
Removed from v.1.36  
changed lines
  Added in v.1.68

  ViewVC Help
Powered by ViewVC 1.1.20