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

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1.9 - (show annotations) (download) (as text)
Thu Mar 6 21:25:28 2003 UTC (15 years, 9 months ago) by zhen
Branch: MAIN
Changes since 1.8: +35 -33 lines
File MIME type: application/xml
removed, new version live

1 <?xml version='1.0' encoding="UTF-8"?>
2 <!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
4 <guide link="/doc/en/xml-guide.xml">
5 <title>Gentoo Linux XML Guide</title>
6 <author title="Author"><mail link="drobbins@gentoo.org">Daniel Robbins</mail></author>
7 <author title="Author"><mail link="zhen@gentoo.org">John P. Davis</mail></author>
9 <abstract>This guide shows you how to compose web documentation using the new lightweight Gentoo guide
10 XML syntax. This syntax is the official format for Gentoo Linux documentation, and this document
11 itself was created using guide XML. This guide assumes a basic working knowledge of XML and HTML.
12 </abstract>
14 <version>2.0</version>
15 <date>06 March 2003</date>
17 <chapter>
18 <title>Guide basics</title>
20 <section>
21 <title>Guide XML design goals</title>
22 <body>
24 <p> The guide XML syntax is lightweight yet expressive, so that it is easy to
25 learn yet also provides all the features we need for the creation of web
26 documentation. The number of tags is kept to a minimum -- just those we need.
27 This makes it easy to transform guide into other formats, such as DocBook
28 XML/SGML or web-ready HTML. </p>
30 <p>The goal is to make it easy to <e>create</e> and <e>transform</e> guide XML
31 documents.</p>
33 </body>
34 </section>
36 <section>
37 <title>How to transform guide XML into HTML</title>
38 <body>
40 <p> Before we take a look at the guide syntax itself, it's helpful to know how
41 guide XML is transformed into web-ready HTML. To do this, we use a special
42 file called <path>guide.xsl</path>, along with a command-line XSLT processing
43 tool (also called an "engine"). The <path>guide.xsl</path> file describes
44 exactly how to transform the contents of the source guide XML document to
45 create the target HTML file. The processing tool that Gentoo Linux uses
46 is called <c>xsltproc</c>, which is found in the <i>libxslt</i> package. </p>
49 <pre caption="Installing libxslt">
50 # <c>emerge libxslt</c>
51 </pre>
53 <p>Now that we have the way, we need the means, so to speak. In other words,
54 we need some Gentoo XML documents to transform. Gentoo has two types of tarballs
55 that are available for download: </p>
57 <p><b>The first type contains the entire up-to-date Gentoo Linux website</b>.
58 Included are our XSL templates, so if you are planning to transform any documentation,
59 you will need this tarball. The tarball can be found
60 <uri link="http://www.gentoo.org/dyn/arch/xml-guide-latest.tar.gz">here</uri>.</p>
62 <p><b>The second type contains daily snapshots our XML documentation source</b> in
63 every language that we offer. Please note that it is impossible to transform
64 documentation with this tarball, so please download the web tarball if you want to fully
65 develop your own documentation. These tarballs are especially useful for translators.
66 These tarballs can be found <uri link="http://www.gentoo.org/dyn/doc-snapshots">here</uri>.
67 </p>
69 <p>After the web tarball is downloaded and extracted, go
70 to the directory where the tarball was extracted, and enter the
71 <path>htdocs</path> directory. Browse around and get comfortable with the
72 layout, but note the <path>xsl</path> and <path>doc</path> directories.
73 As you might have guessed, the XSL stylesheets are in <path>xsl</path>,
74 and our documentation is in <path>doc</path>. For testing purposes, we
75 will be using the Gentoo Linux CD Installation Guide, located at
76 <path>doc/en/gentoo-x86-install.xml</path>. Now that the locations
77 of the XSL and XML file are known, we can do some transforming with
78 <c>xsltproc</c>. </p>
80 <pre caption="Transforming gentoo-x86-install.xml">
81 # <c>xsltproc xsl/guide.xsl ../doc/en/gentoo-x86-install.xml &gt; /tmp/install.html</c>
82 </pre>
84 <p> If all went well, you should have a web-ready version of
85 <path>gentoo-x86-install.xml</path> at <path>/tmp/install.html</path>. For this document
86 to display properly in a web browser, you may have to copy some files from
87 <path>htdocs</path> to <path>/tmp</path>, such
88 as <path>css/main.css</path> and (to be safe) the entire <path>images</path>
89 directory.
90 </p>
92 </body>
93 </section>
94 </chapter>
95 <chapter>
96 <title>Guide XML</title>
97 <section>
98 <title>Basic structure</title>
99 <body>
101 <p>Now that you know how to transform guide XML, you're ready to start learning
102 the guide XML syntax. We'll start with the the initial tags used in a guide
103 XML document: </p>
105 <pre caption="The initial part of a guide XML document">
106 &lt;?xml version='1.0' encoding="UTF-8"?&gt;
107 &lt;guide link="relative_link_to_your_guide"&gt;
108 &lt;title&gt;<i>Gentoo Linux Documentation Guide</i>&lt;/title&gt;
109 &lt;author title="<i>Chief Architect</i>"&gt;&lt;mail link="<i>drobbins@gentoo.org</i>"&gt;
110 <i>Daniel Robbins</i>&lt;/mail&gt;
111 &lt;/author&gt;
112 &lt;author title="<i>Editor</i>"&gt;&lt;mail link="<i>thomasfl@gentoo.org</i>"&gt;
113 <i>Thomas Flavel</i>&lt;/mail&gt;
114 &lt;/author&gt;
116 &lt;abstract&gt;<i>This guide shows you how to compose web documentation using
117 our new lightweight Gentoo guide XML syntax. This syntax is the official
118 format for Gentoo Linux web documentation, and this document itself was created
119 using guide XML.</i> &lt;/abstract&gt;
121 &lt;version&gt;<i>1.0</i>&lt;/version&gt;
122 &lt;date&gt;<i>29 Mar 2001</i>&lt;/date&gt;
123 </pre>
125 <p>On the first, line, we see the requisite tag that identifies this as an XML
126 document. Following it, there's a <c>&lt;guide&gt;</c> tag -- the entire
127 guide document is enclosed within a <c>&lt;guide&gt; &lt;/guide&gt;</c> pair.
128 Next, there's a <c>&lt;title&gt;</c> tag, used to set the title for the entire
129 guide document. </p>
131 <p>Then, we come to the <c>&lt;author&gt;</c> tags, which contain information
132 about the various authors of the document. Each <c>&lt;author&gt;</c> tag
133 allows for an optional <c>title=</c> element, used to specify the author's
134 relationship to the document (author, co-author, editor, etc.). In this
135 particular example, the authors' names are enclosed in another tag -- a
136 <c>&lt;mail&gt;</c> tag, used to specify an email address for this particular
137 person. The <c>&lt;mail&gt;</c> tag is optional and can be omitted, and no
138 more than one <c>&lt;author&gt;</c> element is required per guide document.
139 </p>
141 <p>Next, we come to the <c>&lt;abstract&gt;</c>, <c>&lt;version&gt;</c> and
142 <c>&lt;date&gt;</c> tags, used to specify a summary of the document, the
143 current version number, and the current version date (in DD MMM YYYY format)
144 respectively. This rounds out the tags that should appear at the beginning of
145 a guide document. Besides the <c>&lt;title&gt;</c> and <c>&lt;mail&gt;</c>
146 tags, these tags shouldn't appear anywhere else except immediately inside the
147 <c>&lt;guide&gt;</c> tag, and for consistency it's recommended (but not
148 required) that these tags appear before the content of the document. </p>
150 </body>
151 </section>
153 <section>
154 <title>Chapters and sections</title>
155 <body>
156 <p>Once the initial tags have been specified, you're ready to start adding
157 the structural elements of the document. Guide documents are divided into
158 chapters, and each chapter can hold one or more sections. Every chapter
159 and section has a title. Here's an example chapter with a single section,
160 consisting of a paragraph. If you append this XML to the XML in the <uri link="#doc_pre2">previous
161 excerpt</uri> and append a <c>&lt;/guide&gt;</c> to the end of the file, you'll have a valid
162 (if minimal) guide document:
163 </p>
165 <pre>
166 &lt;chapter&gt;
167 &lt;title&gt;<i>This is my chapter</i>&lt;/title&gt;
168 &lt;section&gt;
169 &lt;title&gt;<i>This is section one of my chapter</i>&lt;/title&gt;
170 &lt;body&gt;
171 &lt;p&gt;<i>This is the actual text content of my section.</i>&lt;/p&gt;
172 &lt;/body&gt;
173 &lt;/section&gt;
174 &lt;/chapter&gt;
175 </pre>
177 <p>Above, I set the chapter title by adding a child <c>&lt;title&gt;</c>
178 element to the <c>&lt;chapter&gt;</c> element. Then, I created a section by
179 adding a <c>&lt;section&gt;</c> element. If you look inside the
180 <c>&lt;section&gt;</c> element, you'll see that it has two child elements -- a
181 <c>&lt;title&gt;</c> and a <c>&lt;body&gt;</c>. While the <c>&lt;title&gt;</c>
182 is nothing new, the <c>&lt;body&gt;</c> is -- it contains the actual text
183 content of this particular section. We'll look at the tags that are allowed
184 inside a <c>&lt;body&gt;</c> element in a bit. </p>
186 <note>A <c>&lt;guide&gt;</c> element can contain multiple
187 <c>&lt;chapter&gt;</c> elements, and a <c>&lt;chapter&gt;</c> can contain
188 multiple <c>&lt;section&gt;</c> elements. However, a <c>&lt;section&gt;</c>
189 element can only contain one <c>&lt;body&gt;</c> element. </note>
191 </body>
192 </section>
194 <section>
195 <title>An example &lt;body&gt;</title>
196 <body>
197 <p>
198 Now, 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:
199 </p>
200 <pre>
201 &lt;p&gt;
202 This is a paragraph. &lt;path&gt;/etc/passwd&lt;/path&gt; is a file.
203 &lt;uri&gt;http://www.gentoo.org&lt;/uri&gt; is my favorite website.
204 Type &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.
205 &lt;/p&gt;
207 &lt;pre&gt;
208 This is text output or code.
209 # &lt;i&gt;this is user input&lt;/i&gt;
211 Make HTML/XML easier to read by using selective emphasis:
212 &lt;foo&gt;&lt;i&gt;bar&lt;/i&gt;&lt;/foo&gt;
214 &lt;codenote&gt;This is how to insert an inline note into the code block&lt;/codenote&gt;
215 &lt;/pre&gt;
216 &lt;note&gt;This is a note.&lt;/note&gt;
217 &lt;warn&gt;This is a warning.&lt;/warn&gt;
218 &lt;impo&gt;This is important.&lt;/impo&gt;
219 </pre>
220 <p>Now, here's how this <c>&lt;body&gt;</c> element is rendered:</p>
222 <p>
223 This is a paragraph. <path>/etc/passwd</path> is a file.
224 <uri>http://www.gentoo.org</uri> is my favorite website.
225 Type <c>ls</c> if you feel like it. I <e>really</e> want to go to sleep now.
226 </p>
228 <pre>
229 This is text output or code.
230 # <i>this is user input</i>
232 Make HTML/XML easier to read by using selective emphasis:
233 &lt;foo&gt;<i>bar</i>&lt;/foo&gt;
235 <codenote>This is how to insert an inline note into the code block</codenote>
236 </pre>
237 <note>This is a note.</note>
238 <warn>This is a warning.</warn>
239 <impo>This is important.</impo>
240 </body>
241 </section>
243 <section>
244 <title>The &lt;body&gt; tags</title>
245 <body>
247 <p> We introduced a lot of new tags in the previous section -- here's what you
248 need to know. The <c>&lt;p&gt;</c> (paragraph), <c>&lt;pre&gt;</c> (code
249 block), <c>&lt;note&gt;</c>, <c>&lt;warn&gt;</c> (warning) and
250 <c>&lt;impo&gt;</c> (important) tags all can contain one or more lines of text.
251 Besides the <c>&lt;table&gt;</c> element (which we'll cover in just a bit),
252 these are the only tags that should appear immediately inside a
253 <c>&lt;body&gt;</c> element. Another thing -- these tags <e>should not</e> be
254 stacked -- in other words, don't put a <c>&lt;note&gt;</c> element inside a
255 <c>&lt;p&gt;</c> element. As you might guess, the <c>&lt;pre&gt;</c> element
256 preserves its whitespace exactly, making it well-suited for code excerpts.</p>
258 </body>
259 </section>
260 <section>
261 <title>&lt;path&gt;, &lt;c&gt; and &lt;e&gt;</title>
262 <body>
264 <p>The <c>&lt;path&gt;</c>, <c>&lt;c&gt;</c> and <c>&lt;e&gt;</c> elements can
265 be used inside any child <c>&lt;body&gt;</c> tag, except for
266 <c>&lt;pre&gt;</c>. </p>
268 <p>The <c>&lt;path&gt;</c> element is used to mark text that refers to an
269 <e>on-disk file</e> -- either an <e>absolute or relative path</e>, or a <e>simple filename</e>.
270 This element is generally rendered with a monospaced font to offset it from the
271 standard paragraph type. </p>
273 <p>The <c>&lt;c&gt;</c> element is used to mark up a <e>command</e> or <e>user
274 input</e>. Think of <c>&lt;c&gt;</c> as a way to alert the reader to something
275 that they can type in that will perform some kind of action. For example, all
276 the XML tags displayed in this document are enclosed in a <c>&lt;c&gt;</c>
277 element because they represent something that the user could type in that is
278 not a path. By using <c>&lt;c&gt;</c> elements, you'll help your readers
279 quickly identify commands that they need to type in. Also, because
280 <c>&lt;c&gt;</c> elements are already offset from regular text, <e>it is rarely
281 necessary to surround user input with double-quotes</e>. For example, don't
282 refer to a "<c>&lt;c&gt;</c>" element like I did in this sentence. Avoiding
283 the use of unnecessary double-quotes makes a document more readable -- and adorable!</p>
285 <p><c>&lt;e&gt;</c> is used to apply emphasis to a word or phrase; for example:
286 I <e>really</e> should use semicolons more often. As you can see, this text is
287 offset from the regular paragraph type for emphasis. This helps to give your
288 prose more <e>punch</e>!</p>
290 </body>
291 </section>
293 <section>
294 <title>&lt;mail&gt; and &lt;uri&gt;</title>
295 <body>
297 <p>We've taken a look at the <c>&lt;mail&gt;</c> tag earlier; it's used to link some text
298 with a particular email address, and takes the form <c>&lt;mail link="foo@bar.com"&gt;Mr. Foo Bar&lt;/mail&gt;</c>.</p>
300 <p>The <c>&lt;uri&gt;</c> tag is used to point to files/locations on the
301 Internet. It has two forms -- the first can be used when you want to have the
302 actual URI displayed in the body text, such as this link to
303 <uri>http://www.gentoo.org</uri>. To create this link, I typed
304 <c>&lt;uri&gt;http://www.gentoo.org&lt;/uri&gt;</c>. The alternate form is
305 when you want to associate a URI with some other text -- for example, <uri
306 link="http://www.gentoo.org">the Gentoo Linux website</uri>. To create <e>this</e>
307 link, I typed <c>&lt;uri link="http://www.gentoo.org"&gt;the Gentoo Linux website&lt;/uri&gt;</c>.
308 </p>
310 </body>
311 </section>
313 <section>
314 <title>Figures</title>
316 <body>
318 <p>Here's how to insert a figure into a document -- <c>&lt;figure
319 link="mygfx.png" short="my picture" caption="my favorite picture of all
320 time"/&gt;</c>. The <c>link=</c> attribute points to the actual graphic image,
321 the <c>short=</c> attribute specifies a short description (currently used for
322 the image's HTML <c>alt=</c> attribute), and a caption. Not too difficult
323 :) We also support the standard HTML-style &lt;img src="foo.gif"/&gt; tag
324 for adding images without captions, borders, etc.</p>
326 </body>
327 </section>
328 <section>
329 <title>Tables and lists</title>
330 <body>
332 <p>Guide supports a simplified table syntax similar to that of HTML. To start
333 a table, use a <c>&lt;table&gt;</c> tag. Start a row with a <c>&lt;tr&gt;</c>
334 tag. However, for inserting actual table data, we <e>don't</e> support the
335 HTML &lt;td&gt; tag; instead, use the <c>&lt;th&gt;</c> if you are inserting a
336 header, and <c>&lt;ti&gt;</c> if you are inserting a normal informational
337 block. You can use a <c>&lt;th&gt;</c> anywhere you can use a <c>&lt;ti&gt;</c> --
338 there's no requirement that <c>&lt;th&gt;</c> elements appear only in the
339 first row. Currently, these tags don't support any attributes, but some will
340 be added (such as a <c>caption=</c> attribute for <c>&lt;table&gt;</c>) soon.
341 </p>
343 <p> To create ordered or unordered lists, simply use the HTML-style
344 <c>&lt;ol&gt;</c>, <c>&lt;ul&gt;</c> and <c>&lt;li&gt;</c> tags. List tags
345 should only appear inside a <c>&lt;p&gt;</c>, <c>&lt;ti&gt;</c>,
346 <c>&lt;note&gt;</c>, <c>&lt;warn&gt;</c> or <c>&lt;impo&gt;</c> tag. </p>
348 </body>
349 </section>
351 <section>
352 <title>Intra-document references</title>
353 <body>
355 <p>Guide makes it really easy to reference other parts of the document using
356 hyperlinks. You can create a link pointing to <uri link="#doc_chap1">Chapter
357 One</uri> by typing <c>&lt;uri link="#doc_chap1"&gt;Chapter
358 One&lt;/uri&gt;</c>. To point to <uri link="#doc_chap1_sect2">section two of
359 Chapter One</uri>, type <c>&lt;uri link="#doc_chap1_sect2"&gt;section two of
360 Chapter One&lt;/uri&gt;</c>. To refer to figure 3 in chapter 1, type <c>&lt;uri
361 link="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>,
362 type <c>&lt;uri link="doc_chap2_pre2"&gt;code listing 2.2&lt;/uri&gt;</c>. We'll be
363 adding other auto-link abilities (such as table support) soon.</p>
365 </body>
366 </section>
367 </chapter>
368 <chapter>
369 <title>Resources</title>
370 <section>
371 <title>Start writing</title>
372 <body>
373 <p>Guide has been specially designed to be "lean and mean" so that developers
374 can spend more time writing documentation and less time learning the actual XML
375 syntax. Hopefully, this will allow developers who aren't unusually "doc-savvy"
376 to start writing quality Gentoo Linux documentation. If you'd like to help (or have any questions about guide), please
377 post a message to <mail link="gentoo-dev@gentoo.org">the gentoo-dev mailing list</mail>
378 and <mail link="gentoo-doc@gentoo.org">the gentoo-doc mailing list</mail>
379 stating what you'd like to tackle.
380 Have fun!</p>
381 </body>
382 </section>
383 </chapter>
384 </guide>

  ViewVC Help
Powered by ViewVC 1.1.20