/[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.66 Revision 1.67
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.66 2006/11/29 15:48:57 nightmorph Exp $ --> 2<!-- $Header: /var/cvsroot/gentoo/xml/htdocs/doc/en/xml-guide.xml,v 1.67 2007/10/04 19:37:23 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"> 8<author title="Author">
9 <mail link="neysx@gentoo.org">Xavier Neys</mail> 9 <mail link="neysx"/>
10</author> 10</author>
11<author title="Author"> 11<author title="Author">
12 <mail link="drobbins@gentoo.org">Daniel Robbins</mail> 12 <mail link="drobbins@gentoo.org">Daniel Robbins</mail>
13</author> 13</author>
14<author title="Author"><!-- zhen@gentoo.org --> 14<author title="Author"><!-- zhen@gentoo.org -->
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>7</version> 35<version>8</version>
36<date>2006-05-11</date> 36<date>2007-10-04</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>
478<body> 480<body>
479 481
480<p> 482<p>
481We'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
482some 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
483link="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
484email 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
485would 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.
486</p> 501</p>
487 502
488<p> 503<p>
489The <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.
490It 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
491displayed in the body text, such as this link to 506displayed in the body text, such as this link to
492<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
493<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
494when 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
495link="http://forums.gentoo.org">the Gentoo Forums</uri>. To create <e>this</e> 510link="http://forums.gentoo.org/">the Gentoo Forums</uri>. To create
496link, 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
497Forums&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
498to 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.
499link="/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>
500link="/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
501even 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
502link="/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>.
503</p> 530</p>
504 531
505</body> 532</body>
506</section> 533</section>
507<section> 534<section>
523<section> 550<section>
524<title>Tables</title> 551<title>Tables</title>
525<body> 552<body>
526 553
527<p> 554<p>
528Guide 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
529table, 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>
530tag. 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
531HTML &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
532header, 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
533block. 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>
534-- 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
535first row. 562first row.
536</p> 563</p>
642<section> 669<section>
643<title>Intra-document references</title> 670<title>Intra-document references</title>
644<body> 671<body>
645 672
646<p> 673<p>
647Guide makes it really easy to reference other parts of the document using 674GuideXML makes it really easy to reference other parts of the document using
648hyperlinks. You can create a link pointing to <uri link="#doc_chap1">Chapter 675hyperlinks. You can create a link pointing to <uri link="#doc_chap1">Chapter
649One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter 676One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter
650One&lt;/uri&gt;</c>. To point to <uri link="#doc_chap1_sect2">section two of 677One&lt;/uri&gt;</c>. To point to <uri link="#doc_chap1_sect2">section two of
651Chapter One</uri>, type <c>&lt;uri link="#doc_chap1_sect2"&gt;section two of 678Chapter One</uri>, type <c>&lt;uri link="#doc_chap1_sect2"&gt;section two of
652Chapter One&lt;/uri&gt;</c>. To refer to figure 3 in chapter 1, type <c>&lt;uri 679Chapter One&lt;/uri&gt;</c>. To refer to figure 3 in chapter 1, type
653link="#doc_chap1_fig3"&gt;figure 1.3&lt;/uri&gt;</c>. Or, to refer to <uri 680<c>&lt;uri link="#doc_chap1_fig3"&gt;figure 1.3&lt;/uri&gt;</c>. Or, to refer
654link="#doc_chap2_pre2">code listing 2 in chapter 2</uri>, type <c>&lt;uri 681to <uri link="#doc_chap2_pre2">code listing 2 in chapter 2</uri>, type
655link="#doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>. 682<c>&lt;uri link="#doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>.
656</p> 683</p>
657 684
658<p> 685<p>
659However, some guides change often and using such "counting" can lead to broken 686However, some guides change often and using such "counting" can lead to broken
660links. In order to cope with this, you can define a name for a 687links. In order to cope with this, you can define a name for a
709<pre caption="Disclaimer sample"> 736<pre caption="Disclaimer sample">
710&lt;?xml version="1.0" encoding="UTF-8"?&gt; 737&lt;?xml version="1.0" encoding="UTF-8"?&gt;
711&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt; 738&lt;!DOCTYPE guide SYSTEM "/dtd/guide.dtd"&gt;
712&lt;!-- &#36;Header&#36; --&gt; 739&lt;!-- &#36;Header&#36; --&gt;
713 740
714&lt;guide link="/doc/en/gentoo-x86-install.xml" disclaimer="obsolete" redirect="/doc/en/handbook/handbook-x86.xml"&gt; 741&lt;guide disclaimer="obsolete" redirect="/doc/en/handbook/handbook-x86.xml"&gt;
715&lt;title>Gentoo x86 Installation Guide&lt;/title&gt; 742&lt;title>Gentoo x86 Installation Guide&lt;/title&gt;
716 743
717&lt;author title="Author"&gt; 744&lt;author title="Author"&gt;
718... 745...
719</pre> 746</pre>
720 747
721</body> 748</body>
722</section> 749</section>
750<section>
751<title>FAQs</title>
752<body>
753
754<p>
755FAQ documents need to start with a list of questions with links to their
756answers. Creating such a list is both time-consuming and error-prone. The list
757can be created automatically if you use a <c>faqindex</c> element as the first
758chapter of your document. This element has the same structure as a
759<c>chapter</c> to allow some introductory text. The structure of the document
760is expected to be split into chapters (at least one chapter) containing
761sections, each section containing one question specified in its <c>title</c>
762element with the answer in its <c>body</c>. The FAQ index will appear as one
763section per chapter and one link per question.
764</p>
765
766<p>
767A quick look at a <uri link="/doc/en/faq.xml">FAQ</uri> and <uri
768link="/doc/en/faq.xml?passthru=1">its source</uri> should make the above
769obvious.
770</p>
771
772</body>
773</section>
723</chapter> 774</chapter>
724 775
725<chapter> 776<chapter>
777<title>Handbook Format</title>
778<section>
779<title>Guide vs Book</title>
780<body>
781
782<p>
783For high-volume documentation, such as the <uri
784link="/doc/en/handbook/handbook-x86.xml?part=1">Installation Instructions</uri>, a
785broader format was needed. We designed a GuideXML-compatible enhancement that
786allows us to write modular and multi-page documentation.
787</p>
788
789</body>
790</section>
791<section>
792<title>Main File</title>
793<body>
794
795<p>
796The first change is the need for a "master" document. This document contains no
797real content, but links to the individual documentation modules. The syntax
798doesn't differ much from GuideXML:
799</p>
800
801<pre caption="Example book usage">
802&lt;?xml version='1.0' encoding='UTF-8'?&gt;
803&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
804&lt;!-- &#36;Header&#36; --&gt;
805
806&lt;<i>book</i>&gt;
807&lt;title&gt;Example Book Usage&lt;/title&gt;
808
809&lt;author...&gt;
810 ...
811&lt;/author&gt;
812
813&lt;abstract&gt;
814 ...
815&lt;/abstract&gt;
816
817&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
818&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
819&lt;license/&gt;
820
821&lt;version&gt;...&lt;/version&gt;
822&lt;date&gt;...&lt;/date&gt;
823</pre>
824
825<p>
826So far no real differences (except for the <c>&lt;book&gt;</c> instead of
827<c>&lt;guide&gt;</c> tag). Instead of starting with the individual
828<c>&lt;chapter&gt;</c>s, you define a <c>&lt;part&gt;</c>, which is the
829equivalent of a separate part in a book:
830</p>
831
832<pre caption="Defining a part">
833&lt;part&gt;
834&lt;title&gt;Part One&lt;/title&gt;
835&lt;abstract&gt;
836 ...
837&lt;/abstract&gt;
838
839<comment>(Defining the several chapters)</comment>
840&lt;/part&gt;
841</pre>
842
843<p>
844Each part is accompanied by a <c>&lt;title&gt;</c> and an
845<c>&lt;abstract&gt;</c> which gives a small introduction to the part.
846</p>
847
848<p>
849Inside each part, you define the individual <c>&lt;chapter&gt;</c>s. Each
850chapter <e>must</e> be a separate document. As a result it is no surprise that
851a special tag (<c>&lt;include&gt;</c>) is added to allow including the separate
852document.
853</p>
854
855<pre caption="Defining a chapter">
856&lt;chapter&gt;
857&lt;title&gt;Chapter One&lt;/title&gt;
858
859 &lt;include href="path/to/chapter-one.xml"/&gt;
860
861&lt;/chapter&gt;
862</pre>
863
864</body>
865</section>
866<section>
867<title>Designing the Individual Chapters</title>
868<body>
869
870<p>
871The content of an individual chapter is structured as follows:
872</p>
873
874<pre caption="Chapter Syntax">
875&lt;?xml version='1.0' encoding='UTF-8'?&gt;
876&lt;!DOCTYPE sections SYSTEM "/dtd/book.dtd"&gt;
877&lt;!-- &#36;Header&#36; --&gt;
878
879&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
880&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
881
882&lt;sections&gt;
883
884&lt;abstract&gt;
885 This is a small explanation on chapter one.
886&lt;/abstract&gt;
887
888&lt;version&gt;...&lt;/version&gt;
889&lt;date&gt;...&lt;/date&gt;
890
891<comment>(Define the several &lt;section&gt; and &lt;subsection&gt;)</comment>
892
893&lt;/sections&gt;
894</pre>
895
896<p>
897Inside each chapter you can define <c>&lt;section&gt;</c>s (equivalent of
898<c>&lt;chapter&gt;</c> in a Guide) and <c>&lt;subsection&gt;</c>s (equivalent
899of <c>&lt;section&gt;</c> in a Guide).
900</p>
901
902<p>
903Each individual chapter should have its own date and version elements. The
904latest date of all chapters and master document will be displayed when a user
905browses through all parts of the book.
906</p>
907
908</body>
909</section>
910</chapter>
911
912<chapter>
913<title>Advanced Handbook Features</title>
914<section>
915<title>Global Values</title>
916<body>
917
918<p>
919Sometimes, the same values are repeated many times in several parts of a
920handbook. Global search and replace operations tend to forget some or introduce
921unwanted changes. Besides, it can be useful to define different values to be
922used in shared chapters depending on which handbook includes the chapter.
923</p>
924
925<p>
926Global values can be defined in a handbook master file and used in all included
927chapters.
928</p>
929
930<p>
931To define global values, add a <c>&lt;values&gt;</c> element to the handbook
932master file. Each value is then defined in a <c>&lt;key&gt;</c> element whose
933<c>id</c> attribute identifies the value, i.e. it is the name of your variable.
934The content of the <c>&lt;key&gt;</c> is its value.
935</p>
936
937<p>
938The following example defines three values in a handbook master file:
939</p>
940
941<pre caption="Define values in a handbook">
942&lt;?xml version='1.0' encoding='UTF-8'?&gt;
943&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
944&lt;!-- &#36;Header&#36; --&gt;
945
946&lt;book&gt;
947&lt;title&gt;Example Book Usage&lt;/title&gt;
948
949<i>&lt;values>
950 &lt;key id="arch"&gt;x86&lt;/key&gt;
951 &lt;key id="min-cd-name"&gt;install-x86-minimal-2007.0-r1.iso&lt;/key&gt;
952 &lt;key id="min-cd-size"&gt;57&lt;/key&gt;
953&lt;/values&gt;</i>
954
955&lt;author...&gt;
956 ...
957&lt;/author&gt;
958
959...
960</pre>
961
962<p>
963The defined values can then be used throughout the handbook with the in-line
964<c>&lt;keyval id="key_id"/&gt;</c> element. Specify the name of the key in its
965<c>id</c> attribute, e.g. &lt;keyval id="min-cd-name"/&gt; would be replaced by
966"install-x86-minimal-2007.0-r1.iso" in our example.
967</p>
968
969<pre caption="Using defined values">
970&lt;p&gt;
971The Minimal Installation CD is called &lt;c&gt;<i>&lt;keyval id="min-cd-name"/&gt;</i>&lt;/c&gt;
972and takes up only <i>&lt;keyval id="min-cd-size"/&gt;</i> MB of diskspace. You can use this
973Installation CD to install Gentoo, but &lt;e&gt;only&lt;/e&gt; with a working Internet
974connection.
975&lt;/p&gt;
976</pre>
977
978<p>
979To make life easier on our translators, only use actual values, i.e. content
980that does not need to be translated. For instance, we defined the
981<c>min-cd-size</c> value to <c>57</c> and not <c>57 MB</c>.
982</p>
983
984</body>
985</section>
986<section>
987<title>Conditional Elements</title>
988<body>
989
990<p>
991Chapters that are shared by several handbooks such as our <uri
992link="/doc/en/handbook/">Installation Handbooks</uri> often have small
993differences depending on which handbook includes them. Instead of adding
994content that is irrelevant to some handbooks, authors can add a condition to
995the following elements: <c>&lt;section&gt;</c>, <c>&lt;subsection&gt;</c>,
996<c>&lt;body&gt;</c>, <c>&lt;note&gt;</c>, <c>&lt;impo&gt;</c>,
997<c>&lt;warn&gt;</c>, <c>&lt;pre&gt;</c>, <c>&lt;p&gt;</c>,
998<c>&lt;table&gt;</c>, <c>&lt;tr&gt;</c>, <c>&lt;ul&gt;</c>, <c>&lt;ol&gt;</c>
999and <c>&lt;li&gt;</c>.
1000</p>
1001
1002<p>
1003The condition must be an <uri
1004link="http://en.wikipedia.org/wiki/XPath">XPATH</uri> expression that will be
1005evaluated when transforming the XML. If it evaluates to <c>true</c>, the
1006element is processed, if not, it is ignored. The condition is specified in a
1007<c>test</c> attribute.
1008</p>
1009
1010<p>
1011The following example uses the <c>arch</c> value that is defined in each
1012handbook master file to condition some content:
1013</p>
1014
1015<pre caption="Using conditional elements">
1016&lt;body test="contains('AMD64 x86',func:keyval('arch'))"&gt;
1017
1018&lt;p&gt;
1019This paragraph applies to both x86 and AMD64 architectures.
1020&lt;/p&gt;
1021
1022&lt;p test="func:keyval('arch')='x86'"&gt;
1023This paragraph only applies to the x86 architecture.
1024&lt;/p&gt;
1025
1026&lt;p test="func:keyval('arch')='AMD64'"&gt;
1027This paragraph only applies to the AMD64 architecture.
1028&lt;/p&gt;
1029
1030&lt;p test="func:keyval('arch')='PPC'"&gt;
1031This paragraph will never be seen!
1032The whole body is skipped because of the first condition.
1033&lt;/p&gt;
1034
1035&lt;/body&gt;
1036
1037&lt;body test="contains('AMD64 PPC64',func:keyval('arch'))"&gt;
1038
1039&lt;p&gt;
1040This paragraph applies to the AMD64, PPC64 <comment>and PPC</comment> architectures because
1041the 'AMD64 PPC64' string does contain 'PPC'.
1042&lt;/p&gt;
1043
1044&lt;note test="func:keyval('arch')='AMD64' or func:keyval('arch')='PPC64'"&gt;
1045This note only applies to the AMD64 and PPC64 architectures.
1046&lt;/note&gt;
1047
1048&lt;/body&gt;
1049</pre>
1050
1051</body>
1052</section>
1053</chapter>
1054
1055<chapter id="codingstyle">
726<title>Coding Style</title> 1056<title>Coding Style</title>
727<section> 1057<section>
728<title>Introduction</title> 1058<title>Introduction</title>
729<body> 1059<body>
730 1060
875</body> 1205</body>
876</section> 1206</section>
877</chapter> 1207</chapter>
878 1208
879<chapter> 1209<chapter>
880<title>Handbook Format</title>
881<section>
882<title>Guide vs Book</title>
883<body>
884
885<p>
886For high-volume documentation, such as the <uri
887link="/doc/en/handbook/handbook-x86.xml?part=1">Installation Instructions</uri>, a
888broader format was needed. We designed a GuideXML-compatible enhancement that
889allows us to write modular and multi-page documentation.
890</p>
891
892</body>
893</section>
894<section>
895<title>Main File</title>
896<body>
897
898<p>
899The first change is the need for a "master" document. This document contains no
900real content, but links to the individual documentation modules. The syntax
901doesn't differ much from GuideXML:
902</p>
903
904<pre caption="Example book usage">
905&lt;?xml version='1.0' encoding='UTF-8'?&gt;
906&lt;!DOCTYPE book SYSTEM "/dtd/book.dtd"&gt;
907&lt;!-- &#36;Header&#36; --&gt;
908
909&lt;<i>book</i> link="example.xml"&gt;
910&lt;title&gt;Example Book Usage&lt;/title&gt;
911
912&lt;author...&gt;
913 ...
914&lt;/author&gt;
915
916&lt;abstract&gt;
917 ...
918&lt;/abstract&gt;
919
920&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
921&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
922&lt;license/&gt;
923
924&lt;version&gt;...&lt;/version&gt;
925&lt;date&gt;...&lt;/date&gt;
926</pre>
927
928<p>
929So far no real differences (except for the <c>&lt;book&gt;</c> instead of
930<c>&lt;guide&gt;</c> tag). Instead of starting with the individual
931<c>&lt;chapter&gt;</c>s, you define a <c>&lt;part&gt;</c>, which is the
932equivalent of a separate part in a book:
933</p>
934
935<pre caption="Defining a part">
936&lt;part&gt;
937&lt;title&gt;Part One&lt;/title&gt;
938&lt;abstract&gt;
939 ...
940&lt;/abstract&gt;
941
942<comment>(Defining the several chapters)</comment>
943&lt;/part&gt;
944</pre>
945
946<p>
947Each part is accompanied by a <c>&lt;title&gt;</c> and an
948<c>&lt;abstract&gt;</c> which gives a small introduction to the part.
949</p>
950
951<p>
952Inside each part, you define the individual <c>&lt;chapter&gt;</c>s. Each
953chapter <e>must</e> be a separate document. As a result it is no surprise that
954a special tag (<c>&lt;include&gt;</c>) is added to allow including the separate
955document.
956</p>
957
958<pre caption="Defining a chapter">
959&lt;chapter&gt;
960&lt;title&gt;Chapter One&lt;/title&gt;
961&lt;abstract&gt;
962 This is a small explanation on chapter one.
963&lt;/abstract&gt;
964
965 &lt;include href="path/to/chapter-one.xml"/&gt;
966
967&lt;/chapter&gt;
968</pre>
969
970</body>
971</section>
972<section>
973<title>Designing the Individual Chapters</title>
974<body>
975
976<p>
977The content of an individual chapter is structured as follows:
978</p>
979
980<pre caption="Chapter Syntax">
981&lt;?xml version='1.0' encoding='UTF-8'?&gt;
982&lt;!DOCTYPE sections SYSTEM "/dtd/book.dtd"&gt;
983&lt;!-- &#36;Header&#36; --&gt;
984
985&lt;!-- The content of this document is licensed under the CC-BY-SA license --&gt;
986&lt;!-- See http://creativecommons.org/licenses/by-sa/2.5 --&gt;
987
988&lt;sections&gt;
989
990&lt;version&gt;...&lt;/version&gt;
991&lt;date&gt;...&lt;/date&gt;
992
993<comment>(Define the several &lt;section&gt; and &lt;subsection&gt;)</comment>
994
995&lt;/sections&gt;
996</pre>
997
998<p>
999Inside each chapter you can define <c>&lt;section&gt;</c>s (equivalent of
1000<c>&lt;chapter&gt;</c> in a Guide) and <c>&lt;subsection&gt;</c>s (equivalent
1001of <c>&lt;section&gt;</c> in a Guide).
1002</p>
1003
1004<p>
1005Each individual chapter should have its own date and version elements. The
1006latest date of all chapters and master document will be displayed when a user
1007browses through all parts of the book.
1008</p>
1009
1010</body>
1011</section>
1012</chapter>
1013
1014<chapter>
1015<title>Resources</title> 1210<title>Resources</title>
1016<section> 1211<section>
1017<title>Start writing</title> 1212<title>Start writing</title>
1018<body> 1213<body>
1019 1214
1020<p> 1215<p>
1021Guide has been specially designed to be "lean and mean" so that developers can 1216GuideXML has been specially designed to be "lean and mean" so that developers
1022spend more time writing documentation and less time learning the actual XML 1217can spend more time writing documentation and less time learning the actual XML
1023syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy" 1218syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy"
1024to start writing quality Gentoo documentation. You might be interested 1219to start writing quality Gentoo documentation. You might be interested in our
1025in our <uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation 1220<uri link="/proj/en/gdp/doc/doc-tipsntricks.xml">Documentation Development Tips
1026Development Tips &amp; Tricks</uri>. If you'd like to help (or have any 1221&amp; Tricks</uri>. If you'd like to help (or have any questions about
1027questions about guide), please post a message to the <uri 1222GuideXML), please post a message to the <uri
1028link="/main/en/lists.xml">gentoo-doc mailing list</uri> stating what you'd 1223link="/main/en/lists.xml">gentoo-doc mailing list</uri> stating what you'd like
1029like to tackle. Have fun! 1224to tackle. Have fun!
1030</p> 1225</p>
1031 1226
1032</body> 1227</body>
1033</section> 1228</section>
1034</chapter> 1229</chapter>

Legend:
Removed from v.1.66  
changed lines
  Added in v.1.67

  ViewVC Help
Powered by ViewVC 1.1.20