This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: questions?
- To: xsl-list at lists dot mulberrytech dot com
- Subject: RE: [xsl] questions?
- From: Jarno dot Elovirta at nokia dot com
- Date: Tue, 18 Sep 2001 07:46:32 +0300
- Reply-To: xsl-list at lists dot mulberrytech dot com
> If i have a operation like "insert node n as the i th child
> of node p" ,
> what will be the the xsl?
For XSLT, you should rephrase the question to something like "copy the
entire source tree and create a node n as the i th child of node p", as
you're not modifying the original document.
> for example
> <book>
> <author>P.G.Wodehouse</author>
> <name>Good Morning Jeeves</name>
> <price>20</price>
> </book>
>
> if i add the node <review></review> as the 3rd child of book
> then the xsl
> will be
>
> <book>
> <author>P.G.Wodehouse</author>
> <name>Good Morning Jeeves</name>
> <review>Some comments here</review>
> <price>20</price>
> </book>
>
> how will the xsl for doing this look like?
If the whitespace between the elements is insignigicant, then
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="book">
<xsl:copy>
<xsl:apply-templates select="*[position() < 3]"/>
<review>Some comments here</review>
<xsl:apply-templates select="*[position() > 2]"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Would be one way of doing it.
Jarno
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list