Hi Andreas (and all),
What I have is a really flat XML file. "test-plan" is the bottom level. There
are several hundred of "object" within "test-plan." Each "object" has 30-40 odd
items under it including "objecttext" and the others I mentioned.
However, I will have one or more tables buried throughout the XML. Starting in
one instance of "object" and running for 20-30 objects then ending. So my table
building routine needs to find the related "objecttext"s in that table but not
further instances of tables. I think I can do that by having two tests in the
count command you mention --
count(following::objecttext[.='.0-1.0'])
How would that be written?
count(following::objecttext[.= 'string1' & 'string2']) ??
And once I have the count, I use that in a for-each from '.' to following less
than count, to output the cells?
<xsl:for-each select=". | following::objecttext[position()< <<insert
count command here or a variable??>>]">
^^ or following-sibling??
<xsl:copy-of select="."/>
</xsl:for-each>
Thanks again,
Andrew
ps This makes my old brain hurt... :)
Andrew C. Durston
Smiths Aerospace
Electronic Systems - Grand Rapids
616.241.8715
andrew(_dot_)durston(_at_)smiths-aerospace(_dot_)com
Date: Thu, 15 Apr 2004 20:37:01 +0200
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
From: "Andreas L. Delmelle" <a_l(_dot_)delmelle(_at_)pandora(_dot_)be>
Subject: RE: [xsl] Incrementing position in the tree midstream (Part 2)
Message-ID:
<CIEIIKAKHEBMGMANDDFOMEGOCLAA(_dot_)a_l(_dot_)delmelle(_at_)pandora(_dot_)be>
-----Original Message-----
From: Durston, Andrew (AGRE)
Hi,
<snip />
I am basically getting confused in how to count the occurances
down the chain of siblings (all objecttexts under all objects
under test-plan).
What exactly do you need?
If, while processing an objecttext node (the objecttext matching template or
an encompassing xsl:for-each) you need the number of objecttexts having a
certain content ('.0-1.0'), that would be
count(ancestor::test-plan/object/objecttext[.='.0-1.0'])
for the number of all preceding- or following objecttexts in the document,
this would become
count(preceding::objecttext[.='.0-1.0'])
count(following::objecttext[.='.0-1.0'])
The *-sibling axes return only nodes from the same object parent (my guess
is that this is one of the things causing your confusion?)
xsl:number offers a very interesting and highly configurable alternative...
For all objecttext nodes in the document, no matter what level
<xsl:number count="objecttext[.='.0-1.0']"
format="1. " level="any" />
For all objecttext nodes, starting from the current test-plan (if there are
more than one in the document)
<xsl:number count="objecttext[.='.0-1.0']"
from="test-plan"
format="1. " level="any" />
This should rid you of having to do the counting yourself (in case there are
more than one test-plan in your source document, the XPath needed to feed to
count() will obviously become more complicated..)
Hope this helps!
Cheers,
Andreas
------------------------------
******************************************
The information contained in, or attached to, this e-mail, may contain
confidential information and is intended solely for the use of the individual
or entity to whom they are addressed and may be subject to legal privilege. If
you have received this e-mail in error you should notify the sender immediately
by reply e-mail, delete the message from your system and notify your system
manager. Please do not copy it for any purpose, or disclose its contents to
any other person. The views or opinions presented in this e-mail are solely
those of the author and do not necessarily represent those of the company. The
recipient should check this e-mail and any attachments for the presence of
viruses. The company accepts no liability for any damage caused, directly or
indirectly, by any virus transmitted in this email.
******************************************