If element has value : axis « XPath « XML Tutorial






File: Data.xml

<?xml version="1.0"?>
<addressbook>
  <address>
    <name>
      <title>Mr.</title>
      <first-name>Bond</first-name>
      <last-name>James</last-name>
    </name>
    <street>1234 Main Street</street>
    <city>LA</city>
    <state>WI</state>
    <zip>48392</zip>
  </address>
</addressbook>

File: Transform.xslt

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

  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:apply-templates select="addressbook/address">
      <xsl:sort select="name/last-name"/>
      <xsl:sort select="name/first-name"/>
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="address">
    <xsl:if test="name/title">
      <xsl:value-of select="name/title"/>
      <xsl:text> </xsl:text>
    </xsl:if>
    <xsl:value-of select="name/first-name"/>
    <xsl:text> </xsl:text>
    <xsl:value-of select="name/last-name"/>
    <xsl:text>&#xA;</xsl:text>
    <xsl:value-of select="street"/>
    <xsl:text>&#xA;</xsl:text>
    <xsl:value-of select="city"/>
    <xsl:text>, </xsl:text>
    <xsl:value-of select="state"/>
    <xsl:text>  </xsl:text>
    <xsl:value-of select="zip"/>
    <xsl:text>&#xA;</xsl:text>
    <xsl:text>&#xA;</xsl:text>
  </xsl:template>

</xsl:stylesheet>

Output:

Mr. Bond James
1234 Main Street
LA, WI  48392








4.1.axis
4.1.1.Modeling XML Documents with Axis
4.1.2.All axes were used in this example
4.1.3.select element by index
4.1.4.Decendents of
4.1.5.Check current element value, the output
4.1.6.match element by name
4.1.7.Element level matching
4.1.8.Math calculation with current value
4.1.9.If an element has a child
4.1.10.If one element has at least one child element
4.1.11.If an element has more than 3 child elements
4.1.12.match="@*|node()"
4.1.13.select dot for value-of
4.1.14.* for level
4.1.15.If element has value
4.1.16.selects only elements which occurs first in each level