/ libxml2 / doc / examples / examples.xsl
examples.xsl
  1  <?xml version="1.0"?>
  2  <xsl:stylesheet version="1.0"
  3    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4    xmlns:exsl="http://exslt.org/common"
  5    extension-element-prefixes="exsl"
  6    exclude-result-prefixes="exsl">
  7  
  8    <xsl:import href="../site.xsl"/>
  9  
 10    <xsl:variable name="href_base">../</xsl:variable>
 11    <xsl:variable name="menu_name">Examples Menu</xsl:variable>
 12  
 13    <xsl:variable name="toc">
 14      <form action="../search.php"
 15            enctype="application/x-www-form-urlencoded" method="get">
 16        <input name="query" type="text" size="20" value=""/>
 17        <input name="submit" type="submit" value="Search ..."/>
 18      </form>
 19      <ul><!-- style="margin-left: -1em" -->
 20        <li><a href="{$href_base}index.html">Home</a></li>
 21        <li><a style="font-weight:bold" 
 22               href="{$href_base}docs.html">Developer Menu</a></li>
 23        <li><a style="font-weight:bold" 
 24               href="{$href_base}html/index.html">API Menu</a></li>
 25        <xsl:for-each select="/examples/sections/section">
 26          <li><a href="#{@name}"><xsl:value-of select="@name"/> Examples</a></li>
 27        </xsl:for-each>
 28        <li><a href="{$href_base}guidelines.html">XML Guidelines</a></li>
 29      </ul>
 30    </xsl:variable>
 31  
 32    <xsl:template match="include">
 33      <xsl:variable name="header" select="substring-before(substring-after(., '/'), '&gt;')"/>
 34      <xsl:variable name="doc" select="concat('../html/libxml-', $header, 'tml')"/>
 35      <li><a href="{$doc}"><xsl:value-of select="."/></a></li>
 36    </xsl:template>
 37  
 38    <xsl:template match="typedef">
 39      <xsl:variable name="name" select="@name"/>
 40      <xsl:variable name="header" select="concat(@file, '.h')"/>
 41      <xsl:variable name="doc" select="concat('../html/libxml-', @file, '.html#', $name)"/>
 42      <li> line <xsl:value-of select="@line"/>: Type <a href="{$doc}"><xsl:value-of select="$name"/></a> from <xsl:value-of select="$header"/></li>
 43    </xsl:template>
 44  
 45    <xsl:template match="function">
 46      <xsl:variable name="name" select="@name"/>
 47      <xsl:variable name="header" select="concat(@file, '.h')"/>
 48      <xsl:variable name="doc" select="concat('../html/libxml-', @file, '.html#', $name)"/>
 49      <li> line <xsl:value-of select="@line"/>: Function <a href="{$doc}"><xsl:value-of select="$name"/></a> from <xsl:value-of select="$header"/></li>
 50    </xsl:template>
 51  
 52    <xsl:template match="macro">
 53      <xsl:variable name="name" select="@name"/>
 54      <xsl:variable name="header" select="concat(@file, '.h')"/>
 55      <xsl:variable name="doc" select="concat('../html/libxml-', @file, '.html#', $name)"/>
 56      <li> line <xsl:value-of select="@line"/>: Macro <a href="{$doc}"><xsl:value-of select="$name"/></a> from <xsl:value-of select="$header"/></li>
 57    </xsl:template>
 58  
 59    <xsl:template match="example">
 60      <xsl:variable name="filename" select="string(@filename)"/>
 61      <h3><a name="{$filename}" href="{$filename}"><xsl:value-of select="$filename"/></a>: <xsl:value-of select="synopsis"/></h3>
 62      <p><xsl:value-of select="purpose"/></p>
 63      <p>Includes:</p>
 64      <ul>
 65      <xsl:for-each select="includes/include">
 66        <xsl:apply-templates select='.'/>
 67      </xsl:for-each>
 68      </ul>
 69      <p>Uses:</p>
 70      <ul>
 71      <xsl:for-each select="uses/*">
 72        <xsl:sort select="@line" data-type="number"/>
 73        <xsl:apply-templates select='.'/>
 74      </xsl:for-each>
 75      </ul>
 76      <p>Usage:</p>
 77      <p><xsl:value-of select="usage"/></p>
 78      <p>Author: <xsl:value-of select="author"/></p>
 79    </xsl:template>
 80  
 81    <xsl:template match="section">
 82      <li><p> <a href="#{@name}"><xsl:value-of select="@name"/></a> :</p>
 83      <ul>
 84      <xsl:for-each select="example">
 85        <xsl:sort select='.'/>
 86        <xsl:variable name="filename" select="@filename"/>
 87        <li> <a href="#{$filename}"><xsl:value-of select="$filename"/></a>: <xsl:value-of select="/examples/example[@filename = $filename]/synopsis"/></li>
 88      </xsl:for-each>
 89      </ul>
 90      </li>
 91    </xsl:template>
 92  
 93    <xsl:template match="sections">
 94      <p> The examples are stored per section depending on the main focus
 95      of the example:</p>
 96      <ul>
 97      <xsl:for-each select="section">
 98        <xsl:sort select='.'/>
 99        <xsl:apply-templates select='.'/>
