Subject: Re: [xsl] Getting text and non-block nodes before any block nodes From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 15 Sep 2014 13:30:54 -0000 |
Clearly I need to do a closer reading of the XPATH 2 spec (or maybe buy *and read* Mike Kay's book). How did I not know about the "<<" (node-before) and ">>" (node-after) operators? Cheers, E. bbbbb Eliot Kimber, Owner Contrext, LLC http://contrext.com On 9/12/14, 7:09 PM, "G. Ken Holman g.ken.holman@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Getting text and non-bloc, G. Ken Holman g.ken. | Thread | Re: [xsl] Getting text and non-bloc, Wendell Piez wapiez@ |
Re: [xsl] How to Do Random "Shuffle, Eliot Kimber ekimber | Date | Re: [xsl] Getting text and non-bloc, Wendell Piez wapiez@ |
Month |