lists all children of each element in the source : descendant « XPath « XML Tutorial

Home
XML Tutorial
1.Introduction
2.Namespace
3.XML Schema
4.XPath
5.XSLT stylesheet
XML Tutorial » XPath » descendant 
4.16.1.lists all children of each element in the source
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
    <AAA>
      <BBB id="b1">
        <CCC name="q" size="12"/>
        <EEE id="e1">
          <SSS/>
        </EEE>
        <CCC weight="45"/>
        <CCC/>
      </BBB>
    </AAA>
    <AAA>
      <EEE id="e2"/>
      <CCC>
        <DDD/>
        <DDD/>
      </CCC>
    </AAA>
</data>
File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/">
      <xsl:for-each select="/descendant::*">
        <xsl:variable name="pos" select="position()"/>
        <xsl:variable name="name" select="name()"/>
        <xsl:if test="not(/descendant::*[position() &lt; $pos and name()= $name])">
          <Paragraph>
            <xsl:value-of select="$name"/>
            <xsl:text> [</xsl:text>
            <xsl:for-each select="//*[name()=$name]/*">
              <xsl:variable name="p" select="position()"/>
              <xsl:if test="not(//*[name()=$name]/*[position()&lt; $p and name()=name(current())])">
                <xsl:value-of select="name()"/>
                <xsl:text>, </xsl:text>
              </xsl:if>
            </xsl:for-each>
            <xsl:text>]</xsl:text>
          </Paragraph>
        </xsl:if>
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?><Paragraph>data [AAA, ]</Paragraph><Paragraph>AAA [BBB, ]</Paragraph><Paragraph>BBB [CCC, EEE, ]</Paragraph><Paragraph>CCC [DDD, ]</Paragraph><Paragraph>EEE [SSS, ]</Paragraph><Paragraph>SSS []</Paragraph><Paragraph>DDD []</Paragraph>
4.16.descendant
4.16.1.lists all children of each element in the source
4.16.2.descendant axis selects the child nodes of the context node, the child nodes of those child nodes, and so on.
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.