File: Data.xml
<?xml version="1.0" encoding="US-ASCII"?>
<state name="Rhode Island">
<county>Bristol</county>
<county>Kent</county>
<county>Newport</county>
<county>Providence</county>
<county>Washington</county>
</state>
File: Transform.xslt
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/">
<county state="{state/@name}">
<xsl:apply-templates select="state" />
</county>
</xsl:template>
<xsl:template match="state">
<xsl:apply-templates select="county" />
</xsl:template>
<xsl:template match="county[starts-with(.,'K')]" priority="2">
<first-match>
<xsl:apply-templates />
</first-match>
</xsl:template>
<xsl:template match="county[2]" priority="1">
<last-match>
<xsl:apply-templates />
</last-match>
</xsl:template>
<xsl:template match="county">
<name>
<xsl:apply-templates />
</name>
</xsl:template>
</xsl:stylesheet>
Output:
<?xml version="1.0" encoding="UTF-8"?>
<county state="Rhode Island">
<name>Bristol</name>
<first-match>Kent</first-match>
<name>Newport</name>
<name>Providence</name>
<name>Washington</name>
</county>
|