我必須使用XSLT轉換我的輸入xml。 它包含CDATA和我需要從CDATA中提取元素,然後我必須重命名標記。XSLT轉換和CDATA
下面是我輸入的xml:
<getArtifactContentResponse>
<return>
<![CDATA[
<metadata>
<overview>
<name>scannapp</name>
<developerId>developer702</developerId>
<stateId>2</stateId>
<serverURL>dddd</serverURL>
<id>cspapp1103</id>
<description>scann doc</description>
<hostingTypeId>1</hostingTypeId>
</overview>
</metadata>
]]>
</return>
</getArtifactContentResponse>
和預期的輸出結果是:我使用
<?xml version="1.0" encoding="UTF-8"?>
<metadata >
<information>
<name>scannapp</name>
<developerId>developer702</developerId>
<stateId>2</stateId>
<serverURL>ddddd</serverURL>
<id>cspapp1103</id>
<description>scann doc</description>
<hostingTypeId>1</hostingTypeId>
</Information>
</metadata>
XSLT低於:
<xsl:output method="xml" version="1.0" encoding="UTF-8" />
<xsl:template match="/">
<xsl:value-of select="//ns:getArtifactContentResponse/ns:return/text()" disable-output-escaping="yes"/>
</xsl:template>
<xsl:template match="overview">
<Information>
<xsl:apply-templates select="@* | node()" />
</Information>
</xsl:template>
有了這個我能夠表達我的意見CDATA,但它不會將元素「overview」重命名爲「Information」。
轉化XML如下:
<?xml version="1.0" encoding="UTF-8"?>
<metadata>
<overview>
<name>scannapp</name>
<developerId>developer702</developerId>
<stateId>2</stateId>
<serverURL>dddddd</serverURL>
<id>cspapp1103</id>
<description>scann doc</description>
<hostingTypeId>1</hostingTypeId>
</overview>
</metadata>
誰能告訴我怎樣才能提取CDATA後重命名標籤? 我不明白我在這裏失蹤了什麼?
在此先感謝
如果您只有XSLT版本1.0可用,則需要在最初的XSLT輸出上運行另一個XSLT以生成所需的輸出。 CData的內容被視爲純文本,因此無法像XSLT一樣處理正常的XML片段。 – har07
相關:1. [轉換內容在CDATA中的xml元素](http://stackoverflow.com/questions/2067116/convert-an-xml-element-whose-content-is-inside-cdata),2。 [使用XSL從CDATA轉換XML](http://stackoverflow.com/questions/18612639/transform-xml-from-cdata-using-xsl) – har07
對我不清楚。你能用上面的例子來解釋一下嗎? – krishh