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: Merging two files



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


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