| 
 | 
| 
 
Как добавить внешний 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=39115404&tid=1332148]:  | 
    0ms | 
get settings:  | 
    8ms | 
get forum list:  | 
    13ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    53ms | 
get topic data:  | 
    10ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    46ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 245ms | 
| total: | 385ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.