xpath中从未使用过哪些字符?

时间:2015-09-15 14:03:57

标签: xpath

我正在尝试构建一个包含许多XPath作为参数的DSL。我是XPath的新手,我需要一个从未在XPath语法中使用的字符,因此我可以在一行脚本上划分n个XPath。我的问题:哪些字符不属于XPath语法?

2 个答案:

答案 0 :(得分:1)

空字符。

严重。因为XPath应该支持任何XML文档,所以它必须能够匹配包含任何允许的Unicode字符的文本节点。但是,XML不允许使用一个字符:空字符。

好的,这不完全正确,但最简单。与在XML 1.1中一样,支持控制字符,但Unicode Null除外。但是,根据XML 1.0 production of Char,您可以选择其他一些字符:代理对(作为字符,而不是表示非BMP字符的正确编码的八位字节),以及0x20之前的任何字符,除了换行符,运输返回和标签。

另一个好的猜测是任何私人使用角色,因为它不太可能被你的输入文件使用,但是,这不能保证,你要求"永远"。

答案 1 :(得分:1)

  

我正在尝试构建一个包含许多XPath作为参数的DSL。

好吧,很多人都使用XML进行DSL,这就是你用XML做的方式:

injectMembers

那么我们如何将这与“<”这一事实相协调可以出现在XPath表达式中吗?答:如果确实出现了,我们就逃避了:

<paths>
  <path>/a/b/c/d</path>
  <path>/w/x/y/z</path>
</path>

所以:不要试图找到一个不能出现在XPath表达式中的字符。使用可以出现的字符,如果出现则将其转义。