RE: [xsl] Attempting *not* to copy certain nodes

Subject: RE: [xsl] Attempting *not* to copy certain nodes
From: "Andreas L. Delmelle" <a_l.delmelle@xxxxxxxxxx>
Date: Sun, 11 Jan 2004 20:50:22 +0100
> -----Original Message-----
> From: 3rett 3onfield
<snip />
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/>
> <xsl:template match="Root">
>     <xsl:apply-templates select="MapSecuritiesResult"/>
> </xsl:template>
>

Two ways to correct this here:

- either apply-templates selecting 'MapSecuritiesResult/Security'
- insert a new template matching 'MapSecuritiesResult' and fire templates
from there

In the first case, you can select the desired nodes at once like

<xsl:apply-templates
select="MapSecuritiesResult/Security[Outcome='Success']" />

> <xsl:template match="Security">
>     <xsl:copy>
>        <xsl:apply-templates select="Outcome[Success]"/>

Then you can replace this by:
         <xsl:apply-templates />

But if you want the child elements to be output as XML elements you'll have
to define matching copy-templates for all child nodes, or they'll simply be
output as text nodes in the result.

Alternately, define the template as:

<xsl:template match="Security">
  <xsl:copy-of select="." />
</xsl:template>

Which will simply copy the matching Security nodes to the result document.


Hope this helps!

Cheers,

Andreas


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread