David,
I have a bit of a problem making this solution work properly: I have two
questions:
1) According to your suggestion, I have tried the following XSL
I have made a demo XML file for a better understanding of the problem:
<tree>
<fruit ID="111">
<mango ID="333">
<color>Yellow</color>
</mango>
<orange ID="222">
<color>orange</color>
</orange>
</fruit>
<fruit_adjustment>
<color>green</color>
<Steps>111,333</Steps>
</fruit_adjustment>
</tree>
The idea is to check <Steps> and see which fruit needs a new color. In
this example it is the mango; Its color should be adjusted to Green.
The expected output should be
<tree>
<fruit ID="111">
<mango ID="333">
<color>green</color>
</mango>
<orange ID="222">
<color>orange</color>
</orange>
</fruit>
</tree>
How do I have to proceed? I have tried this XSL below just to get an
idea, however instead I get this output:
<?xml version="1.0" encoding="utf-8"?>Yelloworangegreen
Which doesn't give me any clue...
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8"
indent="yes"/>
<xsl:key name="ids" match="*" use="@ID"/>
<xsl:template match="Steps">
<xsl:variable name="ids" select="tokenize(.,',\s*')"/>
<xsl:apply-templates mode="step"
select="key('ids',$ids[1])[1]">
<xsl:with-param name="ids"
select="$ids[position()!=1]"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template mode="step" match="*">
<xsl:param name="ids"/>
<xsl:apply-templates mode="step"
select="key('ids',$ids[1],.)[1]">
<xsl:with-param name="ids"
select="$ids[position()!=1]"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
2) I don't know if the thing above is possible at all, but even if so,
XML Mapping seems to be a bit slow, so I though as an alternative
solution, I could produce the <Steps> with a proper XPATH like this:
<tree>
<fruit ID="111">
<mango ID="333">
<color>Yellow</color>
</mango>
<orange ID="222">
<color>orange</color>
</orange>
</fruit>
<fruit_adjustment>
<color>green</color>
<Steps>//*[(_at_)ID='111']//*[(_at_)ID='333']</Steps>
</fruit_adjustment>
</tree>
Would I be then able to copy the <fruit> element and all its children
over and find only the fruit that needs a color change (according to the
XPath in <Steps>) and apply the color change?
Many Thanks,
Houman
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--