Hi Paul,
At 01:17 PM 3/2/2005, you wrote:
I need to find out if a block element that I process is the first one with
respect to its ancester S1, S2 or S3 elements. The hierarchy looks something
like this:
<root>
<S1>
<block> <<
<S2>
<block> <<
<block>
<S3>
<body>
<block> <<
<p>
<block>
</body>
</S3>
</S2>
</S1>
</root>
I have tried:
test=". = ancestor::S3//block[1] or . = ancestor::S2//block[1] or .
= ancestor::S1//block[1]"
But this slows down processing enormously.
Yes, it'll be slow (it does some heavy-duty tree traversal) -- and it won't
work, either. You can't test node identity with the "=" operator: it
compares string values.
"not(preceding-sibling::block)" will return true if the current node has no
preceding sibling blocks. Is your requirement different from this, and if
so, how?
For example, when you have
<S3>
<block/>
<body>
<block/>
</body>
</S3>
both blocks here pass the test I offered. Should they? (The second is not
"first with respect to its S3 ancestor".) Is your data constrained such
that this isn't a problem?
Cheers,
Wendell
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--