XSLT:相同名称空间的不同值

时间:2012-05-11 06:51:23

标签: xml xslt

我的输入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”字符串:

enter image description here

我可以使用normalize-space来解决这个问题,但这似乎不对。

1 个答案:

答案 0 :(得分:1)

您在XSLT代码中使用的名称空间前缀不必与源文档中使用的前缀相同。它只是需要匹配的URI。因此,在您的XSLT中,只需将不同的前缀绑定到两个名称空间URI即可。