【问题标题】:What are the list of characters XSLT escapes while producing string values?XSLT 在生成字符串值时转义的字符列表是什么?
【发布时间】:2020-08-27 04:25:20
【问题描述】:

我知道将 disable-output-escaping 属性设置为 true,我们可以转义某些特殊字符。某处有清单吗? XSLT 版本:1.0 我正在使用的实现:Xalan XSLT 1.0

【问题讨论】:

标签: xml xslt xslt-1.0 xalan


【解决方案1】:

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-ofxsl:text 元素可能有 禁用输出转义属性;允许的值为是或否; 默认为否;如果值为yes,则生成一个文本节点 应输出实例化 xsl:value-of 或 xsl:text 元素 没有任何逃避。例如,

<xsl:text disable-output-escaping="yes"><</xsl:text> 应该 生成单个字符<

至于一个明确的列表,为了保持一致性,> 通常被转义为>,但您必须使用特定处理器的特定版本测试它是否这样做,对于 Xalan Java,它似乎 https://github.com/apache/xalan-j/blob/trunk/src/org/apache/xml/serializer/CharInfo.java 与相关文件正在转义。

【讨论】:

  • 感谢马丁的回答。我多次浏览了文档,但我需要一个已定义的字符列表,它会被转义。我也在浏览 xslt 处理器代码,但到目前为止还没有运气。
  • 正如我所说,这取决于各种因素,如输出方法以及输出编码。对于 XML 规则,< 需要转义为 <&&> 通常转义为 >。但是ä 可能会被转义为ä,例如xsl:output encoding="US-ASCII"。或者它可以使用十六进制数字字符引用进行 ube 转义。
  • 属性和文本节点的转义字符列表也不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2021-01-20
  • 2013-02-21
  • 2012-05-25
  • 1970-01-01
  • 2011-06-19
相关资源
最近更新 更多