xsl-list
[Top] [All Lists]

Re: Omitting node within For-Each in Merge

2003-12-07 22:50:28

"JCS" <subscriber(_at_)pezagency(_dot_)com> wrote in message
news:BBFA426C(_dot_)1055%subscriber(_at_)pezagency(_dot_)com(_dot_)(_dot_)(_dot_)
Hi everyone,

The answer to this problem may be as simple as finding my sunglasses
perched
on my head, but I'm having trouble dealing with a simple concept. I've
looked in the archives and around the net but have come up blank.

I'm merging two documents and matching a common element with a variable.
But
how do I exclude or omit redundant data?

My XML document A:
<level>
    <level>10</level>
    <data>foo</data>
    <more_data>bar<more_data>
</level>

My XML document B:

<row>
    <level>10</level>
    <foo_data>foodata</foo_data>
    <bar_data>bar_data</bar_data>
</row>

Output desired:

<merge>
    <level>10</level>
    <data>foo</data>
    <more_data>bar<more_data>
    <foo_data>foodata</foo_data>
    <bar_data>bar_data</bar_data>level>10>
</merge>


My current XSL:

<xsl:variable name="merge" select="document('merge.xml')"/>

<xsl:template match="/">

<merge>
    <xsl:for-each select="//level/level">
        <xsl:variable name="level">
            <xsl:value-of select="text()"/>
        </xsl:variable>
        <xsl:copy-of select="../child::*"/>
        <xsl:copy-of select="$merge//row[Level=$level]/*"/>
    </xsl:for-each>
</merge>

Because I'm asking it to select all the children of <row> I get the
<level>
element output again, I want to omit this. Is there a special way to
filter/omit nodes without suppressing the output with templates? i.e.
Specify to select all children nodes EXCEPT <level>? This is where I get
stuck for some reason.

Yes, instead of:

        <xsl:copy-of select="$merge//row[Level=$level]/*"/>

use:

         <xsl:copy-of
select="$merge//row[level=$level]/*[not(self::level)]"/>

In the above xsl instruction you have one additional error -- there isn't
any "Level" element in the code you showed us -- should be "level".



=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL




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



<Prev in Thread] Current Thread [Next in Thread>