Subject: RE: [xsl] get the first of the following with Attribute equals From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Tue, 4 Feb 2003 17:32:12 -0000 |
The trick here is following-sibling::paragraphe[generate-id(preceding-sibling::title[1]) = generate-id(current())] That is, select those following paragraphs whose immediately preceding title is the node you are currently at. In XSLT 2.0 you can use <xsl:for-each-group select="*" group-starting-with="title"> Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > Cedric Claus > Sent: 04 February 2003 15:57 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] get the first of the following with Attribute equals > > > Hi, I have the following XML: > > <document xmlns:fo="http://www.w3.org/1999/XSL/Format"> > <elements> > <element type="title" position="1">text1</element> > <element type="paragraphe" position="2">text2</element> > <element type="paragraphe" position="3">text3</element> > <element type="title" position="4">text4</element> > <element type="paragraphe" position="5">text5</element> > <element type="paragraphe" position="6">text6</element> > <element type="title" position="7">text7</element> > <element type="paragraphe" position="9">text9</element> > <element type="paragraphe" position="10">text10</element> > <element type="title" position="11">text11</element> > <element type="paragraphe" position="12">text12</element> > <element type="paragraphe" position="13">text13</element> > </elements> > </document> > > ---------------XSL-------------- > > xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:fo="http://www.w3.org/1999/XSL/Format"> > <xsl:template match="/"> > <document> > <xsl:apply-templates/> > </document> > </xsl:template> > <xsl:template match="document/elements/element"> > > <xsl:if test="./@type='title'"> > <element> > <group> > <title> > <xsl:value-of select="."/> > </title> > <xsl:for-each > select="following::element[@type='paragraphe']"> > <xsl:if test="./@position < > following::element [@type='title']/@position"> > <paragraphe> > <xsl:value-of select="."/> > </paragraphe> > </xsl:if> > </xsl:for-each> > <xsl:if > test="not(following-sibling::element[@type='title'])"> > <xsl:for-each > select="following::element[@type='paragraphe']"> > <paragraphe> > <xsl:value-of select="."/> > </paragraphe> > </xsl:for-each> > </xsl:if> > </group> > </element> > </xsl:if> > </xsl:template> > </xsl:stylesheet> > > I want to have only the *first *following with the attribute > Type = title or with my test : <xsl:if test="./@position < > following::element > [@type='title']/@position"> I have : <document > xmlns:fo="http://www.w3.org/1999/XSL/Format"> > <element> > <group> > <title>text1</title> > <paragraphe>text2</paragraphe> > <paragraphe>text3</paragraphe> > <paragraphe>text5</paragraphe> > <paragraphe>text6</paragraphe> > <paragraphe>text9</paragraphe> > <paragraphe>text10</paragraphe> > </group> > </element> > ... > What I want is only text2 and text 3, I don't want text5 --> > text10 with > this title > > Any Idea? I become nuts.... > > > > > > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] get the first of the fol, Wendell Piez | Thread | RE: [xsl] get the first of the fol, cknell |
RE: [xsl] is XSLT 2.0 implementable, Michael Kay | Date | Re: [xsl] is XSLT 2.0 implementable, Jeff Kenton |
Month |