|
Нужно сделать преобразование для xml документа
|
|||
---|---|---|---|
#18+
Добрый день! Решаю одну задачу, полный затык. Не срабатывают даже оригинальные вещи, а-ля вырезка отдельных нодов. Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
Исходный 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106.
И вот что нужно с ним сделать. авторНеобходимо составить xml документ, содержащий : 1. Элементы с именами 'ContactInfo', 'MultimediaDescription' и 'ImageFormat' должны быть удалены, их потомки поднимаются на уровень выше (т.е. просто теряют родителя). 2. Элементы, в имени которых встречается сочетание 'rds', также должны быть удалены, с переносом их дочерних элементов на уровень выше. 3. Атрибут 'Caption', должен стать дочерним элементом (своего элемента). 4. Если элемент содержит несколько дочерних элементов 'Description', вывести следует только один, который содержит самый длинный текст. 5. Встречающиеся в тексте символы ©, ¶, ∑, Œ - удалить. 6. Элемент 'DescriptiveText' перевести в аттрибут, элемента 'Service'. 7. Все атрибуты и элементы, неупомянутые выше, скопировать без изменений. Какую механику решения я рассматриваю: 1. Вывожу в шаблон дочерние ноды 'ContactInfo', 'MultimediaDescription' и 'ImageFormat' , затем 'ContactInfo', 'MultimediaDescription' и 'ImageFormat' вырезаю. 2. Вырезаю по шаблону <xsl:template match="//[test="*rds*"]" /> 3.Проверяю условие через choose на наличие атрибута 'Caption'. Если есть, то вставляю нод 'Caption' как дочерний. Правда непонятно как это будет работать с выводом всего исходника (думаю будет конфликт) Код: xml 1. 2. 3. 4. 5.
4. Инициализируем param str. Поиск максимальной длины string-length('Description') и затем вывод его в древо. 5. Думаю, будет подходящий вариант с функцией translate() которая "переводит" указанные символы как "". 6. Тут пока что не придумал. Вижу в туториале, что можно создать атрибут вот так <xsl:attribute name="DescriptiveText">. Но тот ли это атрибут? =============================================================================== Вот такие мысли. Помогите, пожалуйста! ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2019, 16:23 |
|
Нужно сделать преобразование для xml документа
|
|||
---|---|---|---|
#18+
Код: xml 1. 2. 3. 4. 5.
автор1. Элементы с именами 'ContactInfo', 'MultimediaDescription' и 'ImageFormat' должны быть удалены, их потомки поднимаются на уровень выше (т.е. просто теряют родителя). Код: xml 1. 2. 3.
автор2. Элементы, в имени которых встречается сочетание 'rds', также должны быть удалены, с переносом их дочерних элементов на уровень выше. Код: xml 1. 2. 3.
автор3. Атрибут 'Caption', должен стать дочерним элементом (своего элемента). Код: xml 1. 2. 3. 4. 5.
автор4. Если элемент содержит несколько дочерних элементов 'Description', вывести следует только один, который содержит самый длинный текст. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
автор5. Встречающиеся в тексте символы ©, ¶, ∑, Œ - удалить. Код: 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
автор6. Элемент 'DescriptiveText' перевести в аттрибут, элемента 'Service'. Код: xml 1. 2. 3. 4. 5.
автор7. Все атрибуты и элементы, неупомянутые выше, скопировать без изменений. Код: xml 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2019, 15:23 |
|
|
start [/forum/topic.php?fid=14&fpage=2&tid=1331915]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
52ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 230ms |
total: | 375ms |
0 / 0 |