powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
3 сообщений из 28, страница 2 из 2
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
    #39822369
Oleg071984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок. Чуть позже.
...
Рейтинг: 0 / 0
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
    #39822380
Oleg071984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Благодарю за понимание. Сегодня чуть позже все подробно объясню.
...
Рейтинг: 0 / 0
XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
    #39822552
Oleg071984
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

_Vasilisk_,

_Vasilisk_Да. Если я пойму, что вам нужно. Сейчас я не понимаю. Вообще


Ок. Не вопрос. Смотрим на xml-источник. Структура не логичная, но в ней можно разобраться.
В нашем конкретном случае в теге <art> содержится структура изделия "Комплекс 1".

1. Принцип построения иерархии:
"Комплекс 1" состоит из "Запчасть 1" и "Запчасть 2", т.е. является им родительским объектом.

Справедливо и обратное - "Запчасть 1" и "Запчасть 2" входят в "Комплекс 1", т.е. являются дочерними объектами.


2. Первый элемент <relation>.
Первый элемент -
Код: xml
1.
<relation id="rel_1" elementtype="form" ref="form_1"/>

задает ссылку на технические параметры главного элемента "Комплекс 1", а именно:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<form id="form_1">
    <formattribute id="fa_1" name="НАИМ" value="Комплекс 1" parmtype="techcard"/>
    <formattribute id="fa_2" name="VART_ID" value="102532" parmtype="search"/>
    <formattribute id="fa_3" name="ART_ID" value="29503" parmtype="search"/>
    <formattribute id="fa_4" name="Идентификатор версии объекта" value="1" parmtype="search"/>
    <formattribute id="fa_8" name="Наименование" value="Комплекс 1" parmtype="search"/>
    <formattribute id="fa_15" name="ART_VER_ID" value="1" parmtype="search"/>
    <formattribute id="fa_16" name="ART_ID_1" value="102532" parmtype="search"/>
  </form>



Дальше все интересней.

3. Элемент <occurrence>.
Служит для хранения ссылки @ref на элементы <item>, которые в свою очередь содержат ссылки на технические параметры "Запчасти 1" и "Запчасти 2", а именно <form_4> и <form_5>.

4. Элемент <occurrence>/<relation>
Хранит ссылки на form_2 и form_3. Эти элементы хранят информацию о связях.
У каждого элемента иерархии есть тег <VART_ID>, который является уникальным ключом.
В <form_2> и <form_3> есть параметр:
Код: xml
1.
<formattribute id="fa_21" name="Идентификатор родительского объекта" value="102532" parmtype="search"/>


@value которого совпадает с <VART_ID> родительского элемента.
Т.е. <VART_ID> "Комплекс_1" будет равен formattribute[@name='Идентификатор родительского объекта']/@value" у <form_2> и <form_3>.

5. Итог
<form_2> и <form_3> хранят информацию о связях элементов в сборке, поэтому они нам нужны только когда будет работать XSL. В итоговом XML они не нужны.
Мы просто берем файл-источник и преобразовываем его структуру в логичную и понятную.
В примере итогового xml:
Код: xml
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.
<?xml version="1.0"?>
<data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Part>
	<importID>form_1</importID> <!-- form/@id -->
	<vartID>102532</vartID> <!-- formattribute/@VART_ID -->
	<artID>29503</artID> <!-- formattribute/@ART_ID -->
	<partName>Комплекс 1</partName> <!-- formattribute/@Наименование" -->
	<objectVersion>1</objectVersion> <!-- formattribute[@name='Идентификатор версии объекта'] -->
</Part>
<Part>
	<importID>form_4</importID>
    <vartID>5817</vartID>
	<ParentID>102532</ParentID> <!-- formattribute[@name='Идентификатор родительского объекта'] -->
	<artID>29824</artID>
    <partName>Запчасть 1</partName>
	<objectVersion>1</objectVersion>
</Part>
<Part>
	<importID>form_5</importID>
	<vartID>102601</vartID>
	<ParentID>102532</ParentID>
	<artID>57599</artID>
	<partName>Запчасть 2</partName>
	<objectVersion>1</objectVersion>
</Part>
</data>



те же самые данные но в более понятном виде.
Смотрим на Part/ImportID=form_1. VART_ID= 102532 . Он будет равен <ParentID> для Part/ImportID=form_4 и Part/ImportID=form_5. Просто и понятно.

6. Для чего все это?
ERP-система, в которую мне необходимо залить данные, не понимает мудреный формат исходного XML.

Надеюсь, что понятно рассказал =) Жду вопросов! Можно вот сюда: oleg071984@gmail.com. В этом случае я смогу отвечать сразу же.
...
Рейтинг: 0 / 0
3 сообщений из 28, страница 2 из 2
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XSLT. Преобразование XML-XML с учетом отношения один-ко-многим.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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