xsl-list
[Top] [All Lists]

Re: Copy element with attributes

2005-11-29 06:56:17
I have an xhtml file that I want to transform using
xslt, like the one below. I want to prepend and append
some text and change some body tag attributes but
copy any other attributes. I cannot seem to get that
done in the same transformation.

An example:

<html>
<head>
</head>
<body text="#003366" bgcolor="#663300" onload="otherAttribs()">
<p>My page</p>
</body>
</html>

The result should be:

<html>
<head>
</head>
<body text="#000000" bgcolor="#ffffff" onload="otherAttribs()">
Prepend text
<p>My page</p>
Append text
</body>
</html>

You want to use the identity transform with a special templates for
the <body> attributes and <p>:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="@*|node()">
        <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
</xsl:template>

<xsl:template match="body/@text">
        <xsl:attribute name="text">#000000</xsl:attribute>
</xsl:template>

<xsl:template match="body/@bgcolor">
        <xsl:attribute name="text">#ffffff</xsl:attribute>
</xsl:template>

<xsl:template match="p">
        <xsl:text>Prepend Text</xsl:text>
        <xsl:copy>
                <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
        <xsl:text>Append Text</xsl:text>
</xsl:template>

</xsl:stylesheet>


cheers
andrew

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>