Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединение двух xml-файлов / 7 сообщений из 7, страница 1 из 1
03.03.2005, 01:24
    #32942581
mergexml
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух xml-файлов
Вопрос по 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
03.03.2005, 02:31
    #32942591
ejik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух xml-файлов
Не понял на счёт DTD. Вопрос как вставлять данные или Вас беспокоит, что original DTD что не будет соответствовать структуре осле merg-а?
...
Рейтинг: 0 / 0
03.03.2005, 10:40
    #32942992
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух xml-файлов
Если 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
03.03.2005, 13:14
    #32943510
mergexml
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух xml-файлов
ejikНе понял на счёт DTD. Вопрос как вставлять данные или Вас беспокоит, что original DTD что не будет соответствовать структуре осле merg-а?
Последнее. main.xml должен быть valid.
В принципе как вставлять данные тоже интересует. Потому, что я ожидал что это делается с использованием XSLT.


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

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


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

Опубликуй оба DTD и мы подумаем, что можно сделать.
...
Рейтинг: 0 / 0
04.03.2005, 12:25
    #32945940
mergexml
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Объединение двух xml-файлов
Вот два 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
Форумы / Java [игнор отключен] [закрыт для гостей] / Объединение двух xml-файлов / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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