使用 saxon9ee 时,什么会影响输出序列化的实体编码?
What affects entity encodingon output serialization when using saxon9ee?
我对 HTML (xhtml) 进行了转换,已声明
<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="2.0"
<xsl:output method="xhtml" encoding="UTF-8" omit-xml-declaration="yes" indent="no"/>
我在序列化时得到了不同的实体编码。当我使用以下代码输出格式化文本时(其中 $converted-value 是:Jul 28, 2015 03:13:15 p.m. EDT
),有时
被编码,而其他时候则不是。
<span style="white-space:pre;">
Jan 05, 2016 05:00:44 p.m. EST
</span>
在氧气和 Java 程序中执行时会看到差异。在 Oxygen 中,实体总是输出为
,但在其他情况下(不一致)输出编码为:&nbsp;
如下。
<span style="white-space:pre;">
Jan 05, 2016 05:00:44 p.m. EST
</span>
或
<span style="white-space:pre;">
Jul&nbsp;28,&nbsp;2015&nbsp;&nbsp;&nbsp;03:13:15&nbsp;p.m.&nbsp;EDT
</span>
此行为在同一台机器和其他机器上不一致。是什么控制了这种行为? disable-output-escaping
似乎并不总是有效。我如何编码才能使输出可预测?
谢谢!
如果输入是六个字符 (&, n, b, s, p, ;) 的序列(与
表示的单个字符不同),那么它将被序列化为 6 - 字符串
如果 disable-output-escaping 有效,否则作为 10 个字符的字符串 &nbsp;
。
disable-output-escaping 在以下条件下生效:
(a) 您在样式表中请求它,并且
(b) XSLT 处理器正在执行序列化(而不是将其输出写入 DOM 或 JDOM 树)。 (这将取决于调用处理器的方式,因此它可能取决于 oXygen 的工作方式);和
(c) 出现 d-o-e 属性的指令正在直接写入序列化程序。这不会是这种情况,例如:
(i) 指令的输出被捕获在一个变量中
(ii) 指令出现在 try/catch 块中
通常,由于这些原因,不推荐使用 disable-output-escaping。几乎总是有更好的方法来实现您想要的目标。
我对 HTML (xhtml) 进行了转换,已声明
<?xml version='1.0' encoding='utf-8'?>
<xsl:stylesheet version="2.0"
<xsl:output method="xhtml" encoding="UTF-8" omit-xml-declaration="yes" indent="no"/>
我在序列化时得到了不同的实体编码。当我使用以下代码输出格式化文本时(其中 $converted-value 是:Jul 28, 2015 03:13:15 p.m. EDT
),有时
被编码,而其他时候则不是。
<span style="white-space:pre;">
Jan 05, 2016 05:00:44 p.m. EST
</span>
在氧气和 Java 程序中执行时会看到差异。在 Oxygen 中,实体总是输出为
,但在其他情况下(不一致)输出编码为:&nbsp;
如下。
<span style="white-space:pre;">
Jan 05, 2016 05:00:44 p.m. EST
</span>
或
<span style="white-space:pre;">
Jul&nbsp;28,&nbsp;2015&nbsp;&nbsp;&nbsp;03:13:15&nbsp;p.m.&nbsp;EDT
</span>
此行为在同一台机器和其他机器上不一致。是什么控制了这种行为? disable-output-escaping
似乎并不总是有效。我如何编码才能使输出可预测?
谢谢!
如果输入是六个字符 (&, n, b, s, p, ;) 的序列(与
表示的单个字符不同),那么它将被序列化为 6 - 字符串
如果 disable-output-escaping 有效,否则作为 10 个字符的字符串 &nbsp;
。
disable-output-escaping 在以下条件下生效:
(a) 您在样式表中请求它,并且
(b) XSLT 处理器正在执行序列化(而不是将其输出写入 DOM 或 JDOM 树)。 (这将取决于调用处理器的方式,因此它可能取决于 oXygen 的工作方式);和
(c) 出现 d-o-e 属性的指令正在直接写入序列化程序。这不会是这种情况,例如:
(i) 指令的输出被捕获在一个变量中
(ii) 指令出现在 try/catch 块中
通常,由于这些原因,不推荐使用 disable-output-escaping。几乎总是有更好的方法来实现您想要的目标。