|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Скажите, пожалуйста, как сделать такое XSLT-преобразование, которое бы обработало входной XML и удалило из него теги, непомеченные специальным элементом в аннотации к тегу в XSD элементу и заменило бы имя тега на имя из специального элемента из аннотации. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 12:11 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Да вот брать и делать. Вопрос в чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 12:57 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
_Vasilisk_, Вы можете показать пример, документацию или что-то еще по теме моей задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 13:47 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Стас Агарков, я просто не могу понять в чем проблема? Документацию по чем? Что уникального в Вашей задаче по сравнению с другой? Вам нужно пара шаблонов и функция document(). Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 14:42 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
_Vasilisk_ Вероятно автор имеет ввиду решение в общем случае. Типа есть набор произвольных пар xml+xsd, нужен такой универсальный xsl, который на основании xsd смог бы привести к нужному виду любой xml. Или я не так понял? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 14:49 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
_Vasilisk_, Можете объяснить как написать эти пару шаблонов? Я не могу разобраться... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 14:50 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Antonariy, вы правильно поняли! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 14:50 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Это невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 14:57 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
По крайней мере с помощью xsl. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:01 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Antonariy, Возникла идея сделать в два этапа: написать XSLT, которая из XSD будет строить второй XSLT для текущей схемы документы, а потом с помощью второй XSLT преобразовывать реальный документ в нужный вид. Такое можно провернуть? P.S. Если мне нужно вытянуть xs:element в xs:element, то какое выражение мне нужно написать в select? Пишу "xs:element/*/xs:element" — не работает, а так "xs:element/**/xs:element" — не компилируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:02 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Про xsl забудьте, нужно писать программу. Алгоритм примерно такой: берем корневой тег исходно xml со всеми его атрибутами, копируем в новый документ, валидируем схемой. Если есть ошибка, разбираемся в ее сути, исправляем, возможно подтягивая для этого данные из исходного документа, валидируем опять. Повторяем пока ошибка не исчезнет. Потом берем первого потомка и добавляем в этот новый документ, опять валидируем. И т.д. Может так случиться, что потомок оказался необходимым для валидации родителя на предыдущей итерации, такие варианты тоже нужно предусматривать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:11 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Вообще задача интересная, я бы ее порешал, если бы было нечем заняться )) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:16 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Antonariy, мне не нужно валидировать. Нужно просто профильтровать исходный XML. Например, такой XSD: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Достать отсюда все xs:element, у которых вложенный xs:element с именем abc имеет значение true. Все подходящие сюда элементы вывести в один список со строками такого вида: Код: xml 1.
После этого XSLT такого вида Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9.
удалит лишнее. Я иду в правильном направлении? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:17 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
AntonariyЭто невозможно.Сильно не уверен. Основная проблема - это найти для произвольного элемента его описание в XSD. Для этого нужно для корневого элемента найти его определение с схеме, а потом просто перемещаться по схеме параллельно с перемещением по документу... В конечном счете это выльется в обычный валидатор по схеме, но написанный на XSL. Что довольно круто Так, что, пожалуй, задача решаема. Вопрос в трудозатратах. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:23 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Стас АгарковЕсли мне нужно вытянуть xs:element в xs:element, то какое выражение мне нужно написать в select?Это не так просто. Элемент может быть определен по ссылке и может быть вложен в произвольное число xsd:group и xsd:choice, которые, также могут быть определены по ссылке. О банальных xsd:sequence я молчу. Вторая засада - это именованные complexType. Если решить эти две проблемы, то все остальное просто. Я пока молчу о нескольких XSD, но с этим тоже просто. Поэтому пока на это внимания обращать не стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:32 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Стас Агарковмне не нужно валидировать. А как вы узнаете, что результат фильтрации валиден? Конечная инстанция — xsd, а не ваше мнение, что правка сделала именно то, что надо. Стас АгарковНапример, такой XSD:Это ерунда, а не пример. Элемент abc находится в секции комментариев и в валидации не участвует. Стас АгарковЯ иду в правильном направлении?Вы идете в направлении частного случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:35 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Antonariy, именно в секции annotation он и должен/будет находиться. Там планируется хранить метаинформацию, на основании которой определять включать поле в результирующий XML или нет. Всё таки я не очень понял насчет валидации... Фактически никто результат трансформации валидировать не будет. Задача в том, чтобы XML получить и всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:39 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
_Vasilisk_Я пока молчу о нескольких XSD, но с этим тоже просто.Тогда я промолчу об extention/restriction )) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:40 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Стас АгарковAntonariy, именно в секции annotation он и должен/будет находиться. Там планируется хранить метаинформацию, на основании которой определять включать поле в результирующий XML или нет.Каким-то неестественным образом вы xsd используете. Запись Код: xml 1. 2. 3. 4.
уже определяет, что никакого abc в country быть не может. Фактически никто результат трансформации валидировать не будет. Задача в том, чтобы XML получить и всё.Значит нет никаких гарантий, что результат будет правильным. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:53 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
Двухфазное преобразование это хорошо (потом обе фазы можно будет слить в одну). Только из схемы нужно генерировать не 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:55 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
AntonariyТогда я промолчу об extention/restriction ))Да. С этим будет еще веселее ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 15:58 |
|
Преобразовать XML с помощью XSLT, используя XSD
|
|||
---|---|---|---|
#18+
_Vasilisk_AntonariyТогда я промолчу об extention/restriction ))Да. С этим будет еще веселееВот поэтому я предложил все это веселье переложить на стандартный xsd-валидатор, а собственные действия предпринимать на основании его диагноза. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2012, 16:07 |
|
|
start [/forum/topic.php?fid=14&fpage=23&tid=1332745]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 156ms |
0 / 0 |