You could frame it as follows:
For each <line> containing "A", output the line and following siblings
having the same number of following siblings containing "B".
<xsl:for-each select="/lines/line[contains(., 'A')]">
<xsl:variable name="b-count"
select="count(following-sibling::*[contains(., 'B')])"/>
<xsl:copy-of select="."/>
<xsl:copy-of
select="following-sibling::*[count(following-sibling::*[contains(.,
'B')]) = $b-count]"/>
</xsl:for-each>
-Brandon :)
On Fri, May 6, 2011 at 5:13 AM, Hermann Stamm-Wilbrandt
<STAMMW(_at_)de(_dot_)ibm(_dot_)com> wrote:
Hello,
I know that this is basic but I cannot get it done correctly.
Input:
<lines>
<line></line>
<line>A1</line>
<line>1</line>
<line>B1</line>
<line></line>
<line>A2</line>
<line>2</line>
<line>2</line>
<line>2</line>
<line>B2</line>
<line></line>
<line></line>
</lines>
Intended output (blockwise, start at A, all including next B):
<line>A1</line>
<line>1</line>
<line>A2</line>
<line>2</line>
<line>2</line>
<line>2</line>
This
<xsl:for-each select="/lines/line[contains(.,'A')]">
<xsl:copy-of select="."/>
</xsl:for-each>
gives
<line>A1</line>
<line>A2</line>
And this output is too much (double output of 2nd block)
$ xsltproc y.xsl lines.xml | tidy -q -xml
<line>A1</line>
<line>1</line>
<line />
<line>A2</line>
<line>2</line>
<line>2</line>
<line>2</line>
<line />
<line />
<line>A2</line>
<line>2</line>
<line>2</line>
<line>2</line>
<line />
<line />
$ cat y.xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:for-each select="/lines/line[contains(.,'A')]">
<xsl:copy-of select="."/>
<xsl:copy-of select="following-sibling::*[not(contains(.,'B'))]"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
$
I tried making use of "preceding-sibling::*" at different places without
success sofar.
Any help is appreciated.
Mit besten Gruessen / Best wishes,
Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
Fixpack team lead
WebSphere DataPower SOA Appliances
https://www.ibm.com/developerworks/mydeveloperworks/blogs/HermannSW/
----------------------------------------------------------------------
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--