for-each select="attribute::*" : attribute « XPath « XML Tutorial






File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<data>
    <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>
</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="/">
      <table border="1" cellpadding="6">
        <tr>
          <td colspan="2">Axis: attribute</td>
        </tr>
        <tr>
          <td>Element</td>
          <td>Node-set</td>
        </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>

Output:

<?xml version="1.0" encoding="UTF-8"?><table border="1" cellpadding="6"><tr><th colspan="2">Axis: attribute</th></tr><tr><td>Element</th><td>Node-set</th></tr></table>








4.6.attribute
4.6.1.What is Attribute Axis
4.6.2.Attributes can be accessed in similar way as elements
4.6.3.select="state/@joined"
4.6.4.If the element has an attribute
4.6.5.Check attribute existance
4.6.6.Check value of attribute
4.6.7.Attributes can be processed in the same way as elements
4.6.8.Select elements, which contain or do not contain the given attribute
4.6.9.includes or excludes elements if the specified attribute is present
4.6.10.for-each select="attribute::*"