2014-01-18 3 views
0

У меня есть этот XML-файл, где содержимое узла XML является другим XML-документом в строке.XSLT transform xml string внутри узла к дереву узлов xml

<Response> 
    <XML> 
    &lt;Ping&gt; 
     &lt;Success /&gt; 
     &lt;EchoData&gt;Hi, this is a ping!&lt;/EchoData&gt; 
    &lt;/Ping&gt; 
    </XML> 
</Response> 

Мне нужен выход, чтобы это было как ниже XML, используя XSLT, но я не знаю, как я могу решить эту проблему. Я попытался заменить некоторые функции, но не повезло.

Это результат я пытаюсь получить:

<Ping> 
    <Success /> 
    <EchoData>Hi, this is a ping!</EchoData> 
</Ping> 

Возможно ли это?

+0

Это возможно изначально в XSLT 3.0 и возможно с функциями расширения для конкретных процессоров на некоторых процессорах 1.0 и 2.0. Какой процессор XSLT вы используете? –

+1

Или вы можете изучить 'disable-output-escaping', если ваш процессор поддерживает это. –

+0

Спасибо, Ян, отключить-выход-побег сделал трюк! :) – bale3

ответ

0

Как и Ян предложил, я решил это, добавив disable-output-escaping в value-of.

Теперь моя трансформация выглядит так и дает мне результат, который я хочу.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> 
    <xsl:template match="/Response"> 
     <xsl:value-of select="XML" disable-output-escaping="yes" /> 
    </xsl:template> 
</xsl:stylesheet> 
+2

Вам просто нужно быть осторожным с отключением-выходом-экранированием, что он работает только, если ваше преобразование генерирует сериализованный вывод - вы не можете повторно использовать преобразование как часть конвейера или отправить вывод в дерево DOM, например , –

Смежные вопросы