можно использовать XInclude при вводе потока? - PullRequest
2 голосов
/ 07 марта 2011

Мне бы хотелось портативное решение для создания XML-документа с несколькими вложениями, используя XInclude.Я использую <xi:include href="foo.xml"> элементы и принимаю входные данные из потока.Пока что это не удается (я использую XOM, который имеет свой собственный XIncluder), который сообщает, что не может найти базовый URL для href.Мне интересно, если это общая проблема (см. XercesDOMParser и XInclude ).Если да, то есть ли общие обходные пути?

1 Ответ

3 голосов
/ 07 марта 2012

Относительный URI, такой как foo.xml, бесполезен без контекста базового URI, с которым нужно работать, например, если базовый URI равен http://example.net/bar/baz.xml, то абсолютный URI ресурса равен http://example.net/bar/foo.xml.

Этот базовый URI может быть получен из:

  1. URI, с которого поступил рассматриваемый XML (явно неприменим к одному потоку).
  2. URI, переданный анализатору с помощьюмеханизмы, специфичные для него.
  3. xml:base
  4. Средства, специфичные для данного приложения XML (не рекомендуется, но иногда необходимо для совместимости с другими форматами, например, элемент <base /> в дубликатах XHTML xml:base излишне и с меньшей гибкостью, но требуется для совместимости с HTML4.01 и более ранними версиями).
...