2013-10-07 57 views
0

我正在转换一些嵌入了mathml的xml。我们要去的目标xml文件不支持mathml。我想在注释块中输出该mathml,以便mathml不会丢失,但也不会导致对目标dtd的验证错误。xsl将元素的所有子元素置于注释块中

我尝试了:

<xsl:comment><xsl:copy-of select="*"/></xsl:comment> 

但是,这并不十分去做。

任何帮助,非常感谢!

感谢,

拉斯

+0

顺便说一句,完整的模板是: \t的 \t \t \t \t 式放在这里 \t \t \t \t \t的 \t \t \t \t \t \t \t \t \t

+0

使用XML注释来保留内容是一个坏主意。许多解析器和工具将完全忽视评论。 –

+0

我知道。我只是试图为图形用户保留这些信息,因为他们可以使用它来创建方程式作为外部图形。 –

回答

1

XSLT spec说:

这是一个错误,如果实例的xsl:comment内容创建一个比文本节点的其他节点。

一种可能的解决办法是使用disable-output-escaping创建注释:

<xsl:text disable-output-escaping="yes">&lt;!--</xsl:text> 
<xsl:copy-of select="*"/> 
<xsl:text disable-output-escaping="yes">--&gt;</xsl:text> 
+0

酷!这就是诀窍!谢谢! –

+1

既然他帮了你,为什么不接受他的回答呢?还要考虑回顾一下你过去的14个问题,并接受你收到的任何其他有用答案;那里至少有几个可以接受的答案。以下是接受答案的方式:http://meta.stackexchange.com/a/5235/234215 – kjhughes

+0

顺便说一下,该报价来自XSLT 1.0规范。在XSLT 2.0中,xsl:comment的作用类似于xsl:value-of - 如果内容中有元素节点,则使用它们的字符串值。 –