Re: [xsl] commenting an XML element [XSLT 1.0][xsltproc]

Subject: Re: [xsl] commenting an XML element [XSLT 1.0][xsltproc]
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Wed, 18 Aug 2010 13:36:24 +0200
David Carlisle wrote:
On 18/08/2010 12:09, Martin Honnen wrote:
I don't see any problem with that code

The code is trying to copy elements into a comment, but comments can not conatin element nodes, they only have a text value, not children (the same as attributes).


You need to serialise the element to a string (either using a template usineg &lt;<xsl:value-of select="name()"/>.... or an extension such as saxon:serialize().

Are we talking about the same code? It does try to serialize with a mode="comment":


<xsl:template match="spec">
        <xsl:comment>
           <xsl:apply-templates select="self::*" mode="comment"/>
     </xsl:comment>
</xsl:template>

   <xsl:template match="*" mode="comment">
        <xsl:value-of select="'&lt;'"/>
            <xsl:value-of select="name()"/>
        <xsl:value-of select="'&gt;'"/>
            <xsl:apply-templates select="@*|node()" mode="comment" />
        <xsl:value-of select="'&lt;/'"/>
            <xsl:value-of select="name()"/>
        <xsl:value-of select="'&gt;'"/>
    </xsl:template>

    <xsl:template match="text()" mode="comment">
        <xsl:value-of select="."/>
    </xsl:template>

    <xsl:template match="@*" mode="comment">
        <xsl:value-of select="name()"/>
        <xsl:text>="</xsl:text>
        <xsl:value-of select="."/>
        <xsl:text>" </xsl:text>
    </xsl:template>

So where does that code try to put an element into a comment?

--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread