powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединение двух xml-файлов
7 сообщений из 7, страница 1 из 1
Объединение двух xml-файлов
    #32942581
mergexml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по XML. Подскажите плиз как можно вставлять в xml-документ с DTD_1 данные из другого xml c DTD_2. Изменять DTD у main.xml нельзя. Не знаю имеет ли это значение, но DTD_2 имеет несложную структуру - пара элементов и атрибутов.

main.xml:
<...>
<... DTD_1>
<main>
....
<inserthere>
item with id=2 from collection.xml
</inserthere>
.....

<inserthere>
item with id=40 from collection.xml
</inserthere>
....
</main>


collection.xml:
<...>
<... DTD_2>
<collection>
<item id="2">aaa</item>
<item id="3">bbb</item>
......
<item id="229">vvv</item>
.....
</collection>
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32942591
Фотография ejik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял на счёт DTD. Вопрос как вставлять данные или Вас беспокоит, что original DTD что не будет соответствовать структуре осле merg-а?
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32942992
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если DTD обоих документов отличаются, и изменять DTD#1 нельзя то тогда есть два пути решения проблемы.

1) Изменить DTD#2 таким образом чтобы он стал "вложением" в DTD#1

2) Просто преобразовать документ №2 в строку и вставить ее в значение элемента insertthere документа №1

Код: plaintext
1.
2.
3.
4.
5.
<?xml version="1.0"?>
<main>
	<inserthere><item id="2">aaa</item></inserthere>
	<inserthere><item id="3">bbb</item></inserthere>
</main>

или как сущность CDATA

Код: plaintext
1.
2.
3.
4.
5.
<?xml version="1.0"?>
<main>
	<inserthere><![CDATA[<item id="3">ccc</item>]]></inserthere>
	<inserthere><![CDATA[<item id="4">ddd</item>]]></inserthere>
</main>
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32943510
mergexml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ejikНе понял на счёт DTD. Вопрос как вставлять данные или Вас беспокоит, что original DTD что не будет соответствовать структуре осле merg-а?
Последнее. main.xml должен быть valid.
В принципе как вставлять данные тоже интересует. Потому, что я ожидал что это делается с использованием XSLT.


1) Изменить DTD#2 таким образом чтобы он стал "вложением" в DTD#1
Сорри, я не понял :) Как это сделать?
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32943752
wessen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Последнее. main.xml должен быть valid.
Тогда делай так, как mayton сказал, вложенный XML помещай в секцию CDATA и будет тебе valid. И ничего с DTD мудрить не надо.

В принципе как вставлять данные тоже интересует. Потому, что я ожидал что это делается с использованием XSLT.
JAXP пользуй, а через XSLT не знаю как можно файлы сливать, по крайней мере так, как ты хочешь.
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32943789
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mergexml ejikНе понял на счёт DTD. Вопрос как вставлять данные или Вас беспокоит, что original DTD что не будет соответствовать структуре осле merg-а?
Последнее. main.xml должен быть valid.
В принципе как вставлять данные тоже интересует. Потому, что я ожидал что это делается с использованием XSLT.


1) Изменить DTD#2 таким образом чтобы он стал "вложением" в DTD#1
Сорри, я не понял :) Как это сделать?

Опубликуй оба DTD и мы подумаем, что можно сделать.
...
Рейтинг: 0 / 0
Объединение двух xml-файлов
    #32945940
mergexml
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот два DTD:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
main.dtd
--------
<!ELEMENT ttml (Attribute*,Info*,Definitions?,Display?)              >
....
<!ELEMENT Attribute EMPTY >
<!ATTLIST Attribute
  name     CDATA  #REQUIRED
  content  CDATA  #IMPLIED >
.....
<!ELEMENT Definitions (Attribute*,Sequences?,Insertthere?)          >
.....
<!ELEMENT Insertthere (#PCDATA) >
<!ATTLIST Insertthere
  name     CDATA  #REQUIRED
  desc   CDATA  #IMPLIED >
.....

collection.dtd:
-------------
<!ELEMENT List (Item?)              >
....
<!ELEMENT Item (#PCDATA) >
<!ATTLIST Item
  id     CDATA  #REQUIRED
  name   CDATA  #REQUIRED
  val1   CDATA  #REQUIRED 
  val2   CDATA  #REQUIRED
  val3   CDATA  #REQUIRED
  val4   CDATA  #REQUIRED >


Нужно вставлять некоторые элементы Item из collection.xml в элемент Insertthere в main.xml (c main.dtd). Main.dtd менять не желательно. После вставки из main.xml будет извлекаться информация (в том числе возможно и из child node of Insertthere) с помощью XQuery.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединение двух xml-файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]