File: Data.xml
<?xml version="1.0"?>
<Employees>
<Person>
<FirstName>A</FirstName>
<LastName>B</LastName>
<DateOfBirth>2008-12-12</DateOfBirth>
</Person>
<Person>
<FirstName>C</FirstName>
<LastName>D</LastName>
<DateOfBirth>2008-11-11</DateOfBirth>
</Person>
<Person>
<FirstName>E</FirstName>
<LastName>F</LastName>
<DateOfBirth>2008-10-10</DateOfBirth>
</Person>
</Employees>
File: Transform.xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>preceding axis.</title>
</head>
<body>
<h3>Preceding axis.</h3>
<xsl:apply-templates
select="/Employees/Person[3]/DateOfBirth" />
</body>
</html>
</xsl:template>
<xsl:template match="DateOfBirth">
<xsl:for-each select="preceding::*">
<paragraph>
<xsl:value-of select="name(.)" />
which contains the text "
<xsl:value-of select="." />
".
</paragraph>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Output:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>preceding axis.</title>
</head>
<body>
<h3>Preceding axis.</h3>
<paragraph>Person
which contains the text "
A
B
2008-12-12
".
</paragraph>
<paragraph>FirstName
which contains the text "
A
".
</paragraph>
<paragraph>LastName
which contains the text "
B
".
</paragraph>
<paragraph>DateOfBirth
which contains the text "
2008-12-12
".
</paragraph>
<paragraph>Person
which contains the text "
C
D
2008-11-11
".
</paragraph>
<paragraph>FirstName
which contains the text "
C
".
</paragraph>
<paragraph>LastName
which contains the text "
D
".
</paragraph>
<paragraph>DateOfBirth
which contains the text "
2008-11-11
".
</paragraph>
<paragraph>FirstName
which contains the text "
E
".
</paragraph>
<paragraph>LastName
which contains the text "
F
".
</paragraph>
</body>
</html>