Shouldn't there be an fn:data() wrapping the '.' in <xsl:value-of
select="."/> for a text() node?
-W
On 18 August 2010 13:09, Martin Honnen <Martin(_dot_)Honnen(_at_)gmx(_dot_)de>
wrote:
pankaj(_dot_)c(_at_)thomsondigital(_dot_)com wrote:
Hello all,
I am trying to comment one of the empty element (<spec/>) in my xml tree but
seems I am missing something.
My stylesheet look something below:
<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="'<'"/>
<xsl:value-of select="name()"/>
<xsl:value-of select="'>'"/>
<xsl:apply-templates select="@*|node()" mode="comment" />
<xsl:value-of select="'</'"/>
<xsl:value-of select="name()"/>
<xsl:value-of select="'>'"/>
</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>
This is what I get using xsltproc (MAC)
Error:
element text
misplaced text element
Any ideas please.
PS: I do have my identity transform defined in stylesheet.
I don't see any problem with that code, unless a spec element contains "--".
But in that case (XML input being
<root>
<spec foo="bar"><baz/></spec>
<spec>--</spec>
</root>
stylesheet being
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<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="'<'"/>
<xsl:value-of select="name()"/>
<xsl:value-of select="'>'"/>
<xsl:apply-templates select="@*|node()" mode="comment" />
<xsl:value-of select="'</'"/>
<xsl:value-of select="name()"/>
<xsl:value-of select="'>'"/>
</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>
</xsl:stylesheet>
) xsltproc (on Windows) gives a clear error message:
runtime error: file test2010081801Xsl.xml line 12 element comment
xsl:comment : '--' or ending '-' not allowed in comment
So try a different XSLT processor if you have a problem with xsltproc to see
whether another processor succeeds.
If you still have problems then consider to post complete samples allowing us
to reproduce.
--
Martin Honnen
http://msmvps.com/blogs/martin_honnen/
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--