Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.85.178] |
|
Сообщ.
#1
,
|
|
|
Есть некий xml, который возвращает внешний сервер. В этом xml'е много всего, плюс кое что нужное конкретно мне. Это что-то - xml, полученный путем склейки текста, и обернутый в CDATA, то есть на входе что-то типа такого:
<?xml version="1.0" encoding="UTF-8"?> <tag> <tag2>12345</tag2> <xml><![CDATA[ <group> <oper>op1</oper> <oper>op2</oper> <oper>op3</oper> <group2> <oper>op4</oper> <oper>op5</oper> </group2> </group> ]]></xml> <tag3>abcd</tag3> </tag> Вот то, что лежит в теге <xml> мне и нужно. Проблема в том, что у меня содержимое выкусывается как текст А мне нужен xml. То есть нужно не просто выкусить, но и прогнать через свои шаблончики, преобразовать, и все такое. А как я прогоню, если процессор считает, что это текст... Влиять на входной формат возможности нет, то есть есть, но лишь на содержимое тега <xml>, т.е. внутрь CDATA могу дописать что угодно, если вдруг надо. С какой стороны подойти к решению что-то не соображу, нужно средствами xslt 1.0 |
Сообщ.
#2
,
|
|
|
Эту проблему уже 10 лет решают )
Средствами стандартными xslt 1.0 - никак: у тебя записан текст, и парсеру плевать, ничего он с ним не сделает. Лучшее, что ты можешь сделать - это вывести его в документ, а потом уже этот документ своими шаблончинками колбасить. Есть ещё всякие saxon'овские примочки, об этом на stackoverflow можно посмотреть. Есть ещё вариант строку парсить и самому создавать древовидную структуру, но это уже онанизм какой-то... Хотя от задачи зависит, может тебе и нормально будет - в файл и из файла гонять ещё медленнее будет. Добавлено А ещё не надо постить в третьем часу ночи - косноязычие во все места |
Сообщ.
#3
,
|
|
|
Цитата ss @ Эту проблему уже 10 лет решают ) Эх, фак Цитата ss @ Есть ещё вариант строку парсить и самому создавать древовидную структуру, но это уже онанизм какой-то... Хотя от задачи зависит, может тебе и нормально будет - в файл и из файла гонять ещё медленнее будет. Да нет, быстрее тогда будет сделать внутрях готовую разметку - как в общем-то и сделал по итогу. Просто коряво это как-то |
Сообщ.
#4
,
|
|
|
Цитата Астарот @ Это в каких нутрях? Заместо CDATA? Резонный вопрос, всплывающий не только у меня - а почему сразу не сделать было внутре XML? сделать внутрях готовую разметку - как в общем-то и сделал по итогу. |
Сообщ.
#5
,
|
|
|
Цитата ss @ Это в каких нутрях? Заместо CDATA? Резонный вопрос, всплывающий не только у меня - а почему сразу не сделать было внутре XML? Хм... Знач так - ответ возвращается из оракла посредствам сервера приложений. Сервер приложений - вот непруха-то! - не понимает оракловый xmltype. То есть на стороне оракла данные приходится собирать банально в clob. А clob возвращается в таком вот виде - обернутым cdata'ой. То есть нагенерить там вполне валидный xml я могу, но он все равно будет типа текст, потому что clob, а clob это cdata. Допилить сервер приложений не вариант - не в моей власти |