English | Français | Deutsch | Magyar | 中文 | >> Polski << ZVON > Tutorials > XSLT Tutorial
>> Strona 15 << | Poprzedni | Następny | Zawartość | Indeks elementu

Osie odgrywają ważną rolę w XSLT. Więcej szczegółów znaleźć można w słowniku pojęć dotyczących XSLT. Do porównania: oś child ( Arkusz stylów XSLT 1 ), oś descendant ( Arkusz stylów XSLT 2 ), oś parent ( Arkusz stylów XSLT 3 ), oś ancestor ( Arkusz stylów XSLT 4 ), oś following-sibling ( Arkusz stylów XSLT 5 ), oś preceding-sibling ( Arkusz stylów XSLT 6 ), oś following ( Arkusz stylów XSLT 7 ), oś preceding ( Arkusz stylów XSLT 8 ), oś attribute ( Arkusz stylów XSLT 9 ), oś namespace ( Arkusz stylów XSLT 10 ), oś self ( Arkusz stylów XSLT 11 ), oś descendant-or-self ( Arkusz stylów XSLT 12 ), oś ancestor-or-self ( Arkusz stylów XSLT 13 ).

Arkusz stylów XSLT 1

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: child</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>b1b2</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td/>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>b3b4c1b5</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td/>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>c2</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>c3</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Widok HTML
Axis: child
Element Node-set
AAA id = a1 b1b2
BBB id = b1
BBB id = b2
AAA id = a2 b3b4c1b5
BBB id = b3
BBB id = b4
CCC id = c1 c2
CCC id = c2
BBB id = b5 c3
CCC id = c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: child</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="child::*">
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 2

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: descendant</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>b1b2</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td/>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>b3b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td/>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>c2</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>c3</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Widok HTML
Axis: descendant
Element Node-set
AAA id = a1 b1b2
BBB id = b1
BBB id = b2
AAA id = a2 b3b4c1c2b5c3
BBB id = b3
BBB id = b4
CCC id = c1 c2
CCC id = c2
BBB id = b5 c3
CCC id = c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: descendant</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="descendant::*">
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 3

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: parent</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>source</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>a1</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>a1</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>source</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>c1</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>b5</td>
  </tr>
</table>

Widok HTML
Axis: parent
Element Node-set
AAA id = a1 source
BBB id = b1 a1
BBB id = b2 a1
AAA id = a2 source
BBB id = b3 a2
BBB id = b4 a2
CCC id = c1 a2
CCC id = c2 c1
BBB id = b5 a2
CCC id = c3 b5
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: parent</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="parent::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 4

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: ancestor</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>source</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>sourcea1</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>sourcea1</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>source</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>sourcea2</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>sourcea2</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>sourcea2</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>sourcea2c1</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>sourcea2</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>sourcea2b5</td>
  </tr>
</table>

Widok HTML
Axis: ancestor
Element Node-set
AAA id = a1 source
BBB id = b1 sourcea1
BBB id = b2 sourcea1
AAA id = a2 source
BBB id = b3 sourcea2
BBB id = b4 sourcea2
CCC id = c1 sourcea2
CCC id = c2 sourcea2c1
BBB id = b5 sourcea2
CCC id = c3 sourcea2b5
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: ancestor</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="ancestor::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 5

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: following-sibling</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>b2</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td/>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>b4c1b5</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>c1b5</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>b5</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td/>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Widok HTML
Axis: following-sibling
Element Node-set
AAA id = a1 a2
BBB id = b1 b2
BBB id = b2
AAA id = a2
BBB id = b3 b4c1b5
BBB id = b4 c1b5
CCC id = c1 b5
CCC id = c2
BBB id = b5
CCC id = c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: following-sibling</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="following-sibling::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 6

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: preceding-sibling</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>b1</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>a1</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>b3</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>b3b4</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>b3b4c1</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Widok HTML
Axis: preceding-sibling
Element Node-set
AAA id = a1
BBB id = b1
BBB id = b2 b1
AAA id = a2 a1
BBB id = b3
BBB id = b4 b3
CCC id = c1 b3b4
CCC id = c2
BBB id = b5 b3b4c1
CCC id = c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: preceding-sibling</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="preceding-sibling::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 7

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: following</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>a2b3b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>b2a2b3b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>a2b3b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>c1c2b5c3</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>b5c3</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td/>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Widok HTML
Axis: following
Element Node-set
AAA id = a1 a2b3b4c1c2b5c3
BBB id = b1 b2a2b3b4c1c2b5c3
BBB id = b2 a2b3b4c1c2b5c3
AAA id = a2
BBB id = b3 b4c1c2b5c3
BBB id = b4 c1c2b5c3
CCC id = c1 b5c3
CCC id = c2 b5c3
BBB id = b5
CCC id = c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: following</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="following::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 8

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: preceding</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>b1</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>a1b1b2</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>a1b1b2</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>a1b1b2b3</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>a1b1b2b3b4</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>a1b1b2b3b4</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>a1b1b2b3b4c1c2</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>a1b1b2b3b4c1c2</td>
  </tr>
