|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: copy XML and add attributes to ancestors of given
[Mac Martine]
> In the example provided I am trying to copy all elements,
> butwhen I find an element where @task='1', I want to give
> all of its ancestors an attribute called 'task' as well.
This will do it. I turned the requirement on its head. Rather than find all the ancestors of an element with an attribute "task='1'", I found all the elements with a descendant with an attribute "task='1'". That made it much easier to do.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template match = "/">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="node()[descendant::node()/@task='1']">
<xsl:copy>
<xsl:attribute name="task" />
<xsl:for-each select="@*">
<xsl:variable name="attrName"><xsl:value-of select="name()" /></xsl:variable>
<xsl:attribute name="{$attrName}"><xsl:value-of select="." /></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>
--
Charles Knell
cknell@xxxxxxxxxx - email
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








