我的输入XML如下:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<ns0:PartyInfo xmlns:ns0="http://www.google.com/">
<name xmlns="">John</name>
</ns0:PartyInfo>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns0:OperationRequest xmlns:ns0="http://www.yahoo.com">
<name xmlns="">Mary</name>
</ns0:OperationRequest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
1)第一个问题:在我的XSLT中,我只能为我的“ns0”命名空间声明值,所以我只能访问其中一个节点。我怎样才能访问它们(最好是在同一个xslt文件中)?
2)假设我宣布
xmlns:ns0="http://www.google.com"
然后输出带有额外字符的“John”字符串:
我可以使用normalize-space来解决这个问题,但这似乎不对。
答案 0 :(得分:1)
您在XSLT代码中使用的名称空间前缀不必与源文档中使用的前缀相同。它只是需要匹配的URI。因此,在您的XSLT中,只需将不同的前缀绑定到两个名称空间URI即可。