gpt4 book ai didi

xml - XSLT 注释标签不输出内容?

转载 作者:数据小太阳 更新时间:2023-10-29 02:24:17 25 4
gpt4 key购买 nike

我正在尝试将一些 XML 从一个文档转移到另一个文档,但我希望它在到达那里时被注释掉。所以我想做这样的事情:

<xsl:template name="process">
<figure>
<xsl:comment>
<xsl:copy />
</xsl:comment>
</figure>
</xsl:template>

当我使用直接的 Java XSLT 处理器运行它时,我得到的结果如下:

<figure>
<!--







-->
</figure>

奇怪的是,如果我在没有注释对象的情况下运行它,如下所示:

<xsl:template name="process">
<figure>
<xsl:copy />
</figure>
</xsl:template>

内容很好。

有什么想法吗?我想也许你不能在评论中使用元素,但我查了一下,应该没问题。

最佳答案

根据规范 ( Section 7.4, Creating Comments ),强调我的:

It is an error if instantiating the content of xsl:comment creates nodes other than text nodes. An XSLT processor may signal the error; if it does not signal the error, it must recover by ignoring the offending nodes together with their content.

因此无论您在哪里查找,您的信息都是错误的。它不应该起作用。

您必须在评论中创建看起来像 XML 的文本。这或难或易,具体取决于您使用的 XSLT 处理器。

例如 Saxon 有一个 serialize() 扩展函数,这使得任务变得简单:

<xsl:comment>
<xsl:value-of select="saxon:serialize($node-set, 'default')" />
</xsl:comment>

这需要 XSLT 中的 saxon namespace 声明:

<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://saxon.sf.net/"
>

关于xml - XSLT 注释标签不输出内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com