Re: [xsl] Select everything up to and including the first <section>

Subject: Re: [xsl] Select everything up to and including the first <section>
From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Wed, 12 Apr 2017 21:30:19 -0000
If only section elements can follow intro you can also do:

select=b* except (section[preceding-sibling::section])b

This transform:

<?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">

  <xsl:output indent="yes"/>
  <xsl:template match="/">
    <result>
    <xsl:apply-templates/>
    </result>
  </xsl:template>

  <xsl:template match="chapter">
    <xsl:sequence select="* except (section[preceding-sibling::section])"/>
  </xsl:template>
</xsl:stylesheet>

Produces this result:

<result>
   <title>Title</title>
   <intro>
      <p>Intro</p>
  </intro>
   <section/>
</result>

Cheers,

Eliot

--
Eliot Kimber
http://contrext.com



On 4/12/17, 4:19 PM, "Martin Honnen martin.honnen@xxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

    On 12.04.2017 23:06, Rick Quatro rick@xxxxxxxxxxxxxx wrote:
    > Hi All,
    >
    > Here is my xml:
    >
    > <?xml version="1.0" encoding="UTF-8"?>
    > <chapter>
    >      <title>Title</title>
    >      <intro>
    >          <p>Intro</p>
    >      </intro>
    >      <section></section>
    >      <section></section>
    >      <section></section>
    > </chapter>
    >
    > My context node is the <chapter> element. I want to select everything up
to
    > and including the first <section>.


    Then one way is
       section[1]/(preceding-sibling::node(), .)
    in XSLT 2.0.

Current Thread