Subject: RE: Applying child nodes in a substringed node
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 20 Jun 2007 09:23:34 +0100
|
I can't see how you get that output: there is nothing in your stylesheet
that applies templates to the child node or that outputs a <child> element.
I'm guessing that what you want to do is to remove the number at the start
of the first text node of the parent element:
<xsl:template match="parent">
<list><xsl:apply-templates/></list>
</xsl:template>
<xsl:template match="parent/text()[1]">
<xsl:value-of select="substring-after(normalize-space(.), ' ')"/>
</xsl:template>
<xsl:template match="child">
<strong><xsl:apply-templates/></strong>
</xsl:template>
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: e107lac [mailto:e107lac@xxxxxxxxx]
> Sent: 20 June 2007 09:13
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Applying child nodes in a substringed node
>
> Hi list!
>
> Please help me, how can I applying the child nodes, if I
> substring the parent node.
> Example
> XML
> -----
> <?xml version="1.0" encoding="utf-8" ?>
> <root>
> <parent>
> 1. Lorem ipsum dolor sit amet, consectetuer
> <child>adipiscing elit.</child> </parent> </root>
>
> XSL
> -----
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="2.0">
> <xsl:output method="xml"
> indent="yes"
> encoding="UTF-8"/>
>
> <xsl:template match="root">
> <xsl:apply-templates/>
> </xsl:template>
>
> <xsl:template match="parent">
> <xsl:element name="list"
> <xsl:value-of
> select="substring-after(normalize-space(.), ' ')"/>
> </xsl:element>
> </xsl:template>
>
> <xsl:template match="child">
> <xsl:element name="strong">
> <xsl:apply-templates/>
> </xsl:element>
> </xsl:template>
>
>
> This transfromation generate this
>
> <?xml version="1.0" encoding="UTF-8"?>
> <list>Lorem ipsum dolor sit amet, consectetuer
> <child>adipiscing elit.</child></list>
>
> the child element don't applying because the parent return a string.
>
> Sorry for my English.
|