Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 自动将转义字符转换为字符串文字_Xslt_Xslt 2.0 - Fatal编程技术网

Xslt 自动将转义字符转换为字符串文字

Xslt 自动将转义字符转换为字符串文字,xslt,xslt-2.0,Xslt,Xslt 2.0,我正在进行XSLT转换,以重新排列XML块来验证NewsML文件。其中一些文件包含编码字符(如&;“etc…”)。问题是XSLT转换正在将这些字符转换为其文字字符串(即“和”、“”)。这会导致问题。我不希望发生这种情况 我尝试过各种技术(使用和禁用输出转义标志),但都没有效果。这些方法要么转换字符,要么干脆不使用字符 例如,以“PM&;载脂蛋白;“s卡”可以作为 首相卡片上的星星 PMs卡上的星星 我正在使用Saxonica()处理应用程序 下面提供了我正在使用的基本XSLT(还

我正在进行XSLT转换,以重新排列XML块来验证NewsML文件。其中一些文件包含编码字符(如&;“etc…”)。问题是XSLT转换正在将这些字符转换为其文字字符串(即“和”、“”)。这会导致问题。我不希望发生这种情况

我尝试过各种技术(使用和禁用输出转义标志),但都没有效果。这些方法要么转换字符,要么干脆不使用字符

例如,以“PM&;载脂蛋白;“s卡”可以作为

  • 首相卡片上的星星
  • PMs卡上的星星
我正在使用Saxonica()处理应用程序

下面提供了我正在使用的基本XSLT(还有其他东西,但即使使用这个最简单的样式表,问题也存在)



任何关于如何防止这种转换的想法都将不胜感激。要求是保持原始文本的外观。

我认为您需要同时禁用输出转义=“是”和将文档设置为HTML

来自W3C(重点矿山):

对于用于结果树中文本节点以外的其他对象的文本节点禁用输出转义是错误的。因此,对于用于生成注释、处理指令或属性节点的字符串值的xsl:value或xsl:text元素禁用输出转义也是错误的;对于c如果结果树片段包含禁用转义的文本节点,则将结果树片段转换为数字或字符串。在这两种情况下,XSLT处理器都可能发出错误信号;如果不发出错误信号,则必须通过忽略禁用输出转义属性来恢复。

禁用输出转义属性可以与html输出方法以及xml输出方法一起使用。文本输出方法忽略禁用输出转义属性,因为它不执行任何输出转义

XSLT处理器只有在控制结果树的输出方式时才能禁用输出转义。情况可能并非总是如此。例如,结果树可以用作另一个XSLT转换的源树,而不是输出。XSLT处理器不需要支持禁用输出转义。如果xsl:value-of或xsl:text指定应禁用输出转义,而XSLT处理器不支持此操作,则XSLT处理器可能会发出错误信号;如果未发出错误信号,则必须通过不禁用输出转义来恢复

如果对XSLT处理器用于输出的编码中不可表示的字符禁用了输出转义,则XSLT处理器可能会发出错误信号;如果它没有发出错误信号,则必须通过不禁用输出转义来恢复

由于禁用输出转义可能不适用于所有XSLT处理器,并且可能导致XML格式不正确,因此只有在没有其他选择时才应使用它。

这些通常是该实体的unicode表示形式。最终的流将只包含字符。如果输出流,则最多可使用t他使用序列化程序根据输出类型对字符进行转义(这是可以通过禁用输出转义禁用的)

<xsl:output method="html" encoding="UTF-8"/>
<xsl:text>some&#160;test</xsl:text>
见第5节


因此,我将首先使用XSLT处理器检查这一点。

使用Xalan 2.7.1版,我得到了奇怪的结果:“->”&;&;&;&apos;->'->>”->->如您所见,只有一些实体被转义。
<xsl:output method="html" encoding="UTF-8"/>
<xsl:text>some&#160;test</xsl:text>
some&nbsp;test