Xslt <;xsl:comment>;问题
可能重复:Xslt <;xsl:comment>;问题,xslt,Xslt,可能重复: 我试图在xsl转换期间以这种方式注释节点 Doesn't work: <xsl:comment><xsl:copy-of select="."/></xsl:comment> 不起作用: 但是我得到的是一个空的注释,但是删除注释元素我得到了正确的节点 This is correct: <xsl:copy-of select="."/> 这是正确的: 为什么元素的副本在注释中不起作用?是否有解决方案,或者我做错了什么?同意Ian
我试图在xsl转换期间以这种方式注释节点
Doesn't work:
<xsl:comment><xsl:copy-of select="."/></xsl:comment>
不起作用:
但是我得到的是一个空的注释,但是删除注释元素我得到了正确的节点
This is correct:
<xsl:copy-of select="."/>
这是正确的:
为什么元素的副本在注释中不起作用?是否有解决方案,或者我做错了什么?同意Ian的意见这是重复的 无论如何,你可能想要的是
<xsl:comment><xsl:value-of select="."/></xsl:comment>
原因是什么?注释不能包含子节点。它们是一种具有文本属性(注释内容)的原子节点类型。同意Ian的意见,这是重复的 无论如何,你可能想要的是
<xsl:comment><xsl:value-of select="."/></xsl:comment>
原因是什么?注释不能包含子节点。它们是一种具有文本属性(注释内容)的原子节点类型。没有一种直接的方法来生成注释中元素的文本表示形式 这里有一个简短的例子,使用内联扩展函数(在C#中):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="my:my" exclude-result-prefixes="msxsl my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<xsl:comment>
<xsl:value-of select="my:stringize(someElement)"/>
</xsl:comment>
</xsl:template>
<msxsl:script language="c#" implements-prefix="my">
public string stringize(XPathNavigator doc)
{
return doc.OuterXml;
}
</msxsl:script>
</xsl:stylesheet>
公共字符串字符串字符串化(XPathNavigator文档)
{
返回doc.OuterXml;
}
在以下XML文档上应用此转换时(使用.NET XslCompiledTransform XSLT处理器):
<t>
<someElement>someValue</someElement>
</t>
<!--<someElement>someValue</someElement>-->
一些价值
生成所需的正确结果:
<t>
<someElement>someValue</someElement>
</t>
<!--<someElement>someValue</someElement>-->
在纯XSLT中有不同的方法可以做到这一点——例如,请参阅的XSLT代码,以获得XML文档作为Html的漂亮表示(我12年前编写的一个开源产品,我在这里没有任何宣传)没有一种直接的方法来生成注释中元素的文本表示形式 这里有一个简短的例子,使用内联扩展函数(在C#中):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:my="my:my" exclude-result-prefixes="msxsl my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<xsl:comment>
<xsl:value-of select="my:stringize(someElement)"/>
</xsl:comment>
</xsl:template>
<msxsl:script language="c#" implements-prefix="my">
public string stringize(XPathNavigator doc)
{
return doc.OuterXml;
}
</msxsl:script>
</xsl:stylesheet>
公共字符串字符串字符串化(XPathNavigator文档)
{
返回doc.OuterXml;
}
在以下XML文档上应用此转换时(使用.NET XslCompiledTransform XSLT处理器):
<t>
<someElement>someValue</someElement>
</t>
<!--<someElement>someValue</someElement>-->
一些价值
生成所需的正确结果:
<t>
<someElement>someValue</someElement>
</t>
<!--<someElement>someValue</someElement>-->
在纯XSLT中有不同的方法可以做到这一点——例如,请参阅的XSLT代码,以获得XML文档作为Html的漂亮表示(我12年前编写的一个开源产品,我在这里没有任何宣传)您不能对DOE使用
xsl:comment
和xsl:text
XML输入
<doc>
<foo>
<bar attr="test"/>
</foo>
</doc>
<doc><!--<foo>
<bar attr="test"/>
</foo>--></doc>
XSLT1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="doc">
<xsl:copy>
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
<xsl:copy-of select="foo"/>
<xsl:text disable-output-escaping="yes">--></xsl:text>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
!--
-->
XML输出
<doc>
<foo>
<bar attr="test"/>
</foo>
</doc>
<doc><!--<foo>
<bar attr="test"/>
</foo>--></doc>
您不能对DOE使用
xsl:comment
和xsl:text
XML输入
<doc>
<foo>
<bar attr="test"/>
</foo>
</doc>
<doc><!--<foo>
<bar attr="test"/>
</foo>--></doc>
XSLT1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="doc">
<xsl:copy>
<xsl:text disable-output-escaping="yes"><!--</xsl:text>
<xsl:copy-of select="foo"/>
<xsl:text disable-output-escaping="yes">--></xsl:text>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
!--
-->
XML输出
<doc>
<foo>
<bar attr="test"/>
</foo>
</doc>
<doc><!--<foo>
<bar attr="test"/>
</foo>--></doc>
xsl:comment内部的xsl:value应该与xsl:copy of完全相同-它提供所选节点的字符串值。根据给出的证据推测,字符串值为空,他们想要的是标记的某种表示形式。xsl:comment内部的xsl:value应该与xsl:copy of完全相同-它为您提供所选节点的字符串值。根据给出的证据推测,字符串值为空,他们想要的是标记的某种表示形式。