Subject: Re: [xsl] Selecting text between two tags From: "Petar Tahchiev" <paranoiabla@xxxxxxxxx> Date: Sun, 6 Aug 2006 19:29:55 +0300 |
Thanks a lot :-). That worked!On 8/6/06, Petar Tahchiev <paranoiabla@xxxxxxxxx> wrote: > Here is my problem: I have an html file that has a structure like this: > <html> > <body> > <h2>Description</h2> > <p>Blah-blah</p> > Some-more <p>-s and text > <h2>Parameters</h2> > <p>Some more text<p> > </body> > </html> > > Now i want to make a xml file that has this structure: > <m:man> > <m:description> > <p>Blah-blah</p> > Some-more <p>-s and text > </m:description> > <some other> things > So my question is how to get the text between the first > <h2>description</h2> and the second <h2>parameters</h2> tag and place > it in the <m:description></m:description> tag
Given this XML (XHTML) file:
<html> <body> <h2>Description</h2> <p>Blah-blah</p> Some-more <p/>-s and text <h2>Parameters</h2> <p>Some more text</p> </body> </html>
The following stylesheet:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:m="http://dummy">
<xsl:output method="xml" indent="yes" />
<xsl:template match="/"> <m:man> <xsl:apply-templates select="//h2[1]" /> </m:man> </xsl:template>
<xsl:template match="h2"> <m:description> <xsl:call-template name="ExtractText"> <xsl:with-param name="node-set" select="following-sibling::node()" /> </xsl:call-template> </m:description> </xsl:template>
<xsl:template name="ExtractText"> <xsl:param name="node-set" />
<xsl:if test="not($node-set[1]/self::h2)"> <xsl:copy-of select="$node-set[1]" /> <xsl:call-template name="ExtractText"> <xsl:with-param name="node-set" select="$node-set[position() > 1]" /> </xsl:call-template> </xsl:if> </xsl:template>
</xsl:stylesheet>
Produces output:
<?xml version="1.0" encoding="UTF-8"?> <m:man xmlns:m="http://dummy"> <m:description> <p>Blah-blah</p> Some-more <p/>-s and text </m:description> </m:man>
Hope this helps.
-- Regards, Mukul Gandhi
http://gandhimukul.tripod.com
-- Regards, Petar! Karlovo, Bulgaria.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Selecting text between tw, Mukul Gandhi | Thread | [xsl] RE: Selecting the first node , Fraser Goffin |
Re: [xsl] Selecting text between tw, Mukul Gandhi | Date | [xsl] RE: Selecting the first node , Fraser Goffin |
Month |