home *** CD-ROM | disk | FTP | other *** search
/ Internet Magazine 2003 October / INTERNET108.ISO / pc / software / windows / building / xmlspy / xmlspyentcomplete5.exe / Data1.cab / _86702B56CEAA44B8AAFF8A546C288E2B < prev    next >
Encoding:
Extensible Markup Language  |  2002-09-04  |  7.2 KB  |  239 lines

  1. <?xml version='1.0'?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3.                 xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
  4.                 exclude-result-prefixes="doc"
  5.                 version='1.0'>
  6.  
  7. <!-- ============================================================ -->
  8. <!-- cross reference target collection  -->
  9.  
  10. <doc:mode mode="collect.targets" xmlns="">
  11. <refpurpose>Collects information for potential cross reference targets</refpurpose>
  12. <refdescription>
  13. <para>Processing the root element in the
  14. <literal role="mode">collect.targets</literal> mode produces 
  15. a set of target database elements that can be used by
  16. the olink mechanism to resolve external cross references.
  17. The collection process is controlled by the <literal>
  18. collect.xref.targets</literal> parameter, which can be
  19. <literal>yes</literal> to collect targets and process
  20. the document for output, <literal>only</literal> to
  21. only collect the targets, and <literal>no</literal>
  22. (default) to not collect the targets and only process the document.
  23. </para>
  24. <para>
  25. A <literal>targets.filename</literal> parameter must be
  26. specified to receive the output if 
  27. <literal>collect.xref.targets</literal> is
  28. set to <literal>yes</literal> so as to
  29. redirect the target data to a file separate from the
  30. document output.
  31. </para>
  32. </refdescription>
  33. </doc:mode>
  34.  
  35. <!-- ============================================================ -->
  36.  
  37. <xsl:template match="*" mode="collect.targets">
  38.   <xsl:choose>
  39.     <xsl:when test="$collect.xref.targets = 'yes' and $targets.filename = ''">
  40.       <xsl:message>
  41.         Must specify a $targets.filename parameter when
  42.         $collect.xref.targets is set to 'yes'.
  43.         The xref targets were not collected.
  44.       </xsl:message>
  45.     </xsl:when> 
  46.     <xsl:otherwise>
  47.       <xsl:choose>
  48.         <xsl:when test="$targets.filename">
  49.           <xsl:call-template name="write.chunk">
  50.             <xsl:with-param name="filename" select="$targets.filename"/>
  51.             <xsl:with-param name="method" select="'xml'"/>
  52.             <xsl:with-param name="encoding" select="'utf-8'"/>
  53.             <xsl:with-param name="omit-xml-declaration" select="'yes'"/>
  54.             <xsl:with-param name="indent" select="'yes'"/>
  55.             <xsl:with-param name="quiet" select="0"/>
  56.             <xsl:with-param name="content">
  57.               <xsl:apply-templates select="." mode="olink.mode"/>
  58.             </xsl:with-param>
  59.           </xsl:call-template>
  60.         </xsl:when>
  61.         <xsl:otherwise>
  62.           <!-- Else write to standard output -->
  63.           <xsl:apply-templates select="." mode="olink.mode"/>
  64.         </xsl:otherwise>
  65.       </xsl:choose>
  66.     </xsl:otherwise>
  67.   </xsl:choose>
  68. </xsl:template>
  69.  
  70. <xsl:template name="olink.href.target">
  71.   <xsl:param name="nd" select="."/>
  72.  
  73.   <xsl:value-of select="$olink.base.uri"/>
  74.   <xsl:call-template name="href.target">
  75.     <xsl:with-param name="obj" select="$nd"/>
  76.   </xsl:call-template>
  77. </xsl:template>
  78.  
  79. <!-- Templates for extracting cross reference information
  80.      from a document for use in an xref database.
  81. -->
  82.  
  83. <xsl:template name="attrs">
  84.   <xsl:param name="nd" select="."/>
  85.  
  86.   <xsl:attribute name="element">
  87.     <xsl:value-of select="local-name(.)"/>
  88.   </xsl:attribute>
  89.  
  90.   <xsl:attribute name="href">
  91.     <xsl:call-template name="olink.href.target">
  92.       <xsl:with-param name="object" select="$nd"/>
  93.     </xsl:call-template>
  94.   </xsl:attribute>
  95.  
  96.   <xsl:variable name="num">
  97.     <xsl:apply-templates select="$nd" mode="label.markup">
  98.       <xsl:with-param name="verbose" select="0"/>
  99.     </xsl:apply-templates>
  100.   </xsl:variable>
  101.  
  102.   <xsl:if test="$num">
  103.     <xsl:attribute name="number">
  104.       <xsl:value-of select="$num"/>
  105.     </xsl:attribute>
  106.   </xsl:if>
  107.  
  108.   <xsl:if test="$nd/@id">
  109.     <xsl:attribute name="targetptr">
  110.       <xsl:value-of select="$nd/@id"/>
  111.     </xsl:attribute>
  112.   </xsl:if>
  113.  
  114.   <xsl:if test="$nd/@lang">
  115.     <xsl:attribute name="lang">
  116.       <xsl:value-of select="$nd/@lang"/>
  117.     </xsl:attribute>
  118.   </xsl:if>
  119.  
  120. </xsl:template>
  121.  
  122. <xsl:template name="div">
  123.   <xsl:param name="nd" select="."/>
  124.  
  125.   <div>
  126.     <xsl:call-template name="attrs">
  127.       <xsl:with-param name="nd" select="$nd"/>
  128.     </xsl:call-template>
  129.     <ttl>
  130.       <xsl:apply-templates select="$nd" mode="title.markup"/>
  131.     </ttl>
  132.     <xreftext>
  133.       <xsl:choose>
  134.         <xsl:when test="$nd/@xreflabel">
  135.           <xsl:call-template name="xref.xreflabel">
  136.             <xsl:with-param name="target" select="$nd"/>
  137.           </xsl:call-template>
  138.         </xsl:when>
  139.         <xsl:otherwise>
  140.           <xsl:apply-templates select="$nd" mode="xref-to"/>
  141.         </xsl:otherwise>
  142.       </xsl:choose>
  143.     </xreftext>
  144.     <xsl:apply-templates mode="olink.mode"/>
  145.   </div>
  146. </xsl:template>
  147.  
  148. <xsl:template name="obj">
  149.   <xsl:param name="nd" select="."/>
  150.  
  151.   <obj>
  152.     <xsl:call-template name="attrs">
  153.       <xsl:with-param name="nd" select="$nd"/>
  154.     </xsl:call-template>
  155.     <ttl>
  156.       <xsl:apply-templates select="$nd" mode="title.markup">
  157.         <xsl:with-param name="verbose" select="0"/>
  158.       </xsl:apply-templates>
  159.     </ttl>
  160.     <xreftext>
  161.       <xsl:choose>
  162.         <xsl:when test="$nd/@xreflabel">
  163.           <xsl:call-template name="xref.xreflabel">
  164.             <xsl:with-param name="target" select="$nd"/>
  165.           </xsl:call-template>
  166.         </xsl:when>
  167.         <xsl:otherwise>
  168.           <xsl:apply-templates select="$nd" mode="xref-to">
  169.             <xsl:with-param name="verbose" select="0"/>
  170.           </xsl:apply-templates>
  171.         </xsl:otherwise>
  172.       </xsl:choose>
  173.     </xreftext>
  174.   </obj>
  175. </xsl:template>
  176.  
  177. <xsl:template match="text()|processing-instruction()|comment()"
  178.               mode="olink.mode">
  179.   <!-- nop -->
  180. </xsl:template>
  181.  
  182. <!--
  183. <xsl:template match="*" mode="olink.mode">
  184. </xsl:template>
  185. -->
  186.  
  187. <xsl:template match="set" mode="olink.mode">
  188.   <xsl:call-template name="div"/>
  189. </xsl:template>
  190.  
  191. <xsl:template match="book" mode="olink.mode">
  192.   <xsl:call-template name="div"/>
  193. </xsl:template>
  194.  
  195. <xsl:template match="preface|chapter|appendix" mode="olink.mode">
  196.   <xsl:call-template name="div"/>
  197. </xsl:template>
  198.  
  199. <xsl:template match="part|reference" mode="olink.mode">
  200.   <xsl:call-template name="div"/>
  201. </xsl:template>
  202.  
  203. <xsl:template match="article" mode="olink.mode">
  204.   <xsl:call-template name="div"/>
  205. </xsl:template>
  206.  
  207. <xsl:template match="refentry" mode="olink.mode">
  208.   <xsl:call-template name="div"/>
  209. </xsl:template>
  210.  
  211. <xsl:template match="section|sect1|sect2|sect3|sect4|sect5" mode="olink.mode">
  212.   <xsl:call-template name="div"/>
  213. </xsl:template>
  214.  
  215. <xsl:template match="refsection|refsect1|refsect2|refsect3" mode="olink.mode">
  216.   <xsl:call-template name="div"/>
  217. </xsl:template>
  218.  
  219. <xsl:template match="figure|example|table" mode="olink.mode">
  220.   <xsl:call-template name="obj"/>
  221. </xsl:template>
  222.  
  223. <xsl:template match="equation[title]" mode="olink.mode">
  224.   <xsl:call-template name="obj"/>
  225. </xsl:template>
  226.  
  227. <xsl:template match="qandaset|qandaentry" mode="olink.mode">
  228.   <xsl:call-template name="div"/>
  229. </xsl:template>
  230.  
  231. <xsl:template match="*" mode="olink.mode">
  232.   <xsl:if test="@id">
  233.     <xsl:call-template name="obj"/>
  234.   </xsl:if> 
  235.   <xsl:apply-templates mode="olink.mode"/>
  236. </xsl:template>
  237.  
  238. </xsl:stylesheet>
  239.