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

Re: document() loops

Subject: Re: document() loops
From: "Laura Jenkins" <xsl_list@xxxxxxxxxxx>
Date: Fri, 13 Sep 2002 13:10:40 +0000
laura jenkins
Sorry if i am dragging it a bit too much,
but,
<xsl:for-each select="document(univ-xml[1])/university-records/univ-ids/univ">
<xsl:value-of select="position()"/>
<br/>
<xsl:value-of select="name"/>
<hr/>
</xsl:for-each>
works fine .. iterates through the nodes..and gets the data from the xml file at position1 ie., univ-xml1.. perfect!!
but when i try to iterate through other XML files WITHIN the above for-each, nothin shows up..
example.
<xsl:template match="univ-xml-list">
<first-xml>
<xsl:for-each select="document(univ-xml[1])/university-records/univ-ids/univ">
<xsl:element name= "univ{position()}">
<xsl:value-of select="name"/>
</xsl:element>
<xsl:if test= "position() = last()">
<second-xml>
<xsl:for-each select="document(univ-xml[2])/university-records/univ-ids/univ">
<!-- TO ITERATE THROUGH THE 2nd XML -->
<xsl:element name= "univ{position()}">
<xsl:value-of select="name"/>
</xsl:element>
</xsl:for-each>
</second-xml>
</xsl:if>
</xsl:for-each>
</first-xml>
</xsl:template>


I was expecting to get a result like..
<?xml version="1.0" encoding="UTF-16"?>
<first-xml>
	<univ1>Kansas State University</univ1>
	<univ2>Florida Atlantic University</univ2>
	<univ3> Mississipi State University</univ3>
	<univ4>Ohio State University</univ4>
	<second-xml>
		<univ1>Ohio State University</univ1>
		<univ2>Wisconsin state University</univ2>
		<univ3> Rensellar polytechnic Institute </univ3>
		<univ4> Mississipi State University</univ4>
	</second-xml>
</first-xml>

but what prints out is..
<first-xml>
	<univ1>Kansas State University</univ1>
	<univ2>Florida Atlantic University</univ2>
	<univ3> Mississipi State University</univ3>
	<univ4>Ohio State University</univ4>
	<second-xml></second-xml>
</first-xml>

am i wrong anywhere ? if yes then what has to be done to get the result i was expecting.. this might probably lead me towards what i want..

thanks
From: David Carlisle <davidc@xxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
CC: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  document() loops

your terminology does not fit well with that of XSLT so I am having to
guess what you mean. for-each iterates over the set of nodes supplied,
these can come from any number of files: you just have to select the
appropriate nodes.

Perhaps you would be better to apply-templates rather than do a for->each
if you want to traverse into the file structure.

But otherwise, as I think i said before, something like

<xsl:for-each select="univ-xml">
>stuff from <xsl:value-of select="."/>
 ><xsl:for-each select="document(.)/university-records/*">
>  iterate over all the children of university-records in this file...




From: "Laura Jenkins" <xsl_list@xxxxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  document() loops
Date: Fri, 13 Sep 2002 11:21:43 +0000

oh ic what u mean.. then in such a case , how do we run a for loop for an imported xml file???
for.example
if i get the locations from running a for-each to mainxml.xml
and get hold of the first univ-xml's name..
<xsl:for-each select="document(/univ-xml-list/univ-xml)">
<xsl:variable name = "external-xml" select ="document(.)"/>
</xsl:for-each>


Now is there a way to run a for-each for this external xml file??
so that i get hold of EACH ELEMENT in the External XML?? and get hold of their properties like name() position() etc??



From: David Carlisle <davidc@xxxxxxxxx>
Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
CC: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  document() loops
Date: Fri, 13 Sep 2002 10:19:21 +0100

  <xsl:for-each select="document(/univ-xml-list/univ-xml[1])">
  <xsl:variable name = "element-name" select="name(.)"/>
  <xsl:element name="$element-name">


</xsl:element> </xsl:for-each> this will create all the elements that are in the first elements..

No it won't as I said before that for-each is iterating over a single node
so it will only create one element, with name equal to teh name of teh
node selected in the xsl:for-each select=" however that node is a
document node, so has name "" so the xsl:eleemnt should generate an
error thatyou are trying to generate an element with an invalid name,
"".


David


_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.

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




_________________________________________________________________
Send and receive Hotmail on your mobile device: http://mobile.msn.com


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




_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com


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



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.