【发布时间】:2016-12-27 04:40:36
【问题描述】:
我有这个输入 XML,我想在其中使用 disable-output-escaping 功能将 " 替换为 ",而不是在输出 XML 中。我在以下 XSL 上尝试了各种方法,但没有用 - 某些东西或其他东西破坏了所需的 name 标记。
输入 XML:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<name>"test"</name>
<type>computer</type>
</book>
转换 XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="book">
<book>
<xsl:apply-templates />
</book>
</xsl:template>
<xsl:template match="name">
<name>
<xsl:text disable-output-escaping="yes">
<![CDATA["test"]]>
</xsl:text>
</name>
</xsl:template>
<xsl:template match="type">
<genre>
<xsl:apply-templates />
</genre>
</xsl:template>
</xsl:stylesheet>
所需的输出 XML:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<name>"test"</name>
<genre>computer</genre>
</book>
我得到的输出 XML:
<?xml version="1.0" encoding="UTF-8"?><book>
<name>
"test"
</name>
<genre>computer</genre>
</book>
谁能提供一些关于如何完成这项工作的见解?
我一直在寻找各种来源,但修复这个没有用!
【问题讨论】:
-
请注意,我认为根本不需要转换
name元素,任何复制它的转换,如 xsltransform.net/ncntCSx,都应该导致<name>"test"</name>,因为没有理由逃避元素内容中的引用。 -
很好,感谢您提供的示例 XSL!