【发布时间】:2021-01-12 14:56:31
【问题描述】:
可能很愚蠢,但有没有办法使用 xslt 在 xml 属性中包含转义撇号?
据我了解,像撇号这样的字符在 xml elements 中有效,但在它们的 属性 中无效。结果,我试图在输出中将' 转义为' - 但我遇到了一些麻烦。
我已经尝试了各种方法,例如使用 xsl:text/disable-output-escaping、'、CDATA(以及其他),而我能得到的最接近的方法是像这样双重转义 & 符号:'
但我认为这意味着我只剩下与符号的字符和单独的文本apos;,而不是我想要的正确的'。
输入xml:
<?xml version="1.0" encoding="UTF-8"?>
<boof>
<moo></moo>
</boof>
当前 XSL
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="moo">
<xsl:element name="moo">
<xsl:attribute name="att">&apos;</xsl:attribute>
</xsl:element>
</xsl:template>
</xsl:transform>
电流输出
<boof>
<moo att="&apos;"/>
</boof>
期望的输出
<boof>
<moo att="'"/>
</boof>
【问题讨论】:
-
您可以像使用任何其他字符一样在属性值中使用撇号,除非您使用它作为属性值的分隔符而不是双引号。
-
谢谢!我想我误读了一些我在别处读过的材料——我认为撇号在属性中是完全无效的。
-
在 XSLT 中,您可以专注于获得正确的(结果树的)结构。 XSLT 处理器将确保其序列化正确。