我在使用 XSLT 从 XML 中提取信息时遇到了问题。命名空间也出现在输出中,这是不可接受的。
我从另一个系统收到的 XML
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns1:DeptResponse xmlns:ns1="http://samplecomp.com" xmlns="http://mycomp.org">
<Department>
<Building bid="b_1579">
<DeptName>Sports</DeptName>
<DeptHead>
<Person pid="123">
<Name>David Shephard</Name>
<Address>
<Street>Test</Street>
<State code="18">Georgia</State>
</Address>
</Person>
</DeptHead>
<DeptYear>1925</DeptYear>
</Department>
</ns1:DeptResponse>
</soap:Body>
</soap:Envelope>
我的 XSL 从上述 xml 中提取所需信息:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://samplecomp.com"
xmlns:dept="http://mycomp.org"
exclude-result-prefixes="ns1 xsl dept">
<xsl:template match="/">
<xsl:apply-templates select="//dept:Person"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy copy-namespaces="no" >
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
我在 XSL 之后收到的响应:响应包含一个 xmlns:="http://myccomp.org" 我想摆脱它。我试过使用 copy-namespaces="no" 但没用。:(
<Person xmlns="http://mycomp.org" pid="123">
<Name>David Shephard</Name>
<Address>
<Street>Test</Street>
<State code="18">Georgia</State>
</Address>
</Person>
请帮我。
提前致谢。