一个非常基本的XPath错误

时间:2012-06-28 18:31:49

标签: xml xpath

我正在使用http://xpath.online-toolz.com/tools/xpath-editor.php 作为在线XPath评估者。我尝试了其他一些但是它们都是一样的

我的xml中有以下内容: -

<?xml version="1.0"?>
<test xmlns="abc">
</test>

现在XPath查询

/
.

给我输出: -

<test xmlns="abc">
</test>

然而,查询

test
/test
//test

根本不给我任何输出。我正在做一个非常基本的错误,但我无法弄清楚是什么。我认为它与命名空间有关,但将查询更改为

abc:test

也无济于事,因为它会产生无效表达式错误。

我正在使用http://www.w3schools.com/xpath http://www.tizag.com/xmlTutorial/xpathtutorial.php&amp; http://oreilly.com/perl/excerpts/system-admin-with-perl/ten-minute-xpath-utorial.html

作为XPath教程的源代码。

1 个答案:

答案 0 :(得分:1)

目标文件中没有明确的名称空间前缀,但您仍需要满足它们。你可以写

/*[local-name()='test' and namespace-uri()='abc']

您的“abc”是namespaceURI,而不是命名空间前缀。它可能是无效的,因为大多数工具会测试它的URI形式,如

http://www.abc.com/

更好的文件是:

<test xmlns="http://www.abc.com">
</test>

当您的查询为:

/*[local-name()='test' and namespace-uri()='http://www.abc.com/']

我已经在您的网站上对此进行了测试,但确实有效。

表格

abc:test

将取决于将前缀abc设置为'http://www.abc.com/'的机制,并且网站上似乎没有机制