以下列格式输入XML:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header/>
<s:Body xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ResponseData xmlns="http://testify.com/maxi">
<VALID>true</VALID>
<ERROR_DESC xsi:nil="true"> something gone wrong </ERROR_DESC>
</ResponseData>
</s:Body>
</s:Envelope>
由于命名空间的复杂性,很难将其转换为以下格式。
<STATUS>
<VALID> TRUE </VALID>
<ERROR_DESC> something gone wrong </ERROR_DESC>
</STATUS>
我尝试了几个选项却没有成功。下面没有数据。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<xsl:output method="xml" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:value-of select="s:Envelope//s:Body/s:ResponseData"/>
</xsl:template>
<xsl:template match="s:ResponseData">
<xsl:element name="width">
<xsl:value-of select="s:VALID"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:3)
要获得问题中指定的结果,您需要:
(a)在寻址utilities.Driver.Initialize(Driver.java:34)
元素及其子元素时使用正确的命名空间;和
(b)通过向他们应用模板来实际处理ResponseData
的孩子。
XSLT 1.0
ResponseData
请注意,没有复制任何内容以便不复制命名空间。