我有一個xml文檔(輸入文件無法更改),我需要用xsl轉換爲另一個xml。輸入XSL有CDATA如以下的示例結構:XSL:轉義CDATA並解析爲XML每個內部
<TestCaseElement>
<Role>VP</Role>
<Code>
<Line>
<![CDATA[<id>l1_SomeId1</id> <val1>l1_SomeVal1</val1> <val2>l1_SomeVal2</val2> <algo>l1_somealgo</algo>]]>
</Line>
<Line>
<![CDATA[<id>l2_someid1</id> <val1>l2_SomeVal1<val1> <val2>l2_SomeVal2<val2> <algo>l2_somealgo</algo>]]>
</Line>
</Code>
<TestCaseElement>
預期的結果是這樣的:
<Expected>
<MEASV id="l1_SomeId1" val1="l1_SomeVal1" val2="l1_SomeVal2" algo="l1_somealgo">
<MEASV id="l2_SomeId1" val1="l2_SomeVal1" val2="l2_SomeVal2" algo="l2_somealgo">
</Expected>
我的XSLT是這樣的:
<Expected>
<xsl:for-each select="TestCaseElement[(Role='VP')]/Code/Line">
<xsl:for-each select="current()/*">
<MEASV>
<xsl:attribute name="{fn:local-name()}"><xsl:value-of select="current()"/></xsl:attribute>
</MEASV>
</xsl:for-each>
</xsl:for-each>
</Expected>
問題是xslt無法識別CDATA中的標籤。我如何爲每個應用一種禁用輸出轉義?或者任何其他方法來解決這個問題?
哪個XSLT處理器將您使用? –
處理器位於名爲「MBT套件」的程序中。但看看關於我的頁面,我發現它說「Saxon-HE 9.5.1」。我認爲這是XSLT處理器。 –
檢查Saxon文檔以查看是否支持將字符串解析爲XML作爲擴展。否則,您需要兩次完成此操作,其中第一次執行DOE並將結果保存到文件中。 –