100      </xsl:for-each>
101      </ul>
102      <p> Getting the compilation options and libraries dependancies needed
103  to generate binaries from the examples is best done on Linux/Unix by using
104  the xml2-config script which should have been installed as part of <i>make
105  install</i> step or when installing the libxml2 development package:</p>
106  <pre>gcc -o example `xml2-config --cflags` example.c `xml2-config --libs`</pre>
107    </xsl:template>
108  
109    <xsl:template name="sections-list">
110      <xsl:for-each select="sections/section">
111        <xsl:variable name="section" select="@name"/>
112        <h2> <a name="{$section}"></a><xsl:value-of select="$section"/> Examples</h2>
113        <xsl:apply-templates select='/examples/example[section = $section]'/>
114      </xsl:for-each>
115    </xsl:template>
116  
117    <xsl:template match="examples">
118      <xsl:variable name="title">Libxml2 set of examples</xsl:variable>
119       <xsl:document href="index.html" method="xml" encoding="ISO-8859-1"
120           doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
121       doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
122        <html>
123          <head>
124          <xsl:call-template name="style"/>
125  	<xsl:element name="title">
126  	  <xsl:value-of select="$title"/>
127  	</xsl:element>
128          </head>
129          <body bgcolor="#8b7765" text="#000000" link="#000000" vlink="#000000">
130            <xsl:call-template name="titlebox">
131  	    <xsl:with-param name="title" select="$title"/>
132  	  </xsl:call-template>
133            <table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
134              <tr>
135                <td bgcolor="#8b7765">
136                  <table border="0" cellspacing="0" cellpadding="2" width="100%">
137                    <tr>
138                      <td valign="top" width="200" bgcolor="#8b7765">
139                        <xsl:call-template name="toc"/>
140                      </td>
141                      <td valign="top" bgcolor="#8b7765">
142                        <table border="0" cellspacing="0" cellpadding="1" width="100%">
143                          <tr>
144                            <td>
145                              <table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
146                                <tr>
147                                  <td>
148                                    <table border="0" cellpadding="3" cellspacing="1" width="100%">
149                                      <tr>
150                                        <td bgcolor="#fffacd">
151  				        <xsl:apply-templates select="sections"/>
152  					<xsl:call-template name="sections-list"/>
153  					<p><a href="../bugs.html">Daniel Veillard</a></p>
154                                        </td>
155                                      </tr>
156                                    </table>
157                                  </td>
158                                </tr>
159                              </table>
160                            </td>
161                          </tr>
162                        </table>
163                      </td>
164                    </tr>
165                  </table>
166                </td>
167              </tr>
168            </table>
169          </body>
170        </html>
171      </xsl:document>
172    </xsl:template>
173  
174  </xsl:stylesheet>