|
Subject: Re: [xsl] Creating elements in an arbitrary position in the result document From: cvergara@xxxxxxxxxxxxxxxxxx Date: Mon, 18 Jan 2010 03:55:21 +0100 |
Thank you very much for your answer Ken.
Your code will not solve my problem, because in the template that matches
A I don't know the attribute names and values for attrC, attrD, value1,
and value2. I will find that information in the subtree of B, and B can be
anywhere in the source document. So, I guess the only solution would be to
match B and then write the new nodes right after A, but I am not able to
find documentation on how to do that. But thanks anyways.
I tried this but it didn't work:
<xsl:template match="B">
<xsl:element name="/A/new_element">
<xsl:attribute name="attrC">
<xsl:value-of select="C/attrC"/>
</xsl:attribute>
The same for D
</xsl:element>
</xsl:template>
>>Source:
>><?xml version="1.0"?>
>><A>
>>... <- unknown/variable amount of nodes
>> <B>
>> <C attrC="value1"/>
>> <D attrD="value2"/>
>> </B>
>></A>
>>Result:
>><A>
>> <new_element attrC="value1" attrD="value2"/>
>> ... <- unknown amount of elements in source between A and B
>> <B>
>>...
>
> <xsl:template match="A">
> <xsl:copy>
> <xsl:copy-of select="@*"/>
> <new_element attrC="value1" attrD="value2"/>
> <xsl:apply-templates select="node()"/>
> </xsl:copy>
> </xsl:template>
>
> <xsl:template match="@*|node()"><!--identity for all other nodes-->
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> </xsl:stylesheet>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Creating elements in an a, G. Ken Holman | Thread | Re: [xsl] Creating elements in an a, G. Ken Holman |
| Re: [xsl] Match nodes searching for, Imsieke, Gerrit, le- | Date | Re: [xsl] Creating elements in an a, G. Ken Holman |
| Month |