[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

Subject: Re: Getting text and non-block nodes before any block nodes
From: "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 13 Sep 2014 00:09:48 -0000
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()[. &lt;&lt; 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

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.