xref: /aosp_15_r20/external/libxml2/doc/devhelp/html.xsl (revision 7c5688314b92172186c154356a6374bf7684c3ca)
1<?xml version="1.0"?>
2<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
3		xmlns:exsl="http://exslt.org/common"
4		xmlns:str="http://exslt.org/strings"
5		extension-element-prefixes="exsl str"
6		exclude-result-prefixes="exsl str">
7  <!-- This is convoluted but needed to force the current document to
8       be the API one and not the result tree from the tokenize() result,
9       because the keys are only defined on the main document -->
10  <xsl:template mode="dumptoken" match='*'>
11    <xsl:param name="token"/>
12    <xsl:variable name="ref" select="key('symbols', $token)"/>
13    <xsl:choose>
14      <xsl:when test="$ref">
15        <a href="libxml2-{$ref/@file}.html#{$ref/@name}"><xsl:value-of select="$token"/></a>
16      </xsl:when>
17      <!-- TODO: This hack only works for tokens followed by a period. -->
18      <xsl:when test="substring($token, string-length($token)) = '.'">
19        <xsl:variable name="token2" select="substring($token, 1, string-length($token) - 1)"/>
20        <xsl:variable name="ref2" select="key('symbols', $token2)"/>
21        <xsl:choose>
22          <xsl:when test="$ref2">
23            <a href="libxml2-{$ref2/@file}.html#{$ref2/@name}"><xsl:value-of select="$token2"/></a>
24            <xsl:text>.</xsl:text>
25          </xsl:when>
26          <xsl:otherwise>
27            <xsl:value-of select="$token"/>
28          </xsl:otherwise>
29        </xsl:choose>
30      </xsl:when>
31      <xsl:otherwise>
32        <xsl:value-of select="$token"/>
33      </xsl:otherwise>
34    </xsl:choose>
35  </xsl:template>
36
37  <!-- dumps a string, making cross-reference links -->
38  <xsl:template name="dumptext">
39    <xsl:param name="text"/>
40    <xsl:variable name="ctxt" select='.'/>
41    <!-- <xsl:value-of select="$text"/> -->
42    <xsl:for-each select="str:tokenize($text, ' &#9;')">
43      <xsl:apply-templates select="$ctxt" mode='dumptoken'>
44        <xsl:with-param name="token" select="string(.)"/>
45      </xsl:apply-templates>
46      <xsl:if test="position() != last()">
47        <xsl:text> </xsl:text>
48      </xsl:if>
49    </xsl:for-each>
50  </xsl:template>
51
52<!--
53
54             The following builds the Synopsis section
55
56-->
57  <xsl:template mode="synopsis" match="function">
58    <xsl:variable name="name" select="string(@name)"/>
59    <xsl:variable name="nlen" select="string-length($name)"/>
60    <xsl:variable name="tlen" select="string-length(return/@type)"/>
61    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
62    <xsl:call-template name="dumptext">
63      <xsl:with-param name="text" select="return/@type"/>
64    </xsl:call-template>
65    <xsl:text>&#9;</xsl:text>
66    <a href="#{@name}"><xsl:value-of select="@name"/></a>
67    <xsl:if test="$blen - 40 &lt; -8">
68      <xsl:text>&#9;</xsl:text>
69    </xsl:if>
70    <xsl:if test="$blen - 40 &lt; 0">
71      <xsl:text>&#9;</xsl:text>
72    </xsl:if>
73    <xsl:text>&#9;(</xsl:text>
74    <xsl:if test="not(arg)">
75      <xsl:text>void</xsl:text>
76    </xsl:if>
77    <xsl:for-each select="arg">
78      <xsl:call-template name="dumptext">
79        <xsl:with-param name="text" select="@type"/>
80      </xsl:call-template>
81      <xsl:text> </xsl:text>
82      <xsl:value-of select="@name"/>
83      <xsl:if test="position() != last()">
84        <xsl:text>, </xsl:text><br/>
85	<xsl:if test="$blen - 40 &gt; 8">
86	  <xsl:text>&#9;</xsl:text>
87	</xsl:if>
88	<xsl:if test="$blen - 40 &gt; 0">
89	  <xsl:text>&#9;</xsl:text>
90	</xsl:if>
91	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
92      </xsl:if>
93    </xsl:for-each>
94    <xsl:text>);</xsl:text>
95    <xsl:text>
96</xsl:text>
97  </xsl:template>
98
99  <xsl:template mode="synopsis" match="functype">
100    <xsl:variable name="name" select="string(@name)"/>
101    <xsl:variable name="nlen" select="string-length($name)"/>
102    <xsl:variable name="tlen" select="string-length(return/@type)"/>
103    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
104    <xsl:text>typedef </xsl:text>
105    <xsl:call-template name="dumptext">
106      <xsl:with-param name="text" select="return/@type"/>
107    </xsl:call-template>
108    <xsl:text> </xsl:text>
109    <a href="#{@name}"><xsl:value-of select="@name"/></a>
110    <xsl:if test="$blen - 40 &lt; -8">
111      <xsl:text>&#9;</xsl:text>
112    </xsl:if>
113    <xsl:if test="$blen - 40 &lt; 0">
114      <xsl:text>&#9;</xsl:text>
115    </xsl:if>
116    <xsl:text>&#9;(</xsl:text>
117    <xsl:if test="not(arg)">
118      <xsl:text>void</xsl:text>
119    </xsl:if>
120    <xsl:for-each select="arg">
121      <xsl:call-template name="dumptext">
122        <xsl:with-param name="text" select="@type"/>
123      </xsl:call-template>
124      <xsl:text> </xsl:text>
125      <xsl:value-of select="@name"/>
126      <xsl:if test="position() != last()">
127        <xsl:text>, </xsl:text><br/>
128	<xsl:if test="$blen - 40 &gt; 8">
129	  <xsl:text>&#9;</xsl:text>
130	</xsl:if>
131	<xsl:if test="$blen - 40 &gt; 0">
132	  <xsl:text>&#9;</xsl:text>
133	</xsl:if>
134	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
135      </xsl:if>
136    </xsl:for-each>
137    <xsl:text>);</xsl:text>
138    <xsl:text>
139</xsl:text>
140  </xsl:template>
141
142  <xsl:template mode="synopsis" match="exports[@type='function']">
143    <xsl:variable name="def" select="key('symbols',@symbol)"/>
144    <xsl:apply-templates mode="synopsis" select="$def"/>
145  </xsl:template>
146
147  <xsl:template mode="synopsis" match="exports[@type='typedef']">
148    <xsl:text>typedef </xsl:text>
149    <xsl:call-template name="dumptext">
150      <xsl:with-param name="text" select="string(key('symbols',@symbol)/@type)"/>
151    </xsl:call-template>
152    <xsl:text> </xsl:text>
153    <a href="#{@symbol}"><xsl:value-of select="@symbol"/></a>
154    <xsl:text>;
155</xsl:text>
156  </xsl:template>
157
158  <xsl:template mode="synopsis" match="exports[@type='macro']">
159    <xsl:variable name="def" select="key('symbols',@symbol)"/>
160    <xsl:text>#define </xsl:text>
161    <a href="#{@symbol}"><xsl:value-of select="@symbol"/></a>
162    <xsl:if test="$def/arg">
163      <xsl:text>(</xsl:text>
164      <xsl:for-each select="$def/arg">
165        <xsl:value-of select="@name"/>
166	<xsl:if test="position() != last()">
167	  <xsl:text>, </xsl:text>
168	</xsl:if>
169      </xsl:for-each>
170      <xsl:text>)</xsl:text>
171    </xsl:if>
172    <xsl:text>;
173</xsl:text>
174  </xsl:template>
175  <xsl:template mode="synopsis" match="exports[@type='enum']">
176  </xsl:template>
177  <xsl:template mode="synopsis" match="exports[@type='struct']">
178  </xsl:template>
179
180<!--
181
182             The following builds the Details section
183
184-->
185  <xsl:template mode="details" match="struct">
186    <xsl:variable name="name" select="string(@name)"/>
187    <div class="refsect2" lang="en">
188    <h3><a name="{$name}">Structure </a><xsl:value-of select="$name"/></h3>
189    <pre class="programlisting">
190    <xsl:value-of select="@type"/><xsl:text> {
191</xsl:text>
192    <xsl:if test="not(field)">
193      <xsl:text>The content of this structure is not made public by the API.
194</xsl:text>
195    </xsl:if>
196    <xsl:for-each select="field">
197        <xsl:text>    </xsl:text>
198	<xsl:call-template name="dumptext">
199	  <xsl:with-param name="text" select="@type"/>
200	</xsl:call-template>
201	<xsl:text>&#9;</xsl:text>
202	<xsl:value-of select="@name"/>
203	<xsl:if test="@info != ''">
204	  <xsl:text>&#9;: </xsl:text>
205	  <xsl:call-template name="dumptext">
206	    <xsl:with-param name="text" select="substring(@info, 1, 70)"/>
207	  </xsl:call-template>
208	</xsl:if>
209	<xsl:text>
210</xsl:text>
211    </xsl:for-each>
212    <xsl:text>} </xsl:text>
213    <xsl:value-of select="$name"/>
214    <xsl:text>;
215</xsl:text>
216    </pre>
217    <p>
218    <xsl:call-template name="dumptext">
219      <xsl:with-param name="text" select="info"/>
220    </xsl:call-template>
221    </p><xsl:text>
222</xsl:text>
223    </div><hr/>
224  </xsl:template>
225
226  <xsl:template mode="details" match="typedef[@type != 'enum']">
227    <xsl:variable name="name" select="string(@name)"/>
228    <div class="refsect2" lang="en">
229    <h3><a name="{$name}">Typedef </a><xsl:value-of select="$name"/></h3>
230    <pre class="programlisting">
231    <xsl:call-template name="dumptext">
232      <xsl:with-param name="text" select="string(@type)"/>
233    </xsl:call-template>
234    <xsl:text> </xsl:text>
235    <xsl:value-of select="$name"/>
236    <xsl:text>;
237</xsl:text>
238    </pre>
239    <p>
240    <xsl:call-template name="dumptext">
241      <xsl:with-param name="text" select="info"/>
242    </xsl:call-template>
243    </p><xsl:text>
244</xsl:text>
245    </div><hr/>
246  </xsl:template>
247
248  <xsl:template mode="details" match="variable">
249    <xsl:variable name="name" select="string(@name)"/>
250    <div class="refsect2" lang="en">
251    <h3><a name="{$name}">Variable </a><xsl:value-of select="$name"/></h3>
252    <pre class="programlisting">
253    <xsl:call-template name="dumptext">
254      <xsl:with-param name="text" select="string(@type)"/>
255    </xsl:call-template>
256    <xsl:text> </xsl:text>
257    <xsl:value-of select="$name"/>
258    <xsl:text>;
259</xsl:text>
260    </pre>
261    <p>
262    <xsl:call-template name="dumptext">
263      <xsl:with-param name="text" select="info"/>
264    </xsl:call-template>
265    </p><xsl:text>
266</xsl:text>
267    </div><hr/>
268  </xsl:template>
269
270  <xsl:template mode="details" match="typedef[@type = 'enum']">
271    <xsl:variable name="name" select="string(@name)"/>
272    <div class="refsect2" lang="en">
273    <h3><a name="{$name}">Enum </a><xsl:value-of select="$name"/></h3>
274    <pre class="programlisting">
275    <xsl:text>enum </xsl:text>
276    <a href="#{$name}"><xsl:value-of select="$name"/></a>
277    <xsl:text> {
278</xsl:text>
279    <xsl:for-each select="/api/symbols/enum[@type=$name]">
280      <xsl:sort select="@value" data-type="number" order="ascending"/>
281      <xsl:text>    </xsl:text>
282      <a name="{@name}"><xsl:value-of select="@name"/></a>
283      <xsl:if test="@value">
284        <xsl:text> = </xsl:text>
285	<xsl:value-of select="@value"/>
286      </xsl:if>
287      <xsl:if test="@info">
288        <xsl:text> /* </xsl:text>
289	<xsl:value-of select="@info"/>
290        <xsl:text> */</xsl:text>
291      </xsl:if>
292      <xsl:text>
293</xsl:text>
294    </xsl:for-each>
295    <xsl:text>};
296</xsl:text>
297    </pre>
298    <p>
299    <xsl:call-template name="dumptext">
300      <xsl:with-param name="text" select="info"/>
301    </xsl:call-template>
302    </p><xsl:text>
303</xsl:text>
304    </div><hr/>
305  </xsl:template>
306
307  <xsl:template mode="details" match="macro">
308    <xsl:variable name="name" select="string(@name)"/>
309    <div class="refsect2" lang="en">
310    <h3><a name="{$name}">Macro </a><xsl:value-of select="$name"/></h3>
311    <pre class="programlisting">
312    <xsl:text>#define </xsl:text>
313    <a href="#{$name}"><xsl:value-of select="$name"/></a>
314    <xsl:if test="arg">
315      <xsl:text>(</xsl:text>
316      <xsl:for-each select="arg">
317        <xsl:value-of select="@name"/>
318	<xsl:if test="position() != last()">
319	  <xsl:text>, </xsl:text>
320	</xsl:if>
321      </xsl:for-each>
322      <xsl:text>)</xsl:text>
323    </xsl:if>
324    <xsl:text>;
325</xsl:text>
326    </pre>
327    <p>
328    <xsl:call-template name="dumptext">
329      <xsl:with-param name="text" select="info"/>
330    </xsl:call-template>
331    </p>
332    <xsl:if test="arg">
333      <div class="variablelist"><table border="0"><col align="left"/><tbody>
334      <xsl:for-each select="arg">
335        <tr>
336          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
337	  <td>
338	    <xsl:call-template name="dumptext">
339	      <xsl:with-param name="text" select="@info"/>
340	    </xsl:call-template>
341	  </td>
342        </tr>
343      </xsl:for-each>
344      </tbody></table></div>
345    </xsl:if>
346    <xsl:text>
347</xsl:text>
348    </div><hr/>
349  </xsl:template>
350
351  <xsl:template mode="details" match="function">
352    <xsl:variable name="name" select="string(@name)"/>
353    <xsl:variable name="nlen" select="string-length($name)"/>
354    <xsl:variable name="tlen" select="string-length(return/@type)"/>
355    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
356    <div class="refsect2" lang="en">
357    <h3><a name="{$name}"></a><xsl:value-of select="$name"/> ()</h3>
358    <pre class="programlisting">
359    <xsl:call-template name="dumptext">
360      <xsl:with-param name="text" select="return/@type"/>
361    </xsl:call-template>
362    <xsl:text>&#9;</xsl:text>
363    <xsl:value-of select="@name"/>
364    <xsl:if test="$blen - 40 &lt; -8">
365      <xsl:text>&#9;</xsl:text>
366    </xsl:if>
367    <xsl:if test="$blen - 40 &lt; 0">
368      <xsl:text>&#9;</xsl:text>
369    </xsl:if>
370    <xsl:text>&#9;(</xsl:text>
371    <xsl:if test="not(arg)">
372      <xsl:text>void</xsl:text>
373    </xsl:if>
374    <xsl:for-each select="arg">
375      <xsl:call-template name="dumptext">
376        <xsl:with-param name="text" select="@type"/>
377      </xsl:call-template>
378      <xsl:text> </xsl:text>
379      <xsl:value-of select="@name"/>
380      <xsl:if test="position() != last()">
381        <xsl:text>, </xsl:text><br/>
382	<xsl:if test="$blen - 40 &gt; 8">
383	  <xsl:text>&#9;</xsl:text>
384	</xsl:if>
385	<xsl:if test="$blen - 40 &gt; 0">
386	  <xsl:text>&#9;</xsl:text>
387	</xsl:if>
388	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
389      </xsl:if>
390    </xsl:for-each>
391    <xsl:text>)</xsl:text><br/>
392    <xsl:text>
393</xsl:text>
394    </pre>
395    <p>
396    <xsl:call-template name="dumptext">
397      <xsl:with-param name="text" select="info"/>
398    </xsl:call-template>
399    </p><xsl:text>
400</xsl:text>
401    <xsl:if test="arg | return/@info">
402      <div class="variablelist"><table border="0"><col align="left"/><tbody>
403      <xsl:for-each select="arg">
404        <tr>
405          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
406	  <td>
407	    <xsl:call-template name="dumptext">
408	      <xsl:with-param name="text" select="@info"/>
409	    </xsl:call-template>
410	  </td>
411        </tr>
412      </xsl:for-each>
413      <xsl:if test="return/@info">
414        <tr>
415          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
416	  <td>
417	    <xsl:call-template name="dumptext">
418	      <xsl:with-param name="text" select="return/@info"/>
419	    </xsl:call-template>
420	  </td>
421        </tr>
422      </xsl:if>
423      </tbody></table></div>
424    </xsl:if>
425    </div><hr/>
426  </xsl:template>
427
428  <xsl:template mode="details" match="functype">
429    <xsl:variable name="name" select="string(@name)"/>
430    <xsl:variable name="nlen" select="string-length($name)"/>
431    <xsl:variable name="tlen" select="string-length(return/@type)"/>
432    <xsl:variable name="blen" select="(($nlen + 8) - (($nlen + 8) mod 8)) + (($tlen + 8) - (($tlen + 8) mod 8))"/>
433    <div class="refsect2" lang="en">
434    <h3><a name="{$name}"></a>Function type <xsl:value-of select="$name"/> </h3>
435    <pre class="programlisting">
436    <xsl:call-template name="dumptext">
437      <xsl:with-param name="text" select="return/@type"/>
438    </xsl:call-template>
439    <xsl:text>&#9;</xsl:text>
440    <xsl:value-of select="@name"/>
441    <xsl:if test="$blen - 40 &lt; -8">
442      <xsl:text>&#9;</xsl:text>
443    </xsl:if>
444    <xsl:if test="$blen - 40 &lt; 0">
445      <xsl:text>&#9;</xsl:text>
446    </xsl:if>
447    <xsl:text>&#9;(</xsl:text>
448    <xsl:if test="not(arg)">
449      <xsl:text>void</xsl:text>
450    </xsl:if>
451    <xsl:for-each select="arg">
452      <xsl:call-template name="dumptext">
453        <xsl:with-param name="text" select="@type"/>
454      </xsl:call-template>
455      <xsl:text> </xsl:text>
456      <xsl:value-of select="@name"/>
457      <xsl:if test="position() != last()">
458        <xsl:text>, </xsl:text><br/>
459	<xsl:if test="$blen - 40 &gt; 8">
460	  <xsl:text>&#9;</xsl:text>
461	</xsl:if>
462	<xsl:if test="$blen - 40 &gt; 0">
463	  <xsl:text>&#9;</xsl:text>
464	</xsl:if>
465	<xsl:text>&#9;&#9;&#9;&#9;&#9; </xsl:text>
466      </xsl:if>
467    </xsl:for-each>
468    <xsl:text>)</xsl:text><br/>
469    <xsl:text>
470</xsl:text>
471    </pre>
472    <p>
473    <xsl:call-template name="dumptext">
474      <xsl:with-param name="text" select="info"/>
475    </xsl:call-template>
476    </p><xsl:text>
477</xsl:text>
478    <xsl:if test="arg | return/@info">
479      <div class="variablelist"><table border="0"><col align="left"/><tbody>
480      <xsl:for-each select="arg">
481        <tr>
482          <td><span class="term"><i><tt><xsl:value-of select="@name"/></tt></i>:</span></td>
483	  <td>
484	    <xsl:call-template name="dumptext">
485	      <xsl:with-param name="text" select="@info"/>
486	    </xsl:call-template>
487	  </td>
488        </tr>
489      </xsl:for-each>
490      <xsl:if test="return/@info">
491        <tr>
492          <td><span class="term"><i><tt>Returns</tt></i>:</span></td>
493	  <td>
494	    <xsl:call-template name="dumptext">
495	      <xsl:with-param name="text" select="return/@info"/>
496	    </xsl:call-template>
497	  </td>
498        </tr>
499      </xsl:if>
500      </tbody></table></div>
501    </xsl:if>
502    </div><hr/>
503  </xsl:template>
504
505<!--
506
507             The following builds the general.html page
508
509-->
510  <xsl:template name="generate_general">
511    <xsl:variable name="next" select="string(/api/files/file[position()=1]/@name)"/>
512    <xsl:document xmlns="" href="general.html" method="html" indent="yes" encoding="UTF-8">
513      <html>
514        <head>
515	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
516	  <title><xsl:value-of select="concat(@name, ': ', summary)"/></title>
517	  <meta name="generator" content="Libxml2 devhelp stylesheet"/>
518	  <link rel="start" href="index.html" title="libxml2 Reference Manual"/>
519	  <link rel="up" href="index.html" title="libxml2 Reference Manual"/>
520	  <link rel="stylesheet" href="style.css" type="text/css"/>
521	  <link rel="chapter" href="index.html" title="libxml2 Reference Manual"/>
522        </head>
523	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
524
525          <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
526	    <tr valign="middle">
527              <td><a accesskey="u" href="index.html"><img src="up.png" width="24" height="24" border="0" alt="Up"/></a></td>
528              <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"/></a></td>
529	      <xsl:if test="$next != ''">
530		<td><a accesskey="n" href="libxml2-{$next}.html"><img src="right.png" width="24" height="24" border="0" alt="Next"/></a></td>
531	      </xsl:if>
532              <th width="100%" align="center">libxml2 Reference Manual</th>
533            </tr>
534	  </table>
535	  <h2><span class="refentrytitle">libxml2 API Modules</span></h2>
536	  <p>
537	  <xsl:for-each select="/api/files/file">
538	    <a href="libxml2-{@name}.html"><xsl:value-of select="@name"/></a> - <xsl:value-of select="summary"/><br/>
539	  </xsl:for-each>
540	  </p>
541	</body>
542      </html>
543    </xsl:document>
544  </xsl:template>
545
546<!--
547
548             The following builds the index.html page
549
550-->
551  <xsl:template name="generate_index">
552    <xsl:document xmlns="" href="index.html" method="html" indent="yes" encoding="UTF-8">
553      <html>
554        <head>
555	  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
556	  <title>libxml2 Reference Manual</title>
557	  <meta name="generator" content="Libxml2 devhelp stylesheet"/>
558	  <link rel="stylesheet" href="style.css" type="text/css"/>
559        </head>
560	<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
561
562          <table class="navigation" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2">
563	    <tr valign="middle">
564              <td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"/></a></td>
565	      <td><a accesskey="n" href="general.html"><img src="right.png" width="24" height="24" border="0" alt="Next"/></a></td>
566              <th width="100%" align="center">libxml2 Reference Manual</th>
567            </tr>
568	  </table>
569	  <h2><span class="refentrytitle">libxml2 Reference Manual</span></h2>
570<p>Libxml2 is the XML C parser and toolkit developed for the Gnome project
571(but usable outside of the Gnome platform), it is free software available
572under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
573License</a>. XML itself is a metalanguage to design markup languages, i.e.
574text language where semantic and structure are added to the content using
575extra "markup" information enclosed between angle brackets. HTML is the most
576well-known markup language. Though the library is written in C, a variety of
577language bindings make it available in other environments.</p>
578<p>Libxml2 implements a number of existing standards related to markup
579languages:</p>
580<ul><li>the XML standard: <a href="http://www.w3.org/TR/REC-xml">http://www.w3.org/TR/REC-xml</a></li>
581<li>Namespaces in XML: <a href="http://www.w3.org/TR/REC-xml-names/">http://www.w3.org/TR/REC-xml-names/</a></li>
582<li>XML Base: <a href="http://www.w3.org/TR/xmlbase/">http://www.w3.org/TR/xmlbase/</a></li>
583<li><a href="http://www.cis.ohio-state.edu/rfc/rfc2396.txt">RFC 2396</a> :
584Uniform Resource Identifiers <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a></li>
585<li>XML Path Language (XPath) 1.0: <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a></li>
586<li>HTML4 parser: <a href="http://www.w3.org/TR/html401/">http://www.w3.org/TR/html401/</a></li>
587<li>XML Pointer Language (XPointer) Version 1.0: <a href="http://www.w3.org/TR/xptr">http://www.w3.org/TR/xptr</a></li>
588<li>XML Inclusions (XInclude) Version 1.0: <a href="http://www.w3.org/TR/xinclude/">http://www.w3.org/TR/xinclude/</a></li>
589<li>ISO-8859-x encodings, as well as <a href="http://www.cis.ohio-state.edu/rfc/rfc2044.txt">rfc2044</a> [UTF-8]
590and <a href="http://www.cis.ohio-state.edu/rfc/rfc2781.txt">rfc2781</a>
591[UTF-16] Unicode encodings, and more if using iconv support</li>
592<li>part of SGML Open Technical Resolution TR9401:1997</li>
593<li>XML Catalogs Working Draft 06 August 2001: <a href="http://www.oasis-open.org/committees/entity/spec-2001-08-06.html">http://www.oasis-open.org/committees/entity/spec-2001-08-06.html</a></li>
594<li>Canonical XML Version 1.0: <a href="http://www.w3.org/TR/xml-c14n">http://www.w3.org/TR/xml-c14n</a>
595and the Exclusive XML Canonicalization CR draft <a href="http://www.w3.org/TR/xml-exc-c14n">http://www.w3.org/TR/xml-exc-c14n</a></li>
596<li>Relax NG, ISO/IEC 19757-2:2003, <a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">http://www.oasis-open.org/committees/relax-ng/spec-20011203.html</a></li>
597<li>W3C XML Schemas Part 2: Datatypes <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">REC 02 May
5982001</a></li>
599<li>W3C <a href="http://www.w3.org/TR/xml-id/">xml:id</a> Working Draft 7
600April 2004</li>
601</ul>
602	</body>
603      </html>
604    </xsl:document>
605  </xsl:template>
606
607</xsl:stylesheet>
608
609
610