|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
Привет всем. Прошу помочь разобраться с XSLT. Стоит задача выбрать определённый набор узлов из HTML-документа и преобразовать его - обернуть каждый узел в div и span. К примеру: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
У узлов будет множество атрибутов. В этом вся загвоздка. Пишу xsl-документ: Код: 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.
Всё хорошо "оборачивается". Но как только я пытаюсь добавить или скопировать атрибуты, сразу же лезут ошибки. К примеру, если пишу Код: xml 1. 2. 3. 4. 5.
выдаётся "XSLTProcessor::importStylesheet(): element template only allowed as child of stylesheet" и "XSLTProcessor::importStylesheet(): XSLT-apply-templates: could not compile select expression '@color*'" Идеальный вариант был бы через for-each прогнать все атрибуты и скопировать/создать их, но ничего не выходит. Стоит ли что-то существенно переделать, избавившись от цикла, или дополнить текущий функционал? Буду очень признателен за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 15:49 |
|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
av84 Код: xml 1.
Что Вы хотели этим сказать? * зачем? Пишите или @* или @color ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 16:34 |
|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
Фигня какая-то понаписана. Вот шаблон по умолчанию, который создает вижуал студия: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Он делает копию всего 1 в 1. Если нужно, например tr заменить на div, то к нему дописывается: Код: xml 1. 2. 3. 4. 5. 6. 7.
Тоже самое с td и th: Код: xml 1. 2. 3. 4. 5. 6. 7.
Соответственно скопируются и атрибуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2015, 16:39 |
|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
_Vasilisk_, авторЧто Вы хотели этим сказать? * зачем? Пишите или @* или @color Прошу прощения. Эта * случайно попала в сообщение. Код без неё, и также не работает. Antonariy, не совсем скопировать. Мне нужно пройтись по всем узлам документа, выбрать определённый набор узлов, и заменить: - p, h1-h6 на div>span с таким же значением узлов, а атрибуты скопировать в span; - tr на div; - td на span. То есть, к примеру, из документа: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
нужно получить Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Узлы заменяются, а атрибуты не выходит скопировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2015, 09:05 |
|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
av84Эта * случайно попала в сообщение.И она же случайно попала в сообщение об ошибке? av84"XSLTProcessor::importStylesheet(): XSLT-apply-templates: could not compile select expression '@color*'" av84а атрибуты не выходит скопировать.Что из этого Antonariy Код: xml 1. 2. 3. 4. 5.
у Вас не получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2015, 14:18 |
|
XSLT: корректно добавить атрибуты
|
|||
---|---|---|---|
#18+
_Vasilisk_ , скорее всего это потому, что элемент не был дочерним по отношению к stylesheet ("element template only allowed as child of stylesheet"). Спасибо вам за уделённое внимание. Мне подсказали, как это можно реализовать. Если вдруг кому-то пригодится: Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2015, 08:20 |
|
|
start [/forum/topic.php?fid=14&msg=38858676&tid=1332258]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 235ms |
total: | 495ms |
0 / 0 |