Subject: Re: [xsl] Processing tag text either side of nested tags From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Tue, 11 Apr 2006 11:00:27 -0400 |
<xsl:template match="outer/text()"> ... upshift here ... </xsl:template>
I hope that helps, Wendell
I have some XML with text contained either side of a nested tag. I would like to apply a named template to the text parts such that I modify the text but also preserve the nested tags as-is. For example, I have some XML of the form:
<outer> hello there <inner name="alpha">beta gamma</inner> goodbye then </outer>
...and I need to transform it to the following format:
<outer> HELLO THERE <inner name="alpha">beta gamma</inner> GOODBYE THEN </outer>
where in this case a named template converts the text to upper case, although ideally the conversion function would be arbitrary.
I have made a number of attempts so far at doing this, but without success. For example:
<!-- Identity template --> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template>
<!-- Outer template --> <xsl:template match="outer"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:call-template name="upper"> <xsl:with-param name="text"> <xsl:apply-templates select="node()"/> </xsl:with-param> </xsl:call-template> </xsl:copy> </xsl:template>
<!-- Convert text to upper case --> <xsl:template name="upper"> <xsl:param name="text"/> <xsl:value-of select="translate($text, 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/> </xsl:template>
The above results in:
<outer>HELLO THEREBETA GAMMAGOODBYE THEN</outer>
I understand why this is producing that, but I just can't figure out how to apply the named template to only the text parts of the <outer> tag, while copying the nested <inner> tag as-is.
Thanks in advance for any insight into how to resolve this problem.
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Processing tag text eithe, David Carlisle | Thread | Re: [xsl] Processing tag text eithe, Neil Crofts |
[xsl] Finding element name of conte, Ed Yau | Date | Re: [xsl] Finding element name of c, David Carlisle |
Month |