xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Внедрить один *.xml в другой


Автор Сообщение
Grundiss
Новичок

Зарегистрирован: 09.02.2008
Сообщения: 3
Откуда: Иркутск
[12181] Сб Фев 09, 2008 10:11
Внедрить один *.xml в другой
Существует ли какая либо инструкция, которая "втыкает" код одного xml-файла в другой?
Например, если я не хочу (по тем или иным причинам) скрипт внутри html-странички я в ней пишу
<SCRIPT language="javascript" src="blabla.js" />
А можно ли что-то подобное сделать в xml?
Например.
--1.xml--
<MyTag>
<Инструкция_типа_"а_то,_что_здесь_ищи_в_файле" src="2.xml"/>
</MyTag>

--2.xml--
<Content><Empty/></Content>

При этом, если мне взбредет в голову обработать 1.xml каким-то стилем 3.xsl, то этот стиль будет думать, что ему на вход подан файл вида:
<MyTag>
<Content><Empty/></Content>
</MyTag>

Может это скриптом каким-нибудь делается?
Xacid
Новичок

Зарегистрирован: 28.04.2002
Сообщения: 38
Откуда: Киев, Украина
[12182] Сб Фев 09, 2008 15:24

http://www.w3.org/TR/xinclude/

http://www.xml.com/pub/a/2002/07/31/xinclude.html

http://en.wikipedia.org/wiki/XInclude

http://xerces.apache.org/xerces2-j/faq-xinclude.html

http://msdn2.microsoft.com/en-us/library/aa302291.aspx

+ документация по Вашему парсеру о том как включить поддержку XInclude
Grundiss
Новичок

Зарегистрирован: 09.02.2008
Сообщения: 3
Откуда: Иркутск
[12183] Сб Фев 09, 2008 17:59

Спасибо. Весомо. Еще один момент: где найти информацию о моем парсере (честно говоря, очень плохо представляю что это)? Все делаю в блокноте, а смотрю в MSIE 7. Как включить поддержку XInclude в нем?
Если я правильно понимаю, то нужно подключать дополнительное пространство имен. Его можно как-то скачать на локальную машину?
Xacid
Новичок

Зарегистрирован: 28.04.2002
Сообщения: 38
Откуда: Киев, Украина
[12184] Вс Фев 10, 2008 15:25

По данным из википедии MSIE7 поддерживает XInclude. Проверить это утверждение я не могу поскольку у меня нет в наличии MSIE7. В большинстве других парсеров поддержка XInclude работает, но требуется особое указание парсеру о необходимости такой поддержки.

В Вашем случае самым разумным будет просто попробовать.
В корневой (то есть самый первый) элемент добавьте аттрибут

xmlns:xi="http://www.w3.org/2001/XInclude"

Этим Вы объявите необходимое пространство имён в документе.
После этого можете подключать внешние файлы тэгом

<xi:include href="filename.xml" />

Если правильно всё сделать, то сразу должно работать.

PS. Да, о том как скачать пространство имен на локальную машину - в этом нет никакой необходимости, не переживайте. Пространство имён ничего ни откуда и никуда не скачивает. Пространство имён вообще не имеет никакого отношения к каким либо сайтам и интернету как таковому. Пространство имен - это всего лишь идентификатор, который необходим для распознавания какой либо особой функциональности. Просто удобно в качестве такового идентификатора взять некий URL. Но это совсем не значит что по этому URL необходимо еще что то скачивать. Все что необходимо - это чтобы пространство имён было известно программному обеспечению которое используется для обработки данных. А это зависит исключительно от версии (в широком смысле - включая поставщика) этого самого программного обеспечения. Подробности смотрите тут

http://en.wikipedia.org/wiki/XML_Namespace