可以XInclude用于流输入吗?

时间:2011-03-07 12:23:14

标签: xinclude

我想要一个使用XInclude创建多重嵌套XML文档的可移植解决方案。我正在使用<xi:include href="foo.xml">元素并从流中获取输入。到目前为止,这失败了(我使用的XOM有自己的XIncluder)报告它无法找到href的基本URL。我想知道这是否是一个普遍问题(见XercesDOMParser and XIncludes)。如果有,一般的解决方法是什么?

1 个答案:

答案 0 :(得分:3)

foo.xml这样的相对URI在没有基本URI的上下文的情况下是无用的,可以通过它来解决这个问题。如果基URI是http://example.net/bar/baz.xml,那么资源的绝对URI是http://example.net/bar/foo.xml

此基本URI可以来自:

  1. 有问题的XML来自的URI(显然不适用于单独的流)。
  2. 通过特定于其的机制传递给解析器的URI。
  3. xml:base
  4. 特定于给定XML应用程序的方法(不建议,但有时需要与其他格式兼容,例如XHTML中的<base />元素不必要地重复xml:base且灵活性较低,但是兼容性需要使用HTML4.01及更早版本。