Subject: Re: [xsl] Select everything up to and including the first <section> From: "Terry Badger terry_badger@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 12 Apr 2017 22:12:49 -0000 |
How about for-each-groups? <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> B <xsl:template match="chapter"> B B <xsl:result-document href="quatro-01-out.xml"> B B B <xsl:copy> B B B B <xsl:for-each-group select="*" group-ending-with="section"> B B B B B <xsl:if test="position() = 1"> B B B B B B <xsl:copy-of select="current-group()"/> B B B B B </xsl:if> B B B B </xsl:for-each-group> B B B </xsl:copy> B B </xsl:result-document> B </xsl:template> </xsl:stylesheet> output<?xml version="1.0" encoding="UTF-8"?> <chapter> <title>Title</title> <intro> <p>Intro</p> </intro> <section/> </chapter> Terry Badger On Wednesday, April 12, 2017 5:58 PM, "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: I've always regretted that we don't have operators "until" "until-and-including". But with 3.0 you can implement them as higher-order-functions: declare function until-and-including ($seq, $condition) { B head($seq), until-and-including(tail($seq)[$condition(head($seq))], $condition) } return up-to-and-including(*, function($x){ boolean(self::section) } Michael Kay Saxonica > On 12 Apr 2017, at 22:06, Rick Quatro rick@xxxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Hi All, > > Here is my xml: > > <?xml version="1.0" encoding="UTF-8"?> > <chapter> >B B <title>Title</title> >B B <intro> >B B B B <p>Intro</p> >B B </intro> >B B <section></section> >B B <section></section> >B B <section></section> > </chapter> > > My context node is the <chapter> element. I want to select everything up to > and including the first <section>. I am trying this > > > //chapter/*[not(self::section[position()>1])] > > but it selects all of the children of chapter. In the above example, I am > trying to select all of the children except the last two sections. Thank you > in advance. > > Rick > > Rick Quatro > Carmen Publishing Inc. > rick@xxxxxxxxxxxxxxx > 585-366-4017
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Select everything up to a, Michael Kay mike@xxx | Thread | Re: [xsl] Select everything up to a, Mukul Gandhi gandhi. |
Re: [xsl] Select everything up to a, Michael Kay mike@xxx | Date | Re: [xsl] Select everything up to a, Mukul Gandhi gandhi. |
Month |