The dot "." in XPath expressions provides the context in the current part of the XPath not of the containing template. Compare the xxx and yyy expressions to see the difference.
The zzz example gives a glimpse to the power of XPath expressions. It prints out values of ccc elements which are children of the third bbb elements, but only if the forth bbb element contains a ccc element with the same text value.
|
XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> <xsl:template match="/aaa"> <nnn> <xsl:value-of select="name(.)"/> </nnn> <xxx> <xsl:value-of select="/aaa/bbb[.='B2']/@x"/> </xxx> <yyy> <xsl:value-of select="/aaa/bbb[@x='333']/ccc[.='C2']/@y"/> </yyy> <zzz> <xsl:value-of select="bbb[3]/ccc[. = ../../bbb[4]/ccc]/@y" separator=" - "/> </zzz> </xsl:template> </xsl:stylesheet> |
|
|
XML
<aaa> <bbb x="000">B1</bbb> <bbb x="111">B2</bbb> <bbb x="222"> <ccc y="555">C1</ccc> <ccc y="666">C2</ccc> <ccc y="777">C3</ccc> </bbb> <bbb x="333"> <ccc y="888">C1</ccc> <ccc y="999">C2</ccc> </bbb> </aaa> |
Output
<nnn>aaa</nnn> <xxx>111</xxx> <yyy>999</yyy> <zzz>555 - 666</zzz> |
| Previous chapter: | Modes |
| Next chapter: | Implicit behaviour |
| Previous page: | Dangers of context item . |
| Next page: | Template context in XPath expressions - function current |