我们已经有了一个Web服务,它返回一个非常简单的XML。XML:声明了一个名称空间前缀,当它实际上是
<?xml version="1.0"?>
<t:RequestResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://our.website.com/ns/" xmlns:t="http://our.website.com/ns/">
<t:Result>No candy for you today.</t:Result>
<t:Success>false</t:Success>
</t:RequestResult>
调用者使用XMLHTTP得到这个XML没问题。 但XPath查询不agains这个XML,因为工作“引用了未声明的命名空间前缀:‘T’”
为什么会这样?我会说't'前缀有点声明。 此文件以任何方式失效吗?
如果您想知道为什么我们必须首先使用use XmlNamespaceDeclarations to add namespace prefixes,那是因为否则生成的文档无法查询,因为它有一个目标名称空间,但没有它的前缀,所以XPath会忽略节点名称因为它们不属于被请求的(空的)名称空间,我们不想使用像"//*[namespace-uri()='http://our.website.com/ns' and local-name()='RequestResult']"
这样的构造。
我想使这是一个被接受的答案。但是它仅仅反驳了实际的答案,所以,为了未来读者的方便,你能否将我的答案纳入你的答案,以便我可以接受它作为一个整体? – GSerg 2010-01-28 13:29:30