jcramalho

XSLT stylesheet para gerar índice multinível para os arqsits

Oct 8th, 2015
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
XML 2.28 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3.    version="2.0">
  4.    
  5.     <xsl:template match="/">
  6.         <html>
  7.             <head>
  8.                 <title>Arqueossítios</title>
  9.             </head>
  10.             <body>
  11.                 <a name="indice"/>
  12.                 <h2>Índice</h2>
  13.                 <ul>
  14.                     <xsl:apply-templates select="//CONCEL[not(normalize-space(.)=preceding::CONCEL/normalize-space(.))]" mode="indice">
  15.                         <xsl:sort select="normalize-space(.)"/>
  16.                     </xsl:apply-templates>
  17.                 </ul>
  18.                 <hr/>
  19.                 <h1>Arqueossítios do NW português</h1>
  20.                 <hr align="center" width="60%"/>
  21.                 <xsl:apply-templates/>
  22.             </body>
  23.         </html>
  24.        
  25.     </xsl:template>
  26.    
  27.     <!-- ..........Templates para geração do conteúdo.... -->
  28.    
  29.     <xsl:template match="ARQELEM">
  30.         <h3>
  31.             <a name="{generate-id()}">
  32.                 <xsl:value-of select="IDENTI"/>
  33.             </a>
  34.         </h3>
  35.         <p><b>Localização:</b>
  36.             <xsl:value-of select="FREGUE"/>,
  37.             <xsl:value-of select="CONCEL"/>.
  38.         </p>
  39.         <p>
  40.             <xsl:value-of select="DESARQ"/>
  41.         </p>
  42.         <address>[<a href="#indice">Voltar ao topo</a>]
  43.             [<a href="#i{generate-id()}">Voltar atrás</a>]</address>
  44.         <hr width="80%" align="center"/>
  45.     </xsl:template>
  46.    
  47.     <!-- ..........Templates para geração do índice.... -->
  48.    
  49.     <xsl:template match="CONCEL" mode="indice">
  50.         <xsl:variable name="c" select="normalize-space(.)"/>
  51.         <li>
  52.             <xsl:value-of select="."/>
  53.             <ul>
  54.                 <xsl:apply-templates select="/ARQSITS/ARQELEM[normalize-space(CONCEL)=$c]" mode="indice">
  55.                     <xsl:sort select="IDENTI"/>
  56.                 </xsl:apply-templates>
  57.             </ul>
  58.         </li>
  59.     </xsl:template>
  60.    
  61.     <xsl:template match="ARQELEM" mode="indice">
  62.         <li>
  63.             <a href="#{generate-id()}"
  64.                name="i{generate-id()}">
  65.                 <xsl:value-of select="IDENTI"/>
  66.             </a>
  67.         </li>
  68.     </xsl:template>
  69.    
  70.    
  71. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment