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

Оси играют очень важную роль в XSLT. Для более подробной информации читайте XSLT reference. Сравните: ось child (преобразование 1), ось descendant (преобразование 2), ось parent (преобразование 3), ось ancestor (преобразование 4), ось following-sibling (преобразование 5), ось preceding-sibling (преобразование 6), ось following (преобразование 7), ось preceding (преобразование 8), ось attribute (преобразование 9), ось namespace (преобразование 10), ось self (преобразование 11), ось descendant-or-self (преобразование 12), ось ancestor-or-self (преобразование 13).

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

Исходный Surf
<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>

Результат
<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>b1 b2 </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>b3 b4 c1 b5 </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
Axis: child
Element Node-set
AAA id = a1 b1 b2
BBB id = b1
BBB id = b2
AAA id = a2 b3 b4 c1 b5
BBB id = b3
BBB id = b4
CCC id = c1 c2
CCC id = c2
BBB id = b5 c3
CCC id = c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>b1 b2 </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>b3 b4 c1 c2 b5 c3 </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
Axis: descendant
Element Node-set
AAA id = a1 b1 b2
BBB id = b1
BBB id = b2
AAA id = a2 b3 b4 c1 c2 b5 c3
BBB id = b3
BBB id = b4
CCC id = c1 c2
CCC id = c2
BBB id = b5 c3
CCC id = c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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
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
<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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>source a1 </td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>source a1 </td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>source </td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>source a2 </td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>source a2 </td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>source a2 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>source a2 c1 </td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>source a2 </td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>source a2 b5 </td>
  </tr>
</table>

Представление HTML
Axis: ancestor
Element Node-set
AAA id = a1 source
BBB id = b1 source a1
BBB id = b2 source a1
AAA id = a2 source
BBB id = b3 source a2
BBB id = b4 source a2
CCC id = c1 source a2
CCC id = c2 source a2 c1
BBB id = b5 source a2
CCC id = c3 source a2 b5
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>b4 c1 b5 </td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>c1 b5 </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
Axis: following-sibling
Element Node-set
AAA id = a1 a2
BBB id = b1 b2
BBB id = b2
AAA id = a2
BBB id = b3 b4 c1 b5
BBB id = b4 c1 b5
CCC id = c1 b5
CCC id = c2
BBB id = b5
CCC id = c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>b3 b4 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>b3 b4 c1 </td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Представление 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 b3 b4
CCC id = c2
BBB id = b5 b3 b4 c1
CCC id = c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>a2 b3 b4 c1 c2 b5 c3 </td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>b2 a2 b3 b4 c1 c2 b5 c3 </td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>a2 b3 b4 c1 c2 b5 c3 </td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td/>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>b4 c1 c2 b5 c3 </td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>c1 c2 b5 c3 </td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>b5 c3 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>b5 c3 </td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td/>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td/>
  </tr>
</table>

Представление HTML
Axis: following
Element Node-set
AAA id = a1 a2 b3 b4 c1 c2 b5 c3
BBB id = b1 b2 a2 b3 b4 c1 c2 b5 c3
BBB id = b2 a2 b3 b4 c1 c2 b5 c3
AAA id = a2
BBB id = b3 b4 c1 c2 b5 c3
BBB id = b4 c1 c2 b5 c3
CCC id = c1 b5 c3
CCC id = c2 b5 c3
BBB id = b5
CCC id = c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>a1 b1 b2 </td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>a1 b1 b2 </td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>a1 b1 b2 b3 </td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>a1 b1 b2 b3 b4 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>a1 b1 b2 b3 b4 </td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>a1 b1 b2 b3 b4 c1 c2 </td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>a1 b1 b2 b3 b4 c1 c2 </td>
  </tr>
</table>

Представление HTML
Axis: preceding
Element Node-set
AAA id = a1
BBB id = b1
BBB id = b2 b1
AAA id = a2 a1 b1 b2
BBB id = b3 a1 b1 b2
BBB id = b4 a1 b1 b2 b3
CCC id = c1 a1 b1 b2 b3 b4
CCC id = c2 a1 b1 b2 b3 b4
BBB id = b5 a1 b1 b2 b3 b4 c1 c2
CCC id = c3 a1 b1 b2 b3 b4 c1 c2
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>id pos </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
Axis: attribute
Element Node-set
AAA id = a1 id pos
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
<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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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
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
<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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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
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
<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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>a1 b1 b2 </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 b3 b4 c1 c2 b5 c3 </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 c2 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>c2 </td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>b5 c3 </td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>c3 </td>
  </tr>
</table>

Представление HTML
Axis: descendant-or-self
Element Node-set
AAA id = a1 a1 b1 b2
BBB id = b1 b1
BBB id = b2 b2
AAA id = a2 a2 b3 b4 c1 c2 b5 c3
BBB id = b3 b3
BBB id = b4 b4
CCC id = c1 c1 c2
CCC id = c2 c2
BBB id = b5 b5 c3
CCC id = c3 c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>



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

Исходный Surf
<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>

Результат
<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>source a1 </td>
  </tr>
  <tr>
     <td>BBB id = b1</td>
     <td>source a1 b1 </td>
  </tr>
  <tr>
     <td>BBB id = b2</td>
     <td>source a1 b2 </td>
  </tr>
  <tr>
     <td>AAA id = a2</td>
     <td>source a2 </td>
  </tr>
  <tr>
     <td>BBB id = b3</td>
     <td>source a2 b3 </td>
  </tr>
  <tr>
     <td>BBB id = b4</td>
     <td>source a2 b4 </td>
  </tr>
  <tr>
     <td>CCC id = c1</td>
     <td>source a2 c1 </td>
  </tr>
  <tr>
     <td>CCC id = c2</td>
     <td>source a2 c1 c2 </td>
  </tr>
  <tr>
     <td>BBB id = b5</td>
     <td>source a2 b5 </td>
  </tr>
  <tr>
     <td>CCC id = c3</td>
     <td>source a2 b5 c3 </td>
  </tr>
</table>

Представление HTML
Axis: ancestor-or-self
Element Node-set
AAA id = a1 source a1
BBB id = b1 source a1 b1
BBB id = b2 source a1 b2
AAA id = a2 source a2
BBB id = b3 source a2 b3
BBB id = b4 source a2 b4
CCC id = c1 source a2 c1
CCC id = c2 source a2 c1 c2
BBB id = b5 source a2 b5
CCC id = c3 source a2 b5 c3
Преобразование 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:text>
               </xsl:for-each>
          </td>
     </tr>
</xsl:template>


</xsl:stylesheet>

Raleigh.ruCopyright © 2002

Kevin Carr in Stanton

Natural Skin Care and European Soaps
Kevin Carr
Mayor Dave Shawver Stanton
internetusers
This is the website that has all the latest for surf, skate and snow. You can also see it here:. You'll be glad you saw the surf apparel.

Take a moment to visit hawaiian made sandals or see them on twitter at hawaiian made sandals or view them on facebook at hawaiian made sandals.

You can also get Organic Skin Care products from Bliss Bath Body and you must check out their Natural Body Lotions and bath soaps

quiksilver board short His name is State Senate election

Quiksilver Tees

Quiksilver Tops

Quiksilver Tees Quiksilver Wetsuits

Quiksilver Wetsuits

Hey, check out this Organic Skin Care European Soaps along with Natural Lavender Body Lotion and shea butter

And you must check out this website