【发布时间】:2020-08-27 04:25:20
【问题描述】:
我知道将 disable-output-escaping 属性设置为 true,我们可以转义某些特殊字符。某处有清单吗? XSLT 版本:1.0 我正在使用的实现:Xalan XSLT 1.0
【问题讨论】:
-
你是这个意思吗? dev.w3.org/html5/html-author/charref
我知道将 disable-output-escaping 属性设置为 true,我们可以转义某些特殊字符。某处有清单吗? XSLT 版本:1.0 我正在使用的实现:Xalan XSLT 1.0
【问题讨论】:
disable-output-escaping 防止根据输出方法转义的字符转义。使用xsl:output method="html",XSLT 处理器应该根据 HTML 规则进行序列化,输出方法xml 根据 XML 规则。
见https://www.w3.org/TR/xslt-10/#disable-output-escaping:
通常,xml 输出方法会转义
&和<(可能还有其他 字符)输出文本节点时。这确保了输出 是格式良好的 XML。但是,有时能够很方便 产生几乎是格式良好但不是格式良好的 XML 的输出;为了 例如,输出可能包含格式错误的部分 由后续的非 XML 感知转换为格式良好的 XML 过程。因此,XSLT 提供了一种机制来禁用 输出转义。xsl:value-of或xsl:text元素可能有 禁用输出转义属性;允许的值为是或否; 默认为否;如果值为yes,则生成一个文本节点 应输出实例化 xsl:value-of 或 xsl:text 元素 没有任何逃避。例如,
<xsl:text disable-output-escaping="yes">&lt;</xsl:text>应该 生成单个字符&lt;。
至于一个明确的列表,为了保持一致性,&gt; 通常被转义为&gt;,但您必须使用特定处理器的特定版本测试它是否这样做,对于 Xalan Java,它似乎 https://github.com/apache/xalan-j/blob/trunk/src/org/apache/xml/serializer/CharInfo.java 与相关文件正在转义。
【讨论】:
&lt; 需要转义为 &lt;,&amp; 为 &amp;,&gt; 通常转义为 &gt;。但是ä 可能会被转义为&#228;,例如xsl:output encoding="US-ASCII"。或者它可以使用十六进制数字字符引用进行 ube 转义。