|
Subject: Re: [xsl] Copying From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Thu, 29 Nov 2001 17:32:33 +0000 |
Hi Jose,
> So, I want to serialize the content of the element to HTML and
> including in the result tree...
There are three ways that I know of for doing this. The purest way is
to write a set of templates that serializes the nodes, for example:
<xsl:template match="*" mode="serialize">
<<xsl:value-of select="name()" />>
<xsl:apply-templates mode="serialize" />
</<xsl:value-of select="name()" />>
</xsl:template>
(but expanded to add attributes and so on).
The second option is to use diable-output-escaping to wrap a CDATA
section around the XHTML that you want to serialize, as follows:
<xsl:template match="atag">
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:copy-of select="." />
<xsl:text disable-output-escaping="yes">]]></xsl:text>
</xsl:template>
(This might not work in all processors - disable-output-escaping is
usually something to avoid.)
Finally, you can create an extension function that does it for you. If
you're using MSXML, for example, then you can define a serialize
template in 'my' namespace with:
<msxsl:script implements-prefix="my" language="javascript">
<![CDATA[
function serialize(nodes) {
var XMLstring;
for (var i = 0; i < nodes.length; i++) {
XMLstring += nodes.item(i).xml;
}
return XMLstring;
}
]]>
</msxsl:script>
And then serialize the content of the atag element with:
<xsl:template match="atag">
<xsl:value-of select="my:serialize(node())" />
</xsl:template>
You can probably come up with similar extension functions for other
processors, depending on the APIs that they support.
I hope that helps,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Copying, Jose Aliste P. | Thread | [xsl] CDATA and copy-of, Clark, Jason |
| RE: [xsl] Output conditional on pre, Michael Kay | Date | RE: [xsl] Sorting in descending ord, delay |
| Month |