This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: position of first empty element which is child of nodes p...
- To: Brennan dot OShea at alltel dot com
- Subject: [xsl] Re: position of first empty element which is child of nodes p...
- From: Dimitre Novatchev <dnovatchev at yahoo dot com>
- Date: Fri, 16 Feb 2001 22:54:38 -0800 (PST)
- Cc: xsl-list at lists dot mulberrytech dot com
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hi Brennan,
> And I want to be able to get the position of the first empty "<BdId>" element --
> ("3" in the XML above).
No, "the position of the first empty "<BdId>" element" is 1.
What is 3 is:
The position (in the list of the "Entry" children of "TRANSACTION") of the first "Entry" element,
which has an "empty" "BdId" child.
The following XPath expression will return this (no need for an xsl:for-each):
count((/TRANSACTION/Entry[BdId and string-length(BdId )=0])[1]/preceding-sibling::Entry) + 1
Dimitre.
Brennan OShea wrote:
Subject: position of first empty element which is child of nodes processed by
"for-each"
I have the following XML:
<TRANSACTION>
<Entry Index="1">
<BdId>487</BdId>
</Entry>
<Entry Index="2">
<BdId>798</BdId>
</Entry>
<Entry Index="3">
<BdId/>
</Entry>
<Entry Index="4">
<BdId/>
</Entry>
<Entry Index="5">
<BdId/>
</Entry>
</TRANSACTION>
and the following XSL:
<xsl:variable name="Num">
<xsl:for-each select="TRANSACTION/Entry">
<xsl:choose>
<xsl:when test="string-length(./BdId) = 0">
<xsl:value-of select="position()"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
And I want to be able to get the position of the first empty "<BdId>" element --
("3" in the XML above). In the XSL above "Num" is set to "345" since I cannot
break out of the for-each loop when the empty <BdId> is encountered. I saw a
way to do this on the FAQ when what is being tested is an "attribute" of what is
being iterated through but not a child.
Any help will be greatly appreciated.
Brennan
__________________________________________________
Do You Yahoo!?
Get personalized email addresses from Yahoo! Mail - only $35
a year! http://personal.mail.yahoo.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list