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

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.71

  ViewVC Help
Powered by ViewVC 1.1.20