This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Merging two files
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] Merging two files
- From: mjyoungblut at mmm dot com
- Date: Mon, 12 Feb 2001 12:58:04 -0600
- Reply-To: xsl-list at lists dot mulberrytech dot com
Mr. Becker,
I used your suggestion - changing
$YESTERDAY_PRODUCT//NodeID[not
($YESTERDAY_PRODUCT//NodeID=NodeID)]
to
not($YESTERDAY_PRODUCT//NodeID
[$YESTERDAY_PRODUCT//NodeID=NodeID]).
Now my problem is that I am getting multiples of the node that exists in
the secondary file, but not in the primary file. I am getting these
results because I am running inside a template for the first file. Thus,
each iteration produces another node with the same id in the output.
Without having to decare a template for the second file, is there a way
that I can only get one of the results inserted into the output?
Thanks again,
Matt Youngblut
Oliver Becker <obecker@informatik.hu-berlin.de> on 02/12/2001 10:35:59 AM
Please respond to xsl-list@lists.mulberrytech.com
To: xsl-list@lists.mulberrytech.com
cc: (bcc: Matthew J. Youngblut/US-Corporate/3M/US)
Subject: Re: [xsl] Merging two files
Hi Matt,
> However, I am unable to get the correct <NodeID>s from the secondary
> file that don't exist in the primary file. Currently, I am using
something
> like the following:
>
> <xsl:for-each select = "$YESTERDAY_PRODUCT">
> <xsl:if test = "$YESTERDAY_PRODUCT//NodeID[not
> ($YESTERDAY_PRODUCT//NodeID=NodeID)]">
> <Product>
> <xsl:attribute name="Action">D</xsl:attribute>
>
> <xsl:copy-of select="*"/>
> </Product>
> </xsl:if>
> </xsl:for-each>
>
> where $YESTERDAY_PRODUCT is a path in the secondary file. This
> currently gives me multiple copies of everything in the second file.
This expression
$YESTERDAY_PRODUCT//NodeID[not($YESTERDAY_PRODUCT//NodeID=NodeID)]
selects all NodeID nodes from your file, for which another NodeID node
exists,
which in turn has not the same string value. I guess this is true for every
NodeID node.
You want
not($YESTERDAY_PRODUCT//NodeID[$YESTERDAY_PRODUCT//NodeID=NodeID])
i.e. if you don't find another node with the same string value then this
node seems to be interesting for you.
BTW, I'm a little bit confused about your xsl:for-each construction.
I believe you should access . or any other relative location path in
your xsl:if, not $YESTERDAY_PRODUCT again.
Cheers,
Oliver
/-------------------------------------------------------------------\
| ob|do Dipl.Inf. Oliver Becker |
| --+-- E-Mail: obecker@informatik.hu-berlin.de |
| op|qo WWW: http://www.informatik.hu-berlin.de/~obecker |
\-------------------------------------------------------------------/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list