[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Getting text and non-block nodes before any block
At 2014-09-12 21:50 +0000, Eliot Kimber ekimber@xxxxxxxxxxxx wrote:
I think this is an FAQ but my situation may be slightly different. In any
case, if it's an FAQ, maybe my asking it will help.
This is in a DITA context, where I can know for any element whether it is
a block or not a block (because in DITA all elements have a base type that
is inherently block or not block).
I have the situation where a wrapper element may contain any combination
of text, non-block elements, or block elements.
I need to find either all the nodes up to the first block or determine
that there are none and get the first block.
I think this will work:
select="node()[. << current()/*[lc:isBlock(.)][1]"
But it is XSLT 2.0 only.
For XSLT 1.0 I might do something like:
select="node()[generate-id(following-sibling::*[lc:isBlock(.)][1]) =
generate-id(current()/*[lc:isBlock(.)][1])]"/>
Where the lc:isBlock() function returns true if the element provided is a
DITA block element.
This seems to pass all my tests but I'm wondering if there's a better way
to make this check?
I also realized that I can use the $textBeforeBlocks variable to then
process any remaining blocks (because I will have already output the text
before blocks):
<xsl:when test="$hasTextBeforeBlocks">
<xsl:apply-templates select="node() except($textBeforeBlocks)"/>
</xsl:when>
That includes the block element ... you might try using ">>" in a way
similar to how I used "<<" above if you didn't want to include the
block element itself.
I hope this helps!
. . . . . . Ken
--
Contact us for world-wide XML consulting and instructor-led training |
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/video.htm |
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ |
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx |
Google+ profile: http://plus.google.com/+GKenHolman-Crane/about |
Legal business disclaimers: http://www.CraneSoftwrights.com/legal |
---
This email is free from viruses and malware because avast! Antivirus protection is active.
http://www.avast.com
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|