查询xpath中的整数

时间:2012-01-09 06:11:22

标签: xml xpath

我们可以在我的xpath查询中输入整数,如“A / B / 123”。如果没有那么你可以告诉我有没有办法把整数放在xpath

3 个答案:

答案 0 :(得分:2)

XML元素名称的第一个字符仅限于以下集合

  

":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]

http://www.w3.org/TR/REC-xml/#NT-NameStartChar。这不包括数字。

为什么不在标记中使用属性并在XPath查询中搜索该属性,例如

XML

<A>
    <B>
        <C id="123" />
    </B>
</A>

的XPath

A/B/C[@id="123"]

答案 1 :(得分:1)

  

我们可以在我的xpath查询中输入整数,例如“A / B / 123”。

答案为否定,因为在位置步骤/123中,字符串123既不是节点测试,也不是节点名称。

要记住的简单规则是在XML中,名称必须以字母(或下划线)开头,其余字符可以是字母,下划线或数字。这些字母不仅限于拉丁字母(可以来自希腊语,或西里尔语,或......字母)

因此,以下语法都是正确的

/A/B/C123

/A/B/C_123

/A/B/_123

/π/Σ/φ_123

/А/Б/Щ_123

/A/B/C[. = 123]    

/A/B/C[. = '123']

/A/B/C[text() = 123]    

/A/B/C[text() = '123']    

/A/B/C[@someAttribName = 123]

/A/B/C[@someAttribName = '123']

答案 2 :(得分:1)

在XPath 2.0中,表达式X / Y / 123是合法的,但它没有做任何非常有用的事情:它返回一个由与X / Y中的元素一样多的123个实例组成的序列。

正如其他人的回应:你想要实现什么目标?