Subject: RE: [xsl] Modify XML using XSL From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 13 Apr 2006 08:35:25 +0100 |
> I need to modify an existing XML using XSL. What the XSL should do is, You've structured the question nicely so it can be translated directly into XSLT: one template rule for each of your three cases. I suspect that when you say "nodes" you mean "elements": if not, change "*" to "node()". > > 1)Copy the existing xml as it is. That's an identity template rule: <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> > 2) Count number of sub nodes under a certain node , if count > is less than > some value (say 2) append another new subnode to that node > for the new XML. <xsl:template match="*[count(*) < 2]"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> <subnode/> </xsl:copy> </xsl:template> > 3) Count number of sub nodes under a certain node , if count > is greater than > some value (say 1) remove the last node from that node for > the new XML. > <xsl:template match="*[count(*) > 1]"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates select="*[position() != last()]"/> </xsl:copy> </xsl:template> Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Modify XML using XSL, Santanu Choudhury | Thread | RE: [xsl] Determining the context n, Allison Bloodworth |
[xsl] Modify XML using XSL, Santanu Choudhury | Date | Re: [xsl] Modify XML using XSL, Santanu Choudhury |
Month |