Требуется XSLT для копирования внутреннего XML приходит как строка из узла - PullRequest
0 голосов
/ 03 марта 2019

У меня есть xml, который я хотел бы преобразовать.

XML

<Process xmlns="http://tempuri.org/">
 <Result>-1</Result>
 <Id>qwer1234</Id>
 <xml>
 <![CDATA[<hello type="PROCESS"><process urn="hello"><object></object><object></object></process></hello>]]>
</xml>
</Process>

Я хотел бы извлечь внутренний xml из тега.

XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns="http://tempuri.org/">
<xsl:template match="/Process">
  <xsl:value-of select="xml" disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>

Используя вышеуказанный xslt, если пространство имен (xmlns = "http://tempuri.org/") недоступно во входном XML-файле, я могу получить желаемый выводНо с пространством имен я не могу получить желаемый вывод.

Желаемый вывод

<hello type="PROCESS">
 <process urn="hello">
  <object></object>
  <object></object>
 </process>
</hello>

Я новичок в использовании XSLT. Я буду полезен, яможет выдавать желаемый результат.

1 Ответ

0 голосов
/ 03 марта 2019

Вы объявили префикс, но не используете его.Попробуйте:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns="http://tempuri.org/">
<xsl:output method="text"/>

<xsl:template match="/ns:Process">
  <xsl:value-of select="normalize-space(ns:xml)" disable-output-escaping="yes" />
</xsl:template>

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