Главная -> XML&... -> XSLT в примерах 
>> Страница 66 << | Назад | Вперед | Содержание | Указатель

Функция generate-id() используется для создания уникального идентификатора, отвечающего Спецификации XML. Преобразование 1 использует эту функцию для добавления идентификатора ко всем элементам исходного XML.

Преобразование 1

Исходный XML
<source>

<AAA name="top">
     <BBB pos="1" val="bbb">11111</BBB>
     <BBB>22222</BBB>
</AAA>
<AAA name="bottom">
     <BBB>33333</BBB>
     <BBB>44444</BBB>
</AAA>

</source>

Результат
<DIV>
  <B>generate-id(//AAA) : </B>d0e3</DIV>
<DIV>
  <B>generate-id(//BBB) : </B>d0e5</DIV>
<DIV>
  <B>generate-id(//AAA[1]) : </B>d0e3</DIV>
<DIV>
  <B>generate-id(//*[1]) : </B>d0e1</DIV>
<DIV>
  <B>generate-id(//xslTutorial/*[1]) : </B>
</DIV>

Представление HTML
generate-id(//AAA) : d0e3
generate-id(//BBB) : d0e5
generate-id(//AAA[1]) : d0e3
generate-id(//*[1]) : d0e1
generate-id(//xslTutorial/*[1]) :
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <DIV>
          <B>
               <xsl:text>generate-id(//AAA) : </xsl:text>
          </B>
          <xsl:value-of select="generate-id(//AAA) "/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>generate-id(//BBB) : </xsl:text>
          </B>
          <xsl:value-of select="generate-id(//BBB) "/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>generate-id(//AAA[1]) : </xsl:text>
          </B>
          <xsl:value-of select="generate-id(//AAA[1]) "/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>generate-id(//*[1]) : </xsl:text>
          </B>
          <xsl:value-of select="generate-id(//*[1]) "/>
     </DIV>
     <DIV>
          <B>
               <xsl:text>generate-id(//xslTutorial/*[1]) : </xsl:text>
          </B>
          <xsl:value-of select="generate-id(//xslTutorial/*[1]) "/>
     </DIV>
</xsl:template>


</xsl:stylesheet>



Преобразование 2

Исходный XML
<source>

<AAA name="top">
     <BBB pos="1" val="bbb">11111</BBB>
     <BBB>22222</BBB>
</AAA>
<AAA name="bottom">
     <BBB>33333</BBB>
     <BBB>44444</BBB>
</AAA>

</source>

Результат
<source id="d0e1">

  <AAA id="d0e3" name="top">
     
     <BBB id="d0e5" pos="1" val="bbb">11111</BBB>
     
     <BBB id="d0e8">22222</BBB>

  </AAA>

  <AAA id="d0e12" name="bottom">
      
     <BBB id="d0e14">33333</BBB>
     
     <BBB id="d0e17">44444</BBB>

  </AAA>


</source>

Представление HTML
11111 22222 33333 44444
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="*">
     <xsl:copy>
          <xsl:attribute name="id">
               <xsl:value-of select="generate-id()"/>
          </xsl:attribute>
          <xsl:for-each select="@*">
               <xsl:attribute name="{name()}">
                    <xsl:value-of select="."/>
               </xsl:attribute>
          </xsl:for-each>
          <xsl:apply-templates/>
     </xsl:copy>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002