【问题标题】:What is the use of static fields PI_ENABLE_OUTPUT_ESCAPING & PI_DISABLE_OUTPUT_ESCAPING and how can we use them?静态字段 PI_ENABLE_OUTPUT_ESCAPING 和 PI_DISABLE_OUTPUT_ESCAPING 的用途是什么,我们如何使用它们?
【发布时间】:2013-04-30 07:03:48
【问题描述】:

我是 jaxp 新手,不知道如何使用上述静态字段以及它们的含义?

需要它的解释和例子。

提前致谢

【问题讨论】:

  • 你需要那些字段吗?
  • 您阅读过任何文档吗?
  • 我不知道它们的用途,可能是知道之后才能使用它们。实际上我想转义我的 xsl 文件中存在的一些字符。
  • @MarcoForberg:我只阅读 java 文档。

标签: java xslt jaxp


【解决方案1】:

(免责声明 - 我维护 JDOM XML 库) - 这些 PI(ProcessingInstructions)旨在向 XML 输出程序指示它们应该破坏与 XML 标准的兼容性,并产生无效的 XML。

在某些条件下,这可能很有用。

这是JDOM test harness 中的一个测试用例。它基本上有这样的输入(我添加了一些白色以使其更容易看到):

<root>
  &amp;
  <?javax.xml.transform.disable-output-escaping ?>
  &amp;&amp;
  <?javax.xml.transform.enable-output-escaping ?>
  &amp;
</root>

在上面的例子中,我们有 valid XML。如果您要通过识别处理指令的系统处理这些数据,它应该输出(类似)

<root>
  &amp;
  &&
  &amp;
</root>

请注意,这不再是有效的 XML ...... PI 之间的 & 字符没有被正确转义。

从 JDOM 的角度来看,这是记录在 here in the javadoc

这些指令通常用于 XML 转换以产生“漂亮的”输出,并且不被机器使用,而是被人使用。谨慎使用。

希望能给你一些见解......一切顺利。

【讨论】:

    【解决方案2】:

    XSLT 有一个称为“禁用输出转义”的功能,它告诉序列化程序将&amp;lt;a&amp;gt; 输出为&amp;lt;a&amp;gt;,而它通常会输出&amp;lt;a&amp;gt;。这是一个最好避免的 hack,原因有很多,其中一个是它需要一个特殊的侧通道让转换引擎与序列化器通信(因此转换器可以告诉序列化器打开和关闭 doe)。

    在 JAXP 中,为了允许一个供应商的转换引擎与另一个供应商的序列化程序对话,传递这些 doe-on 和 doe-off 请求的协议就是这对处理指令。

    您不需要此功能,可以放心地忽略它的存在。永远不要想仅仅因为有一个功能,如果你从不使用它,你一定会错过一些东西。

    【讨论】:

      猜你喜欢
      • 2016-10-24
      • 2013-09-04
      • 2010-12-18
      • 2011-10-08
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 2017-02-23
      相关资源
      最近更新 更多