At 2010-01-18 01:48 +0100, cvergara(_at_)zedat(_dot_)fu-berlin(_dot_)de wrote:
Hello,
using the information in a subtree of a source document, I would like to
create an element in an arbitrary position in the result document:
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>
...
Is it possible to do this? I didn't find it in the FAQ of things that are
not possible in XSLT.
If yes, how?
It looks like all you are doing is starting the reconstituted A with
a new first child and then processing the original content as is.
An example is below, but I'm guessing I'm missing something from your
description. Your behaviour for <B> would be added to my solution
with a template matching it. BTW, I know you don't have attributes
for <A> but I left handling for that in the solution.
I hope this helps.
. . . . . . . . . . Ken
t:\ftemp>type cristobal.xml
<A>
... <- unknown/variable amount of nodes
<B>
<C attrC="value1"/>
<D attrD="value2"/>
</B>
</A>
t:\ftemp>xslt cristobal.xml cristobal.xsl
<?xml version="1.0" encoding="utf-8"?><A><new_element attrC="value1"
attrD="valu
e2"/>
... <- unknown/variable amount of nodes
<B>
<C attrC="value1"/>
<D attrD="value2"/>
</B>
</A>
t:\ftemp>type cristobal.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<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>
t:\ftemp>
--
UBL and Code List training: Copenhagen, Denmark 2010-02-08/10
XSLT/XQuery/XPath training after http://XMLPrague.cz 2010-03-15/19
XSLT/XQuery/XPath training: San Carlos, California 2010-04-26/30
Vote for your XML training: http://www.CraneSoftwrights.com/s/i/
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Training tools: Comprehensive interactive XSLT/XPath 1.0/2.0 video
Video lesson: http://www.youtube.com/watch?v=PrNjJCh7Ppg&fmt=18
Video overview: http://www.youtube.com/watch?v=VTiodiij6gE&fmt=18
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Male Cancer Awareness Nov'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--