Можно ли импортировать XML файл в другой файл XML?
Я имею в виду, есть ли какой-либо импортный тег в XML, который принимает XML-путь в качестве параметра и импортирует XML (для которого указан путь).
Можно ли импортировать XML файл в другой файл XML?
Я имею в виду, есть ли какой-либо импортный тег в XML, который принимает XML-путь в качестве параметра и импортирует XML (для которого указан путь).
Вы объявляете объект следующим образом:
<!ENTITY otherFile SYSTEM "otherFile.xml">
Затем вы ссылаетесь на это следующим образом:
&otherFile;
Полный пример:
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE doc [
<!ENTITY otherFile SYSTEM "otherFile.xml">
]>
<doc>
<foo>
<bar>&otherFile;</bar>
</foo>
</doc>
Когда синтаксический анализатор XML считывает файл, он будет расширять ссылку на сущность и включать XML файл с ссылкой в качестве части содержимого.
Если "otherFile.xml" содержит: <baz>this is my content</baz>
Затем XML будет оцениваться и "восприниматься" парсером XML как:
<?xml version="1.0" standalone="no" ?>
<doc>
<foo>
<bar><baz>this is my content</baz></bar>
</foo>
</doc>
Несколько ссылок, которые могут быть полезны:
Эта функция называется Вложения XML (XInclude). Некоторые примеры:
Другие ответы охватывают два наиболее распространенных подхода: Xinclude и внешние XML-объекты. У Microsoft действительно отличная запись о том, почему следует предпочитать Xinclude, а также несколько примеров реализации. Я привел сравнение ниже:
Per http://msdn.microsoft.com/en-us/library/aa302291.aspx
Почему XInclude?
Первый вопрос, который можно задать, - "Зачем использовать XInclude вместо XML внешние сущности?". Ответ заключается в том, что внешние XML-объекты имеют количество известных ограничений и неудобных последствий, которые эффективно предотвращать их включение в общие назначения объект. В частности:
- Внешний XML-объект не может быть полномасштабным независимым XML-документом - ни автономное объявление XML, ни объявление Doctype позволил. Это фактически означает, что сам внешний XML-объект не может включают другие внешние объекты.
- Внешний XML-объект должен быть хорошо сформирован XML (не так уж плохо с первого взгляда, но представьте, что вы хотите включить образец кода С# в свой XML файл документ).
- Несоблюдение внешней сущности является фатальной ошибкой; любое восстановление строго запрещено.
- Может быть включен только весь внешний объект, нет способа включить только часть документа. -Внутренние объекты должны быть объявлены в DTD или внутреннем подмножестве. Это открывает коробку Pandora, полную последствий, например, тот факт, что элемент документа должен быть назван в объявлении Doctype и что для проверки читателей может потребоваться, чтобы полная модель контента документ будет определен в DTD среди других.
Недостатки использования внешних объектов XML в качестве включения механизм известен в течение некоторого времени и фактически породил представление Предложения о включении XML в W3C в 1999 году Microsoft и IBM. В предложении определена модель обработки и синтаксис для универсального объекта интеграции XML.
Спустя четыре года версия 1.0 вложений XML, также известная как Xinclude, является рекомендацией кандидата, что означает, что W3C считает, что он был широко рассмотрен и удовлетворяет основные технические проблемы, которые он решил решить, но еще не рекомендация.
Другим хорошим сайтом, который предоставляет множество реализаций примеров, является https://www.xml.com/pub/a/2002/07/31/xinclude.html. Ниже приведен пример совместного использования с сайта:
<book xmlns:xi="http://www.w3.org/2001/XInclude">
<title>The Wit and Wisdom of George W. Bush</title>
<xi:include href="malapropisms.xml"/>
<xi:include href="mispronunciations.xml"/>
<xi:include href="madeupwords.xml"/>
</book>