</table>

Widok HTML
Axis: preceding
Element Node-set
AAA id = a1
BBB id = b1
BBB id = b2 b1
AAA id = a2 a1b1b2
BBB id = b3 a1b1b2
BBB id = b4 a1b1b2b3
CCC id = c1 a1b1b2b3b4
CCC id = c2 a1b1b2b3b4
BBB id = b5 a1b1b2b3b4c1c2
CCC id = c3 a1b1b2b3b4c1c2
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: preceding</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="preceding::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 9

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: attribute</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>idpos</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>id</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>id</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>id</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>id</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>id</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>id</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>id</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>id</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>id</td>
  </tr>
</table>

Widok HTML
Axis: attribute
Element Node-set
AAA id = a1 idpos
BBB id = b1 id
BBB id = b2 id
AAA id = a2 id
BBB id = b3 id
BBB id = b4 id
CCC id = c1 id
CCC id = c2 id
BBB id = b5 id
CCC id = c3 id
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: attribute</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="attribute::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 10

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: namespace</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>xml</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>xml</td>
  </tr>
</table>

Widok HTML
Axis: namespace
Element Node-set
AAA id = a1 xml
BBB id = b1 xml
BBB id = b2 xml
AAA id = a2 xml
BBB id = b3 xml
BBB id = b4 xml
CCC id = c1 xml
CCC id = c2 xml
BBB id = b5 xml
CCC id = c3 xml
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: namespace</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="namespace::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 11

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: self</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>a1</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>b1</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>b2</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>a2</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>b3</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>b4</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>c1</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>c2</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>b5</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>c3</td>
  </tr>
</table>

Widok HTML
Axis: self
Element Node-set
AAA id = a1 a1
BBB id = b1 b1
BBB id = b2 b2
AAA id = a2 a2
BBB id = b3 b3
BBB id = b4 b4
CCC id = c1 c1
CCC id = c2 c2
BBB id = b5 b5
CCC id = c3 c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: self</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="self::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 12

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: descendant-or-self</th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>a1b1b2</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>b1</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>b2</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>a2b3b4c1c2b5c3</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>b3</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>b4</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>c1c2</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>c2</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>b5c3</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>c3</td>
  </tr>
</table>

Widok HTML
Axis: descendant-or-self
Element Node-set
AAA id = a1 a1b1b2
BBB id = b1 b1
BBB id = b2 b2
AAA id = a2 a2b3b4c1c2b5c3
BBB id = b3 b3
BBB id = b4 b4
CCC id = c1 c1c2
CCC id = c2 c2
BBB id = b5 b5c3
CCC id = c3 c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: descendant-or-self</th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="descendant-or-self::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>


Arkusz stylów XSLT 13

Źródło 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>

Dane wyjściowe
<table border="1" cellpadding="6">
  <tr>
     <th colspan="2">Axis: ancestor-or-self </th>
  </tr>
  <tr>
     <th>Element</th>
     <th>Node-set</th>
  </tr>
  <tr>
     <td>AAA id = a1</td>
     <td>sourcea1</td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>sourcea1b1</td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>sourcea1b2</td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>sourcea2</td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>sourcea2b3</td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>sourcea2b4</td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>sourcea2c1</td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>sourcea2c1c2</td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>sourcea2b5</td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>sourcea2b5c3</td>
  </tr>
</table>

Widok HTML
Axis: ancestor-or-self
Element Node-set
AAA id = a1 sourcea1
BBB id = b1 sourcea1b1
BBB id = b2 sourcea1b2
AAA id = a2 sourcea2
BBB id = b3 sourcea2b3
BBB id = b4 sourcea2b4
CCC id = c1 sourcea2c1
CCC id = c2 sourcea2c1c2
BBB id = b5 sourcea2b5
CCC id = c3 sourcea2b5c3
Arkusz stylów XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <table border="1" cellpadding="6">
          <tr>
               <th colspan="2">Axis: ancestor-or-self </th>
          </tr>
          <tr>
               <th>Element</th>
               <th>Node-set</th>
          </tr>
          <xsl:for-each select="/source//*">
               <xsl:call-template name="print"/>
          </xsl:for-each>
     </table>
</xsl:template>

<xsl:template name="print">
     <tr>
          <td>
               <xsl:value-of select="name()"/>
               <xsl:text> id = </xsl:text>
               <xsl:value-of select="./@id"/>
          </td>
          <td>
               <xsl:for-each select="ancestor-or-self ::*">
                    <xsl:if test="not(@id)">
                         <xsl:value-of select="name()"/>
                    </xsl:if>
                    <xsl:value-of select="./@id"/>
                    <xsl:text/>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>