/[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.53 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.53 2005/10/13 20:33:40 neysx 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 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 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
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.5 --> 32<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
33<license/> 33<license/>
34 34
35<version>2.28</version> 35<version>9</version>
36<date>2005-10-13</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>
75</body> 75</body>
76</section> 76</section>
77</chapter> 77</chapter>
78 78
79<chapter> 79<chapter>
80<title>Guide XML</title> 80<title>GuideXML</title>
81<section> 81<section>
82<title>Basic structure</title> 82<title>Basic structure</title>
83<body> 83<body>
84 84
85<p> 85<p>
117<p> 117<p>
118On the first lines, 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
119document and specifies its DTD. The <c>&lt;!-- &#36;Header&#36; --&gt;</c> line 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. 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 121Next, there's a <c>&lt;guide&gt;</c> tag -- the entire guide document is
122enclosed within a <c>&lt;guide&gt; &lt;/guide&gt;</c> pair. The <c>link</c> 122enclosed within a <c>&lt;guide&gt; &lt;/guide&gt;</c> pair.
123attribute is compulsory and should preferably contain the absolute path to the 123<br/>
124document relatively to the document root even though the file name alone will 124The <c>link</c> attribute is optional and should preferably contain the
125work. It is mainly used to generate a link to a printer-friendly version of 125absolute path to the document relatively to the document root even though the
126your document. If you use a wrong value, the link to the printable version will 126file name alone will work. It is only used to generate a link to a
127either not work or point to a wrong document. Translated documents <e>must</e> 127printer-friendly version of your document and check whether a translation is
128specify the full path because it is also used to check whether a more recent 128up-to-date. Our XSL back-engine passes the actual path to our XSL stylesheet.
129original document exists. The <c>lang</c> attribute should be used to specify 129The link attribute is only used as a fall-back value in case the XML is
130the language code of your document. It is used to format the date and insert 130processed by other means.
131strings like "<e>Note</e>", "<e>Content</e>", etc. in the specified language. 131<br/>
132The default is English. 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.
133</p> 135</p>
134 136
135<p> 137<p>
136Next, 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
137guide document. 139guide document.
142about 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
143allows 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
144relationship to the document (author, co-author, editor, etc.). In this 146relationship to the document (author, co-author, editor, etc.). In this
145particular example, the authors' names are enclosed in another tag -- a 147particular example, the authors' names are enclosed in another tag -- a
146<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
147person. 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
148more 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.
149</p> 151</p>
150 152
151<p> 153<p>
152Next, 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
153<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
155respectively. 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
156appear verbatim in the rendered document. 158appear verbatim in the rendered document.
157</p> 159</p>
158 160
159<p> 161<p>
160This 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.
161document. 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
162tags shouldn't appear anywhere else except immediately inside the 164shouldn't appear anywhere else except immediately inside the
163<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
164required) that these tags appear before the content of the document. 166required) that these tags appear before the content of the document.
165</p> 167</p>
166 168
167<p> 169<p>
214content 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
215inside a <c>&lt;body&gt;</c> element in a bit. 217inside a <c>&lt;body&gt;</c> element in a bit.
216</p> 218</p>
217 219
218<note> 220<note>
219A <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>
220elements, and a <c>&lt;chapter&gt;</c> can contain multiple 222elements, a <c>&lt;chapter&gt;</c> must contain at least one
221<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
222element can only contain one <c>&lt;body&gt;</c> element. 224contain at least one <c>&lt;body&gt;</c> element.
223</note> 225</note>
224 226
225</body> 227</body>
226</section> 228</section>
227<section> 229<section>
245# &lt;i&gt;this is user input&lt;/i&gt; 247# &lt;i&gt;this is user input&lt;/i&gt;
246 248
247Make HTML/XML easier to read by using selective emphasis: 249Make HTML/XML easier to read by using selective emphasis:
248&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;
249 251
250&lt;comment&gt;(This is how to insert an inline note into the code block)&lt;/comment&gt; 252&lt;comment&gt;(This is how to insert a comment into a code block)&lt;/comment&gt;
251&lt;/pre&gt; 253&lt;/pre&gt;
252 254
253&lt;note&gt; 255&lt;note&gt;
254This is a note. 256This is a note.
255&lt;/note&gt; 257&lt;/note&gt;
278# <i>this is user input</i> 280# <i>this is user input</i>
279 281
280Make HTML/XML easier to read by using selective emphasis: 282Make HTML/XML easier to read by using selective emphasis:
281&lt;foo&gt;<i>bar</i>&lt;/foo&gt; 283&lt;foo&gt;<i>bar</i>&lt;/foo&gt;
282 284
283<comment>(This is how to insert an inline note into the code block)</comment> 285<comment>(This is how to insert a comment into a code block)</comment>
284</pre> 286</pre>
285 287
286<note> 288<note>
287This is a note. 289This is a note.
288</note> 290</note>
351 353
352</body> 354</body>
353</section> 355</section>
354<section> 356<section>
355<title> 357<title>
356 &lt;path&gt;, &lt;c&gt;, &lt;i&gt;, &lt;b&gt;, &lt;e&gt;, &lt;sub&gt; and &lt;sup&gt; 358 &lt;path&gt;, &lt;c&gt;, &lt;b&gt;, &lt;e&gt;, &lt;sub&gt; and &lt;sup&gt;
357</title> 359</title>
358<body> 360<body>
359 361
360<p> 362<p>
361The <c>&lt;path&gt;</c>, <c>&lt;c&gt;</c>, <c>&lt;b&gt;</c>, <c>&lt;e&gt;</c>, 363The <c>&lt;path&gt;</c>, <c>&lt;c&gt;</c>, <c>&lt;b&gt;</c>, <c>&lt;e&gt;</c>,
362<c>&lt;sub&gt;</c> and <c>&lt;sup&gt;</c> elements can be used inside any child 364<c>&lt;sub&gt;</c> and <c>&lt;sup&gt;</c> elements can be used inside any child
363<c>&lt;body&gt;</c> tag, except for <c>&lt;pre&gt;</c>. The <c>&lt;i&gt;</c> 365<c>&lt;body&gt;</c> tag, except for <c>&lt;pre&gt;</c>.
364element can only be used inside <c>&lt;pre&gt;</c>.
365</p> 366</p>
366 367
367<p> 368<p>
368The <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
369<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
385the use of unnecessary double-quotes makes a document more readable -- and 386the use of unnecessary double-quotes makes a document more readable -- and
386adorable! 387adorable!
387</p> 388</p>
388 389
389<p> 390<p>
390When you want to highlight some text as user input inside a <c>&lt;pre&gt;</c>,
391use <c>&lt;i&gt;</c> instead.
392</p>
393
394<p>
395As you might have guessed, <c>&lt;b&gt;</c> is used to <b>boldface</b> some 391As you might have guessed, <c>&lt;b&gt;</c> is used to <b>boldface</b> some
396text. 392text.
397</p> 393</p>
398 394
399<p> 395<p>
409</p> 405</p>
410 406
411</body> 407</body>
412</section> 408</section>
413<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
476</body>
477</section>
478<section>
414<title>&lt;mail&gt; and &lt;uri&gt;</title> 479<title>&lt;mail&gt; and &lt;uri&gt;</title>
415<body> 480<body>
416 481
417<p> 482<p>
418We'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
419some 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
420link="foo@bar.com"&gt;Mr. Foo Bar&lt;/mail&gt;</c>. If you want to display the 485link="foo.bar@example.com"&gt;Mr. Foo Bar&lt;/mail&gt;</c>. If you want to display the
421email address, you can use <c>&lt;mail&gt;foo@bar.com&lt;/mail&gt;</c>, this 486email address, you can use <c>&lt;mail&gt;foo.bar@example.com&lt;/mail&gt;</c>, this
422would be displayed as <mail>foo@bar.com</mail>. 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.
423</p> 501</p>
424 502
425<p> 503<p>
426The <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.
427It 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
428displayed in the body text, such as this link to 506displayed in the body text, such as this link to
429<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
430<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
431when 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
432link="http://forums.gentoo.org">the Gentoo Forums</uri>. To create <e>this</e> 510link="http://forums.gentoo.org/">the Gentoo Forums</uri>. To create
433link, 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
434Forums&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
435to link to other parts of the Gentoo web site. For instance, a link to the <uri 513<c>http://www.gentoo.org/</c> to link to other parts of the Gentoo web site.
436link="/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>
437link="/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
438even 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
439link="/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>.
440</p> 530</p>
441 531
442</body> 532</body>
443</section> 533</section>
444<section> 534<section>
460<section> 550<section>
461<title>Tables</title> 551<title>Tables</title>
462<body> 552<body>
463 553
464<p> 554<p>
465Guide supports a simplified table syntax similar to that of HTML. To start a 555GuideXML supports a simplified table syntax similar to that of HTML. To start a
466table, 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>
467tag. 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
468HTML &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
469header, 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
470block. 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>
471-- 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
472first row. 562first row.
473</p> 563</p>
474 564
475<p> 565<p>
476Besides, the table header tag (<c>&lt;th&gt;</c>) accepts the <c>colspan</c> 566Besides, both table headers (<c>&lt;th&gt;</c>) and table items
477and <c>rowspan</c> attributes to span titles across rows, columns or both as 567(<c>&lt;ti&gt;</c>) accept the <c>colspan</c> and <c>rowspan</c> attributes to
478shown below: 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.
479</p> 574</p>
480 575
481<table> 576<table>
482 <tr> 577 <tr>
483 <th colspan="4">This title spans 4 columns</th> 578 <th align="center" colspan="4">This title spans 4 columns</th>
484 </tr> 579 </tr>
485 <tr> 580 <tr>
486 <th rowspan="3">This title spans 3 rows</th> 581 <th rowspan="6">This title spans 6 rows</th>
487 <ti>Item A1</ti> 582 <ti>Item A1</ti>
488 <ti>Item A2</ti> 583 <ti>Item A2</ti>
489 <ti>Item A3</ti> 584 <ti>Item A3</ti>
490 </tr> 585 </tr>
491 <tr> 586 <tr>
492 <ti>Item B1</ti> 587 <ti align="center">Item B1</ti>
493 <th colspan="2" rowspan="2">Blocky 2x2 title</th> 588 <th colspan="2" rowspan="2" align="right">Blocky 2x2 title</th>
494 </tr> 589 </tr>
495 <tr> 590 <tr>
496 <ti>Item C1</ti> 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>
497 </tr> 602 </tr>
498</table> 603</table>
499 604
500</body> 605</body>
501</section> 606</section>
563<section> 668<section>
564<title>Intra-document references</title> 669<title>Intra-document references</title>
565<body> 670<body>
566 671
567<p> 672<p>
568Guide 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
569hyperlinks. 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
570One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter 675One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter
571One&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
572Chapter 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
573Chapter 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
574link="#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
575link="#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
576link="#doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>. 681<c>&lt;uri link="#doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>.
577</p> 682</p>
578 683
579<p> 684<p>
580However, 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
581links. 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
597<section> 702<section>
598<title>Disclaimers and obsolete documents</title> 703<title>Disclaimers and obsolete documents</title>
599<body> 704<body>
600 705
601<p> 706<p>
602A disclaimer attribute can be applied to guides and handbooks to display a predefined disclaimer at the top of the document. The available disclaimers are: 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:
603</p> 710</p>
604 711
605<ul> 712<ul>
606 <li> 713 <li>
607 <b>articles</b> is used for <uri link="/doc/en/articles/">republished 714 <b>articles</b> is used for <uri link="/doc/en/articles/">republished
628<pre caption="Disclaimer sample"> 735<pre caption="Disclaimer sample">
629&lt;?xml version="1.0" encoding="UTF-8"?&gt; 736&lt;?xml version="1.0" encoding="UTF-8"?&gt;
630&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt; 737&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt;
631&lt;!-- &#36;Header&#36; --&gt; 738&lt;!-- &#36;Header&#36; --&gt;
632 739
633&lt;guide link="/doc/en/gentoo-x86-install.xml" disclaimer="obsolete" redirect="/doc/en/handbook/handbook-x86.xml"&gt; 740&lt;guide disclaimer="obsolete" redirect="/doc/en/handbook/handbook-x86.xml"&gt;
634&lt;title>Gentoo x86 Installation Guide&lt;/title&gt; 741&lt;title>Gentoo x86 Installation Guide&lt;/title&gt;
635 742
636&lt;author title="Author"&gt; 743&lt;author title="Author"&gt;
637... 744...
638</pre> 745</pre>
639 746
640</body> 747</body>
641</section> 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>
642</chapter> 773</chapter>
643 774
644<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">
645<title>Coding Style</title> 1055<title>Coding Style</title>
646<section> 1056<section>
647<title>Introduction</title> 1057<title>Introduction</title>
648<body> 1058<body>
649 1059
702Besides, tabs are not allowed in GuideXML documents. 1112Besides, tabs are not allowed in GuideXML documents.
703</p> 1113</p>
704 1114
705<p> 1115<p>
706In case word-wrapping happens in <c>&lt;ti&gt;</c>, <c>&lt;th&gt;</c>, 1116In case word-wrapping happens in <c>&lt;ti&gt;</c>, <c>&lt;th&gt;</c>,
707<c>&lt;li&gt;</c> or <c>&lt;dd&gt;</c>constructs, indentation must be used for 1117<c>&lt;li&gt;</c> or <c>&lt;dd&gt;</c> constructs, indentation must be used for
708the content. 1118the content.
709</p> 1119</p>
710 1120
711<p> 1121<p>
712An example for indentation is: 1122An example for indentation is:
794</body> 1204</body>
795</section> 1205</section>
796</chapter> 1206</chapter>
797 1207
798<chapter> 1208<chapter>
799<title>Handbook Format</title>
800<section>
801<title>Guide vs Book</title>
802<body>
803
804<p>
805For high-volume documentation, such as the <uri
806link="/doc/en/handbook/handbook-x86.xml?part=1">Installation Instructions</uri>, a
807broader format was needed. We designed a GuideXML-compatible enhancement that
808allows us to write modular and multi-page documentation.
809</p>
810
811</body>
812</section>
813<section>
814<title>Main File</title>
815<body>
816
817<p>
818The first change is the need for a "master" document. This document contains no
819real content, but links to the individual documentation modules. The syntaxis
820doesn't differ much from GuideXML:
821</p>
822
823<pre caption="Example book usage">
824&lt;?xml version='1.0' encoding='UTF-8'?&gt;
825&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
826&lt;!-- &#36;Header&#36; --&gt;
827
828&lt;<i>book</i> link="example.xml"&gt;
829&lt;title&gt;Example Book Usage&lt;/title&gt;
830
831&lt;author...&gt;
832 ...
833&lt;/author&gt;
834
835&lt;abstract&gt;
836 ...
837&lt;/abstract&gt;
838
839&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
840&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
841&lt;license/&gt;
842
843&lt;version&gt;...&lt;/version&gt;
844&lt;date&gt;...&lt;/date&gt;
845</pre>
846
847<p>
848So far no real differences (except for the <c>&lt;book&gt;</c> instead of
849<c>&lt;guide&gt;</c> tag). Instead of starting with the individual
850<c>&lt;chapter&gt;</c>'s, you define a <c>&lt;part&gt;</c>, which is the
851equivalent of a separate part in a book:
852</p>
853
854<pre caption="Defining a part">
855&lt;part&gt;
856&lt;title&gt;Part One&lt;/title&gt;
857&lt;abstract&gt;
858 ...
859&lt;/abstract&gt;
860
861<comment>(Defining the several chapters)</comment>
862&lt;/part&gt;
863</pre>
864
865<p>
866Each part is accompanied by a <c>&lt;title&gt;</c> and an
867<c>&lt;abstract&gt;</c> which gives a small introduction to the part.
868</p>
869
870<p>
871Inside each part, you define the individual <c>&lt;chapter&gt;</c>'s. Each
872chapter <e>must</e> be a separate document. As a result it is no surprise that a
873special tag (<c>&lt;include&gt;</c>) is added to allow including the separate
874document.
875</p>
876
877<pre caption="Defining a chapter">
878&lt;chapter&gt;
879&lt;title&gt;Chapter One&lt;/title&gt;
880&lt;abstract&gt;
881 This is a small explanation on chapter one.
882&lt;/abstract&gt;
883
884 &lt;include href="path/to/chapter-one.xml"/&gt;
885
886&lt;/chapter&gt;
887</pre>
888
889</body>
890</section>
891<section>
892<title>Designing the Individual Chapters</title>
893<body>
894
895<p>
896The content of an individual chapter is structured as follows:
897</p>
898
899<pre caption="Chapter Syntax">
900&lt;?xml version='1.0' encoding='UTF-8'?&gt;
901&lt;!DOCTYPE sections SYSTEM "/dtd/book.dtd"&gt;
902&lt;!-- &#36;Header&#36; --&gt;
903
904&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
905&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
906
907&lt;sections&gt;
908
909&lt;version&gt;...&lt;/version&gt;
910&lt;date&gt;...&lt;/date&gt;
911
912<comment>(Define the several &lt;section&gt; and &lt;subsection&gt;)</comment>
913
914&lt;/sections&gt;
915</pre>
916
917<p>
918Inside each chapter you can define <c>&lt;section&gt;</c>'s (equivalent of
919<c>&lt;chapter&gt;</c> in a Guide) and <c>&lt;subsection&gt;</c>'s (equivalent
920of <c>&lt;section&gt;</c> in a Guide).
921</p>
922
923<p>
924Each individual chapter should have its own date and version elements. The
925latest date of all chapters and master document will be displayed when a user
926browses through all parts of the book.
927</p>
928
929</body>
930</section>
931</chapter>
932
933<chapter>
934<title>Resources</title> 1209<title>Resources</title>
935<section> 1210<section>
936<title>Start writing</title> 1211<title>Start writing</title>
937<body> 1212<body>
938 1213
939<p> 1214<p>
940Guide 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
941spend more time writing documentation and less time learning the actual XML 1216can spend more time writing documentation and less time learning the actual XML
942syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy" 1217syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy"
943to start writing quality Gentoo documentation. You might be interested 1218to start writing quality Gentoo documentation. You might be interested in our
944in our <uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation 1219<uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation Development Tips
945Development 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
946questions about guide), please post a message to the <mail 1221GuideXML), please post a message to the <uri
947link="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
948like to tackle. Have fun! 1223to tackle. Have fun!
949</p> 1224</p>
950 1225
951</body> 1226</body>
952</section> 1227</section>
953</chapter> 1228</chapter>

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

  ViewVC Help
Powered by ViewVC 1.1.20