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

Пример использования функции id().

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

Исходный XML
<!DOCTYPE source [ 

<!ELEMENT xslTutorial (doc,note*)>
<!ELEMENT doc (#PCDATA|ref)*>
<!ELEMENT  ref EMPTY>
<!ATTLIST ref id IDREF #REQUIRED>
<!ELEMENT note (#PCDATA)>
<!ATTLIST note id ID #REQUIRED>

]>
<source>

<doc> This text
     <ref id="n3"/> demonstrates
     <ref id="n1"/> a possible usage of id function
     <ref id="n2"/>.
</doc>
<note id="n1">Note n1</note>
<note id="n2">Note n2</note>
<note id="n3">Note n3</note>

</source>

Результат
This text
<SUP>1</SUP>
demonstrates <SUP>2</SUP>
a possible usage
of id function <SUP>3</SUP>.

<HR>
<DIV>1. Note n3</DIV>
<DIV>2. Note n1</DIV>
<DIV>3. Note n2</DIV>

Представление HTML
This text 1 demonstrates 2 a possible usage of id function 3.
1. Note n3
2. Note n1
3. Note n2
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:output method="html"/>
<xsl:template match="/">
     <xsl:apply-templates select="//doc"/>
     <HR/>
     <xsl:for-each select="//ref">
          <xsl:apply-templates select="id(@id)">
               <xsl:with-param name="nmbr">
                    <xsl:value-of select="position()"/>
               </xsl:with-param>
          </xsl:apply-templates>
     </xsl:for-each>
</xsl:template>

<xsl:template match="ref">
     <SUP>
          <xsl:value-of select="count(//doc/*) - count(following::ref)"/>
     </SUP>
</xsl:template>

<xsl:template match="note">
     <xsl:param name="nmbr">1</xsl:param>
     <DIV>
          <xsl:number value="$nmbr" format="1. "/>
          <xsl:value-of select="."/>
     </DIV>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002