XSLT - как поместить оригинальный XML в результат преобразования в режиме вывода текста - PullRequest
5 голосов
/ 01 сентября 2011

Я пытаюсь создать преобразование, вывод которого будет текст, но также включает в себя оригинальный XML.Просто я получил сообщение XML, которое должно быть преобразовано во вставку SQL, но в случае ошибки SQL я хочу вставить оригинальное сообщение XML в базу данных.

Например, ввод:

<message><tag name="foo">dummy</tag></message>

Результат преобразования должен быть таким:

INSERT INTO table (column) VALUES ('dummy')
IF @@error <> 0
BEGIN
   INSERT INTO errMsgLog (message) VALUES ('<message><tag name="foo">dummy</tag></message>')
END

Проблема в том, если я установил выход в XSLT наtext 'нет включенных тегов xml (только значения).Так есть ли смешанный режим вывода или переопределение атрибута?

Спасибо за любую помощь.

Ответы [ 2 ]

4 голосов
/ 01 сентября 2011

Прежде чем подойти к этому решению (не знаю, если с помощью XSLT вы сможете найти какое-то лучшее решение), также рассмотрите проблемы, с которыми вы столкнетесь при гораздо более сложном вводе и выводе.

Даже если пуристы отклонят этот ответ (и вопрос тоже), вы можете использовать метод вывода «xml» для выполнения (очень уродливого) трюка:*

INSERT INTO table (column) VALUES ('dummy')
IF @@error <> 0
BEGIN
     INSERT INTO errMsgLog (message) VALUES ('<message><tag name="foo">dummy</tag></message>')
END
1 голос
/ 01 сентября 2011

Некоторые процессоры (например, Saxon) имеют функцию расширения serialize (), которая позволяет преобразовывать узел XML в сериализованное представление XML, которое функция возвращает в виде строки. Вы можете вызвать это, а затем вывести его в текстовом результате. Если у вашего процессора нет такой функции расширения, то написать ее не составит труда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...