XML/XSLT stylesheet/generate id

Материал из Web эксперт
Версия от 11:26, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Create id with generate-id()

   <source lang="xml">

File: Data.xml <resorts>

  <resort>
     <name>A</name>
     <details>B</details>
     <hotel>
        <name>C</name>
        <stars>5</stars>
        <address> . . . </address>
     </hotel>
     <hotel>
        <name>L</name>
        <stars>2</stars>
        <address> . . . </address>
     </hotel>
  </resort>
  <resort>
     <name>D</name>
     <details>E</details>
     <hotel>
        <name>W</name>
        <stars>5</stars>
        <address> . . . </address>
     </hotel>
     <hotel>
        <name>P</name>
        <stars>2</stars>
        <address> . . . </address>
     </hotel>
  </resort>

</resorts>

File: Transform.xslt <html xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 xsl:version="1.0">
 <body>

Hotels

   <xsl:for-each select="//hotel">
     <xsl:sort select="number(stars)" order="descending"
       data-type="number" />

<xsl:value-of select="name" />

Address: <xsl:value-of select="address" />

Stars: <xsl:value-of select="stars" />

Resort: <a href="#{generate-id(parent::resort)}"> <xsl:value-of select="parent::resort/name" /> </a>

   </xsl:for-each>

Resorts

   <xsl:for-each select="//resort">

<a name="{generate-id()}"> <xsl:value-of select="name" /> </a>

<xsl:value-of select="details" />

   </xsl:for-each>
 </body>

</html> Output: <html>

  <body>

Hotels

C

Address: . . .

Stars: 5

Resort: <a href="#d3e3">A</a>

W

Address: . . .

Stars: 5

Resort: <a href="#d3e36">D</a>

L

Address: . . .

Stars: 2

Resort: <a href="#d3e3">A</a>

P

Address: . . .

Stars: 2

Resort: <a href="#d3e36">D</a>

Resorts

<a name="d3e3">A</a>

B

<a name="d3e36">D</a>

E

  </body>

</html>

</source>
   
  


generate-id() function

   <source lang="xml">

File: Data.xml <verse color="red">

 <amount>5</amount>

</verse> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
 
 <xsl:template match="verse">
   <line status="done" hue="{@color}" number="{amount}"
     sourceElement="src{generate-id()}" />
 </xsl:template>
 

</xsl:stylesheet> Output: <line status="done" hue="red" number="5" sourceElement="srcd2e1"/>

</source>
   
  


Get value out of generate-id() with value-of

   <source lang="xml">

File: Data.xml <verse color="red">

 <amount>5</amount>

</verse>

File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0">
 <xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
 <xsl:template match="verse">
   <xsl:element name="line">
     <xsl:attribute name="status">done</xsl:attribute>
     <xsl:attribute name="hue">
               <xsl:value-of select="@color" />
           </xsl:attribute>
     <xsl:attribute name="number">
               <xsl:value-of select="amount" />
           </xsl:attribute>
     <xsl:attribute name="sourceElement">
               <xsl:text>src</xsl:text>
               <xsl:value-of select="generate-id()" />
           </xsl:attribute>
   </xsl:element>
 </xsl:template>

</xsl:stylesheet> Output: <line status="done" hue="red" number="5" sourceElement="srcd2e1"/>

</source>