full</TH><td>abbreviated</TH> |
<TR><TD>parent::*/attribute::id</TD><TD>../@id</TD></TR><TR><TD>a2</TD><TD>a2</TD></TR></TABLE></source>
List the elements in an xml document
<source lang="xml">
File: Data.xml
<?xml version="1.0"?>
<list xml:lang="en">
<title>title 1</title>
<listitem>item 1</listitem>
<listitem>item 2</listitem>
<listitem>item 3</listitem>
<listitem xml:lang="sw">item 4</listitem>
<listitem xml:lang="en-gb">item 5</listitem>
<listitem xml:lang="zu">item 6</listitem>
<listitem xml:lang="jz">item 7</listitem>
</list>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of>
<xsl:text>Here is a list of the </xsl:text>
<xsl:value-of select="count(//*)"/>
<xsl:text> elements in your document:
</xsl:text>
</xsl:value-of>
<xsl:value-of select="//*/name()" separator="
"/>
</xsl:template>
</xsl:stylesheet>
Output:
Here is a list of the 9 elements in your document:
list
title
listitem
listitem
listitem
listitem
listitem
listitem
listitem</source>
template match="/"
<source lang="xml">
File: Data.xml
<?xml version="1.0"?>
<list xml:lang="en">
<title>title 1</title>
<listitem>item 1</listitem>
<listitem>item 2</listitem>
<listitem>item 3</listitem>
<listitem xml:lang="sw">item 4</listitem>
<listitem xml:lang="en-gb">item 5</listitem>
<listitem xml:lang="zu">item 6</listitem>
<listitem xml:lang="jz">item 7</listitem>
</list>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><list xml:lang="en">
<title>title 1</title>
<listitem>item 1</listitem>
<listitem>item 2</listitem>
<listitem>item 3</listitem>
<listitem xml:lang="sw">item 4</listitem>
<listitem xml:lang="en-gb">item 5</listitem>
<listitem xml:lang="zu">item 6</listitem>
<listitem xml:lang="jz">item 7</listitem>
</list></source>
template match="*" (asterisk)
<source lang="xml">
File: Data.xml
<?xml version="1.0"?>
<list xml:lang="en">
<title>title 1</title>
<listitem>item 1</listitem>
<listitem>item 2</listitem>
<listitem>item 3</listitem>
<listitem xml:lang="sw">item 4</listitem>
<listitem xml:lang="en-gb">item 5</listitem>
<listitem xml:lang="zu">item 6</listitem>
<listitem xml:lang="jz">item 7</listitem>
</list>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="*">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><list/></source>
template match="brand|name|units"
<source lang="xml">
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<report month="8" year="2006">
<title>Chocolate bar sales</title>
<brand>
<name>Lindt</name>
<units>27408</units>
</brand>
<brand>
<name>Callebaut</name>
<units>8203</units>
</brand>
</report>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="report">
<report>
<xsl:apply-templates select="brand"/>
</report>
</xsl:template>
<xsl:template match="brand|name|units">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?><report><brand>
<name>Lindt</name>
<units>27408</units>
</brand><brand>
<name>Callebaut</name>
<units>8203</units>
</brand></report></source>
value-of select="."
<source lang="xml">
File: Data.xml
<?xml version="1.0"?>
<greeting>
Hello, World!
</greeting>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="greeting"/>
</xsl:template>
<xsl:template match="greeting">
<html>
<body>
<xsl:value-of select="."/>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Output:
<html>
<body>
Hello, World!
</body>
</html></source>
Wildcard "*" selects all possibilities
<source lang="xml">
File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<employee>
<firstName>Joe</firstName>
<surname>Smith</surname>
</employee>
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:text>[template: </xsl:text>
<xsl:value-of select="name()"/>
<xsl:text> outputs </xsl:text>
<xsl:apply-templates/>
<xsl:text> ]</xsl:text>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?>[template: employee outputs
[template: firstName outputs Joe ]
[template: surname outputs Smith ]
]
</source>