0
當我試圖從我的請求中刪除CDATA時,我遇到了一個有線問題。它在我的本地IDE中正常工作,但在DataPower中不起作用。要求是它應該刪除CDATA標籤,如果它在XML中找到一個,否則它不應該做任何事情。 輸入XML:在DataPower中從XML中刪除CDATA
<response status="200">
<CustomELearningVO>
<ClassListVO>
<![CDATA[
<CLASS_TAB_OBJ>
<CLASS_TAB>
<CLASS_OBJ>
<ClassId>123456</ClassId>
<ClassName>Sample Class1</ClassName>
<Status>Not Attempted</Status>
<Link>link</Link>
<PlayEnable>Y</PlayEnable>
</CLASS_OBJ>
<CLASS_OBJ>
<ClassId>56789</ClassId>
<ClassName>Sample Class2</ClassName>
<Status>Failed</Status>
<Link>link2</Link><PlayEnable>Y</PlayEnable>
</CLASS_OBJ>
<CLASS_OBJ>
<ClassId>56788</ClassId>
<ClassName>Sample Class3</ClassName>
<Status>Failed</Status>
<PlayEnable>N</PlayEnable>
<PlayMessage>"Course cannot be played as Certfication subscribed to Course has Expired"</PlayMessage>
</CLASS_OBJ>
</CLASS_TAB>
</CLASS_TAB_OBJ>
]]>
</ClassListVO>
<eBSErrorCode>0</eBSErrorCode>
<eBSErrorMessage>SUCCESS</eBSErrorMessage>
</CustomELearningVO>
</response>
XSL我使用刪除CDATA:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="." disable-output-escaping="yes" />
</xsl:template>
</xsl:stylesheet>
你有沒有嘗試過其他樣式表?做他們的工作 ?可能是這裏的選項之一https://stackoverflow.com/questions/3708055/extract-cdata-using-xslt? –
我也試過這個,但是到目前爲止還沒有運氣:( – Sammy
這很有可能你的處理器不支持'disable-output-escaping' - 不需要XSLT規範這麼做 –