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

Ось child:: может быть опущена в пути адресации, так как она является осью по умолчанию. Ось attribute:: можно кратко записать в виде @. // является сокращением для /descendant-or-self::, . является синомимом для self::, а .. является сокращением для parent::.

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

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

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Результат
<H3>AAA a1</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>child::BBB/attribute::id</TD>
     <TD>BBB/@id</TD>
  </TR>
  <TR>
     <TD>b1</TD>
     <TD>b1</TD>
  </TR>
</TABLE>

<H3>AAA a2</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>child::BBB/attribute::id</TD>
     <TD>BBB/@id</TD>
  </TR>
  <TR>
     <TD>b3</TD>
     <TD>b3</TD>
  </TR>
</TABLE>

Представление HTML

AAA a1

full abbreviated
child::BBB/attribute::id BBB/@id
b1 b1

AAA a2

full abbreviated
child::BBB/attribute::id BBB/@id
b3 b3
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="AAA">
     <H3>
          <xsl:value-of select="name()"/>
          <xsl:text> </xsl:text>
          <xsl:value-of select="@id"/>
     </H3>
     <TABLE border="1">
          <TR>
               <TH>full</TH>
               <TH>abbreviated</TH>
          </TR>
          <TR>
               <TD>
                    <xsl:text>child::BBB/attribute::id</xsl:text>
               </TD>
               <TD>
                    <xsl:text>BBB/@id</xsl:text>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:value-of select="child::BBB/attribute::id"/>
               </TD>
               <TD>
                    <xsl:value-of select="BBB/@id"/>
               </TD>
          </TR>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



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

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

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Результат
<H3>BBB b1</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>parent::*/attribute::id</TD>
     <TD>../@id</TD>
  </TR>
  <TR>
     <TD>a1</TD>
     <TD>a1</TD>
  </TR>
</TABLE>
    
<H3>BBB b2</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>parent::*/attribute::id</TD>
     <TD>../@id</TD>
  </TR>
  <TR>
     <TD>a1</TD>
     <TD>a1</TD>
  </TR>
</TABLE>


    
<H3>BBB b3</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>parent::*/attribute::id</TD>
     <TD>../@id</TD>
  </TR>
  <TR>
     <TD>a2</TD>
     <TD>a2</TD>
  </TR>
</TABLE>
    
<H3>BBB b4</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>parent::*/attribute::id</TD>
     <TD>../@id</TD>
  </TR>
  <TR>
     <TD>a2</TD>
     <TD>a2</TD>
  </TR>
</TABLE>
    
         
    
    
<H3>BBB b5</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>parent::*/attribute::id</TD>
     <TD>../@id</TD>
  </TR>
  <TR>
     <TD>a2</TD>
     <TD>a2</TD>
  </TR>
</TABLE>

Представление HTML

BBB b1

full abbreviated
parent::*/attribute::id ../@id
a1 a1

BBB b2

full abbreviated
parent::*/attribute::id ../@id
a1 a1

BBB b3

full abbreviated
parent::*/attribute::id ../@id
a2 a2

BBB b4

full abbreviated
parent::*/attribute::id ../@id
a2 a2

BBB b5

full abbreviated
parent::*/attribute::id ../@id
a2 a2
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="BBB">
     <H3>
          <xsl:value-of select="name()"/>
          <xsl:text> </xsl:text>
          <xsl:value-of select="@id"/>
     </H3>
     <TABLE border="1">
          <TR>
               <TH>full</TH>
               <TH>abbreviated</TH>
          </TR>
          <TR>
               <TD>
                    <xsl:text>parent::*/attribute::id</xsl:text>
               </TD>
               <TD>
                    <xsl:text>../@id</xsl:text>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:value-of select="parent::*/attribute::id"/>
               </TD>
               <TD>
                    <xsl:value-of select="../@id"/>
               </TD>
          </TR>
     </TABLE>
</xsl:template>


</xsl:stylesheet>



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

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

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Результат
<H3>CCC c1</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>name(/descendant-or-self::*)</TD>
     <TD>name(//*)</TD>
  </TR>
  <TR>
     <TD>source</TD>
     <TD>source</TD>
  </TR>
</TABLE>
         
<H3>CCC c2</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>name(/descendant-or-self::*)</TD>
     <TD>name(//*)</TD>
  </TR>
  <TR>
     <TD>source</TD>
     <TD>source</TD>
  </TR>
</TABLE>
    
    
         
<H3>CCC c3</H3>
<TABLE border="1">
  <TR>
     <TH>full</TH>
     <TH>abbreviated</TH>
  </TR>
  <TR>
     <TD>name(/descendant-or-self::*)</TD>
     <TD>name(//*)</TD>
  </TR>
  <TR>
     <TD>source</TD>
     <TD>source</TD>
  </TR>
</TABLE>

Представление HTML

CCC c1

full abbreviated
name(/descendant-or-self::*) name(//*)
source source

CCC c2

full abbreviated
name(/descendant-or-self::*) name(//*)
source source

CCC c3

full abbreviated
name(/descendant-or-self::*) name(//*)
source source
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="CCC">
     <H3>
          <xsl:value-of select="name()"/>
          <xsl:text> </xsl:text>
          <xsl:value-of select="@id"/>
     </H3>
     <TABLE border="1">
          <TR>
               <TH>full</TH>
               <TH>abbreviated</TH>
          </TR>
          <TR>
               <TD>
                    <xsl:text>name(/descendant-or-self::*)</xsl:text>
               </TD>
               <TD>
                    <xsl:text>name(//*)</xsl:text>
               </TD>
          </TR>
          <TR>
               <TD>
                    <xsl:value-of select="name(/descendant-or-self::*)"/>
               </TD>
               <TD>
                    <xsl:value-of select="name(//*)"/>
               </TD>
          </TR>
     </TABLE>
     <xsl:apply-templates/>
</xsl:template>


</xsl:stylesheet>

Raleigh.ru Copyright © 2002