Re: [xsl] Applying child nodes in a substringed node

Subject: Re: [xsl] Applying child nodes in a substringed node
From: e107lac <e107lac@xxxxxxxxx>
Date: Wed, 20 Jun 2007 11:42:08 +0200
Thank, you! And sorry, I have pasted a bad output xml in my previous mail.


Michael Kay C-rta:
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: [xsl] 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.

Current Thread