English | Français | >> Deutsch << | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Seite 15 << | Zurück | Vor | Inhalt | Element-Index

Die Achsen, wie sie in XPath spefiziert werden, spielen in XSLT eine gro?e Rolle. Unter XSLT reference gibt es weitere Informationen. Vergleichen Sie: child axis [=Kinder] ( XSLT Stylesheet 1 ), descendant axis [=Nachfahren] ( XSLT Stylesheet 2 ), parent axis [=Eltern] ( XSLT Stylesheet 3 ), ancestor axis [=Vorfahren] ( XSLT Stylesheet 4 ), following-sibling axis [=Nachfolge-Geschwister] ( XSLT Stylesheet 5 ), preceding-sibling axis [=Vorg?nger-Geschwister] ( XSLT Stylesheet 6 ), following axis [=Nachfolger] ( XSLT Stylesheet 7 ), preceding axis [=Vorg?nger] ( XSLT Stylesheet 8 ), attribute axis [=Attribute] ( XSLT Stylesheet 9 ), namespace axis [=Namensr?ume] ( XSLT Stylesheet 10 ), self axis [=Aktuelles Element] ( XSLT Stylesheet 11 ), descendant-or-self axis [=Nachfahre oder aktuelles Element] ( XSLT Stylesheet 12 ), ancestor-or-self axis [=Vorfahren oder aktuelles Element] ( XSLT Stylesheet 13 ).

XSLT Stylesheet 1

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 2

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 3

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 4

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 5

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 6

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 7

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 8

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 9

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 10

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 11

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 12

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>


XSLT Stylesheet 13

XML Quelltext
<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>

Ausgabe
<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>

HTML-Ansicht
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
XSLT Stylesheet
<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>