|
Как добавить внешний xml-файл в ноду основного XML-файла при XSLT?
|
|||
---|---|---|---|
#18+
У меня есть XML-файл, в который внесены различные устройства. У XML-файла примерно такая структура: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
/Data/References/Devices/Device — это список. /Data/References/DeviceTree — это иерархическое дерево из Device произвольной вложенности, выглядит примерно так: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Этот XML преобразуется с помощью файла XSL, используется процессор SAXON9 (в XSL используются словари и подключаются внешние файлы). Еще у меня будет отдельный XML-файл со списком дополнительных устройств. И мне его нужно вывести в одном определенном месте дерева (к примеру в /Data/References/DeviceTree/DeviceItem[@name='list']/PortItem[@name='special']). Не могу сообразить, как это лучше сделать. Можно ли подключись внешний XML-файл прямо внутрь дерева? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2015, 10:33 |
|
Как добавить внешний xml-файл в ноду основного XML-файла при XSLT?
|
|||
---|---|---|---|
#18+
Alibek B.Можно ли подключись внешний XML-файл прямо внутрь дерева? Код: xml 1.
Alibek B.процессор SAXON9Вроде, поддерживает ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2015, 20:38 |
|
Как добавить внешний xml-файл в ноду основного XML-файла при XSLT?
|
|||
---|---|---|---|
#18+
Еще есть функция document() ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2015, 20:58 |
|
Как добавить внешний xml-файл в ноду основного XML-файла при XSLT?
|
|||
---|---|---|---|
#18+
А примером не поможете? Во внешнем файле нужный список находится в /Data/References/Devices/Device. Этот список мне нужно "вставить" в /Data/References/Devices/Device как есть (со всеми атрибутами). И в /Data/References/DeviceTree/DeviceItem[@name='list']/PortItem[@name='special'] (как DeviceItem с атрибутом @name). Просто xi:include вставит документ с сохранением структуры, то есть получится /Data/References/Devices/Device/Data/References/Devices/Device. Функция document на первый взгляд проще, но я не пойму, что с ней делать дальше. Мне нужно со вставленным файлом работать как с основным, то есть нужно слияние данных. Вот фрагмент XSL-файла: Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
Мне нужно, чтобы key('device',@device,$ref) мог работать с добавленными данными из файла netextra.xml. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2015, 00:22 |
|
Как добавить внешний xml-файл в ноду основного XML-файла при XSLT?
|
|||
---|---|---|---|
#18+
Поясню, в чем я вижу сложность с document. Допустим я делаю так: Код: xml 1. 2. 3. 4. 5. 6. 7.
Затем в документе используются ссылки на справочник устройств. Получается, что мне нужно делать так: Код: xml 1. 2. 3.
Но таким образом шаблон сильно усложняется и становится громоздким. Я бы хотел просто добавить содержимое внешнего файла к существующей ноде (а вернее не добавить, а слить две ноды из двух файлов). Пока что я это делаю физически — из скрипта открываю netdata.xml, открываю netextra.xml, в цикле перебираю узлы из netextra.xml и добавляю их в /Data/References/Devices/Device и /Data/References/DeviceTree файла netdata.xml, после чего сохраняю результат во временный файл netmerge.xml, и в XSL использую этот временный файл. Но хотелось бы обойтись без временных файлов и скрипта предобработки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2015, 10:53 |
|
|
start [/forum/topic.php?fid=14&msg=39115303&tid=1332148]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 157ms |
0 / 0 |