xsl-list
[Top] [All Lists]

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

2017-04-12 16:30:23
If only section elements can follow intro you can also do:

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

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(_dot_)honnen(_at_)gmx(_dot_)de" 
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:

    On 12.04.2017 23:06, Rick Quatro rick(_at_)rickquatro(_dot_)com 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.
    
    
    
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>