This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

RE: questions?


> 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() &lt; 3]"/>
    <review>Some comments here</review>
    <xsl:apply-templates select="*[position() &gt; 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]