LINUX.ORG.RU

Вставка xml файла в другой xml

 , ,


0

1

Как «вставить» содержимое из одного xml в другой?
Есть файл goal.xml:

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE doc [
<!ENTITY otherFile SYSTEM "otherFile.xml">
]>
<doc>
  <foo>
    <bar>&otherFile;</bar>
  </foo>
</doc>

other.xml:

otherFile.xml:
<baz>this is my content</baz>

В итоге должно получиться:

<?xml version="1.0" standalone="no" ?>
<doc>
  <foo>
    <bar><baz>this is my content</baz></bar>
  </foo>
</doc>

Суть в том, чтобы вставить содержимое из одного xml в другой. Пример взят с http://stackoverflow.com/questions/5121052/can-we-import-xml-file-into-anothe...

Получаю нубские ошибки валидатора:

Element xxx must be declared

P.S. Первый раз возникла необходимость.

★★★

Последнее исправление: Klymedy (всего исправлений: 3)

Средствами XML никак. Разбирай файл и создавай элемент вручную, либо используй шаблонизатор.

anonymous
()

Cхемы и соответсвенно валидаторы и не умеют такие entities. Может вам повезёт и сработает Xinclude (http://www.w3.org/TR/xinclude/) - хотя не факт что xml-процессор поддерживает и его тоже.

остаётся xslt (хотя там тот-же Xinclude) и закат солнца вручную - собственными средствами

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

А хотел всего лишь уменьшить количество повторяемых участков. Т.е. вынести общие штуки и потом их использовать в разных xml-файлах. Я попробую, но похоже, что игра просто не стоит свеч.

amazpyel ★★★
() автор топика

DOCTYPE - это описалово DTD, у тебя не определены !ELEMENT соответственно валидацию документ не проходит. Возможно что-нить такое

<?xml version="1.0" standalone="no" ?>
<!DOCTYPE doc [
<!ENTITY otherFile SYSTEM "otherFile.xml">
<!ELEMENT doc (foo)>
<!ELEMENT foo (baz)>
<!ELEMENT baz (#PCDATA)>
]>
<doc>
  <foo>
    &otherFile;
  </foo>
</doc>
пройдёт валидацию.

vtVitus ★★★★★
()
Ответ на: комментарий от amazpyel

вынести общие штуки и потом их использовать в разных xml-файлах

оформить goal.xml в виде xslt не вариант?

anonymous
()
Ответ на: комментарий от vtVitus

Спасибо, в этом случае нормально.

amazpyel ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.