>> Страница 16 << | Назад | Вперед | 16

В этом примере использовались все оси.

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

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

<doc>
     <ancprec>
          <p>Preceeding Ancestor.
               <br/>
          </p>
     </ancprec>
     <gf>
          <p>Ancestor.
               <br/>
          </p>
          <pprec choice="a">
               <p>Preceeding Parent.
                    <br/>
               </p>
          </pprec>
          <par>
               <p>Parent.
                    <br/>
               </p>
               <sibprec>
                    <p>Preceeding sibling.
                         <br/>
                    </p>
               </sibprec>
               <me id="id001">
                    <p>Me.
                         <br/>
                    </p>
                    <chprec>
                         <p>Preceeding child.
                              <br/>
                         </p>
                    </chprec>
                    <child idref="id001">
                         <p>Child.
                              <br/>
                         </p>
                         <dprec>
                              <p>preceeding Descendant.
                                   <br/>
                              </p>
                         </dprec>
                         <desc>
                              <p>Descendant.
                                   <br/>
                              </p>
                         </desc>
                         <dfoll>
                              <p>Following Descendant.
                                   <br/>
                              </p>
                         </dfoll>
                    </child>
                    <chfoll>
                         <p>following child.
                              <br/>
                         </p>
                    </chfoll>
               </me>
               <sibfoll>
                    <p>Following Sibling.
                         <br/>
                    </p>
               </sibfoll>
          </par>
          <pfoll>
               <p>Following Parent.
                    <br/>
               </p>
          </pfoll>
     </gf>
     <ancfoll>
          <p>following Ancestor.
               <br/>
          </p>
     </ancfoll>
</doc>

</source>

Результат
<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  
     <title>Document</title>
  </head>
  <body>
     <H2>Following Axis</H2><b>Following Sibling.<br> Following Parent.<br> following Ancestor.<br></b><H2>Descendant or Self Axis</H2><b>Me.<br> Preceeding child.<br> Child. <br>preceeding Descendant.<br> Descendant.<br> Following Descendant.<br> following child.<br> </b><H2>Descendant  Axis</H2><b>Preceeding child.<br> Child. <br>preceeding Descendant.<br> Descendant.<br> Following Descendant.<br> following child.<br> </b><H2>Self Axis</H2><b>Me.<br> </b><H2>Child Axis</H2><b>Preceeding child.<br> Child. <br>following child.<br> </b><H2>Following Axis</H2>
     <p><b>Following Sibling.<br> Following Parent.<br> following Ancestor.<br></b><br><i>Note the lack of ancestors here? <br>Learned anything
           about document order yet?</i></p>
     <H2>Following Sibling Axis</H2><b>
           Following Sibling.<br>
         </b><H2>Attribute Axis</H2><b>id001</b><H2>Parent Axis</H2><b>Parent. <br></b><H2>Ancestor or Self  Axis</H2><b>Ancestor. <br>Parent. <br>Me.<br> </b><H2>Ancestor  Axis</H2><b>Ancestor. <br>Parent. <br></b><H2>Preceding Sibling Axis</H2><b>Preceeding sibling.<br> </b><H2>Preceeding Axis</H2><b><i>Not Implemented in XT 22 09 99</i></b><H2>Namespace Axis</H2><b><i>Not Implemented in XT 22 09 99</i></b></body>
</html>

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

Following Axis

Following Sibling.
Following Parent.
following Ancestor.

Descendant or Self Axis

Me.
Preceeding child.
Child.
preceeding Descendant.
Descendant.
Following Descendant.
following child.

Descendant Axis

Preceeding child.
Child.
preceeding Descendant.
Descendant.
Following Descendant.
following child.

Self Axis

Me.

Child Axis

Preceeding child.
Child.
following child.

Following Axis

Following Sibling.
Following Parent.
following Ancestor.

Note the lack of ancestors here?
Learned anything about document order yet?

Following Sibling Axis

Following Sibling.

Attribute Axis

id001

Parent Axis

Parent.

Ancestor or Self Axis

Ancestor.
Parent.
Me.

Ancestor Axis

Ancestor.
Parent.

Preceding Sibling Axis

Preceeding sibling.

Preceeding Axis

Not Implemented in XT 22 09 99

Namespace Axis

Not Implemented in XT 22 09 99
Преобразование XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//me"/>
</xsl:template>

<xsl:template match="br">
     <br/>
</xsl:template>

<xsl:template match="me" priority="10">
     <html>
          <head>
               <title>
                    <xsl:text>Document</xsl:text>
               </title>
          </head>
          <body>
               <H2>Following Axis</H2>
               <b>
                    <xsl:apply-templates select="following::*/p"/>
               </b>
               <H2>Descendant or Self Axis</H2>
               <b>
                    <xsl:apply-templates select="descendant-or-self::*/p"/>
               </b>
               <H2>Descendant Axis</H2>
               <b>
                    <xsl:apply-templates select="descendant::*/p"/>
               </b>
               <H2>Self Axis</H2>
               <b>
                    <xsl:apply-templates select="self::*/p"/>
               </b>
               <H2>Child Axis</H2>
               <b>
                    <xsl:apply-templates select="child::*/p"/>
               </b>
               <H2>Following Axis</H2>
               <p>
                    <b>
                         <xsl:apply-templates select="following::*/p"/>
                    </b>
                    <br/>
                    <i>Note the lack of ancestors here?
                         <br/>Learned anything about document order yet?
                    </i>
               </p>
               <H2>Following Sibling Axis</H2>
               <b>
                    <xsl:apply-templates select="following-sibling::*"/>
               </b>
               <H2>Attribute Axis</H2>
               <b>
                    <xsl:apply-templates select="attribute::*"/>
               </b>
               <H2>Parent Axis</H2>
               <b>
                    <xsl:apply-templates select="parent::*/p"/>
               </b>
               <H2>Ancestor or Self Axis</H2>
               <b>
                    <xsl:apply-templates select="ancestor-or-self::*/p"/>
               </b>
               <H2>Ancestor Axis</H2>
               <b>
                    <xsl:apply-templates select="ancestor::*/p"/>
               </b>
               <H2>Preceding Sibling Axis</H2>
               <b>
                    <xsl:apply-templates select="preceding-sibling::*/p"/>
               </b>
               <H2>Preceeding Axis</H2>
               <b>
                    <i>Not Implemented in XT 22 09 99</i>
               </b>
               <H2>Namespace Axis</H2>
               <b>
                    <i>Not Implemented in XT 22 09 99</i>
               </b>
          </body>
     </html>
</xsl:template>


</xsl:stylesheet>