[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: logic for writing two nested for-loops given a co

Subject: Re: logic for writing two nested for-loops given a condition
From: Jon Gorman <jonathan.gorman@xxxxxxxxx>
Date: Wed, 27 Apr 2005 09:38:17 -0500
logic in writing
> I have two for loops. The first for loop runs through the first file
> First.xml such that
>
> <xsl:for-each
>
select="document(First.xml)/SubConcepts/SubConcept">.............</xsl:for-ea
ch>
> <!--extract the '@name' value-->
>
> The second for loop is nested within the first loop and is as such
>
> <xsl:for-each
> select="document(Second.xml)/SubConcepts/SubConcept[1]/Value">
> <!--check if contains( '@name=text()' ) -->
>
> What I want to do is look for the '@name' value in the rest of the
> 'document(Second.xml)/SubConcepts/SubConcept' ONLY IF I dont find a
> match in the earlier SubConcept node's Value nodes.

So....I'm a little confused here, but that happens pretty often. I'm
taking a very, very wild stab and figure you are trying to find if an
attribute called name exists in the first xml document and if not go
to the second.

So if that's true I would recommend rewriting your for-each so they
are not nested.  Now if you're trying to find the node that has an
attirbute with a certain bit of text just add a conditional


<xsl:choose>
<xsl:when test="document(First.xml)/SubConcepts/SubConcept/Value/@name">

....do some stuff...
</xsl:when>
<xsl:when test="document(Second.xml)/SubConcepts/SubConcept/Value/@name">
</xsl:when>
...do some stuff...
</xsl:choose>

Of course, if you are working with quite a few xml documents I would
advocate a different approach.  Without knowing more about your
problem I might suggest using a dummy file that contains all the
filenames/paths and using an xsl stylesheet on that.

ie
<files>
<file>first.xml</file>
<file>second.xml</file>
<file>third..xml</file>
</file>

then in your stylesheet have --

<xsl:template match="file">
...
</xsl:template>

where you do the appropriate processing (or modify it so it has a
recursive call that passes a parameter that will halt output once the
appropriate node has been found).


<xsl:for-each>
select="document(First.xml)/SubConcepts/SubConcept">.............</xsl:for-ea
ch>

Jon Gorman

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.