Sundar,
Sorry,I put abridged version of my source file in my question. The diff is
that I have multiple tags under BODY node, I need all of them for every <h>
node until the next <h> node:
<html>
<body>
<h>header1</h>
<p>p line</p>
<d>d line</d>
<h>header2</h>
<a>a line</a>
<b>b line</b>
...
</body>
</html>
Thus my xsl with following-sibling expression.
With Sundar's version I will only have the first sibling after <h> for every
<h> node.
I found this template on XSL-list that gives nodes between two nodes with
the same name (200008/msg01102)
<xsl:template match="tag"
<group>
<xsl:copy-of select="
following-sibling::*[generate-id(following-sibling::tag[1])=
generate-id(current()/following-sibling::tag[1])]"/>
</group>
</xsl:template>
But I don't know how to put it to work the right way. My xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="html/body/h">
<ROWSET>
<xsl:for-each select=".">
<ROW>
<HEADER>
<xsl:value-of select="."/>
</HEADER>
<BODY>
<xsl:value-of select="
following-sibling::*[generate-id(following-sibling::html/body/h[1])=
generate-id(current()/following-sibling::html/body/h[1])]"/>
</BODY>
</ROW>
</xsl:for-each>
</ROWSET>
</xsl:template>
</xsl:stylesheet>
gives me the output
<?xml version = '1.0'?>
<ROWSET>
<ROW>
<HEADER>header1</HEADER>
<BODY>p line</BODY>
</ROW>
</ROWSET>
p line
d line
<ROWSET>
<ROW>
<HEADER>header2</HEADER>
<BODY>a line</BODY>
</ROW>
</ROWSET>
a line
b line
instead of what I want:
<?xml version = '1.0'?>
<ROWSET>
<ROW>
<HEADER>header1</HEADER>
<BODY>
p line
d line
</BODY>
</ROW>
<ROW>
<HEADER>header2</HEADER>
<BODY>
a line
b line
</BODY>
</ROW>
</ROWSET>
Thank you.
Anatoliy Smirnov
Oracle Mid-Atlantic Consulting
-----Original Message-----
From: Sundar Shanmugasundaram
[mailto:SSHANMUGASUNDARAM(_at_)selectica(_dot_)com]
Sent: Thursday, May 01, 2003 11:05 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] how to get rid of tag names
USe this xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ROWSET>
<xsl:for-each select="html/body/h">
<ROW>
<HEADER>
<xsl:value-of select="."/>
</HEADER>
<BODY>
<xsl:value-of select="
following-sibling::*[generate-id(following-sibling::html/body/h[1])=
generate-id(current()/following-sibling::html/body/h[1])]"/>
</BODY>
</ROW>
</xsl:for-each>
</ROWSET>
</xsl:template>
</xsl:stylesheet>
sundar
-----Original Message-----
From: Smirnov, Anatoliy
[mailto:anatoliy(_dot_)smirnov(_at_)mail(_dot_)va(_dot_)gov]
Sent: Thursday, May 01, 2003 8:32 PM
To: 'XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: [xsl] how to get rid of tag names
Hello,
Sorry for such a dumb question but I am new here.
I need to get rid of tag names <p> and </p> in the result document.
<?xml version = '1.0'?>
<ROWSET>
<ROW>
<HEADER>
header
</HEADER>
<BODY>
<p>p line</p>
</BODY>
</ROW>
</ROWSET>
so instead of
<p>p line</p>
I just need to have
p line
I am getting this from this source
<html>
<body>
<h>header</h>
<p>p line</p>
</body>
</html>
running this xsl
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<ROWSET>
<xsl:for-each select="html/body/h">
<ROW>
<HEADER>
<xsl:value-of select="."/>
</HEADER>
<BODY>
<xsl:copy-of select="
following-sibling::*[generate-id(following-sibling::html/body/h[1])=
generate-id(current()/following-sibling::html/body/h[1])]"/>
</BODY>
</ROW>
</xsl:for-each>
</ROWSET>
</xsl:template>
</xsl:stylesheet>
Thank you.
Anatoliy Smirnov
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list