When the context node is an element, use the attribute::
axis to locate that element's attributes. The attribute::
axis can be used only with element-type context nodes, and it locates attributes only.
To display a table of all employees' IDs and dates of employment, you could use three XSLT template rules, one that employs the attribute::
axis. This is shown in the XSLT sample file below.
The first template rule sets up the body of the result tree, including a table and a row of table headers. The second template rule suppresses the output of all element and text nodes, note the empty <xsl:template>
element.
The third template rule makes an exception for the second, which is to process all <name>
elements. The template placed into the result tree by this rule consists of a table row with four cells:
<name>
elementempID
attributeempdate
attributeXML File (orgchart.xml)
Use orgchart.xml (in Sample XML File for Navigating XPath Axes) and edit its href
attribute to refer to orgchart-attr.xsl.
XSLT File (orgchart-attr.xsl)
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <!-- suppress text nodes not covered in subsequent template rule --> <xsl:template match="text()"/> <xsl:template match="/"> <html> <head><title>Employee Info</title></head> <body> <table border="1"> <tr> <th>Name</th> <th>Emp ID</th> <th>Empl Date</th> </tr> <xsl:apply-templates /> </table> </body> </html> </xsl:template> <xsl:template match="*/text()"/> <xsl:template match="name"> <tr> <td><xsl:value-of select="."/></td> <td><xsl:value-of select="parent::*/attribute::empID
"/></td> <td><xsl:value-of select="parent::*/attribute::empdate
"/></td> </tr> </xsl:template> </xsl:stylesheet>
Formatted Output