0

在将其标记为重复之前,我需要xpath表达式而不是xquery表达式。所以这对我没有帮助:How to check IDREFS length in xPath

此外,我尝试使用此处建议的 id 函数:xpath: contains() 来获取一组答案 ,但这只会为我返回空结果。

如果这很重要,我正在使用 Notpad++ 的 xml 插件。

我有下一个 DTD 定义

<!ELEMENT testNode EMPTY>
<!ATTLIST testNode
      listOfNodes IDREFS #REQUIRED
      bestNode IDREF #REQUIRED
>

当我得到时,/testNode/@listOfNodes我必须检查listOfNodes. 我怎样才能做到这一点 ?

谢谢!

4

2 回答 2

1

xpaht-1.0 的一种可能性是:
检查属性中有多少个分隔符(空格)。这可以通过原始字符串的长度减去不带空格的字符串长度来完成。

string-length( testNode/@listOfNodes) - string-length( translate(/testNode/@listOfNodes,' ',''))

因此,您的测试将是:

string-length( testNode/@listOfNodes) - string-length( translate(/testNode/@listOfNodes,' ','')) +1 > 1 
于 2013-06-07T16:06:25.823 回答
0

要查找仅具有单个标记的属性的出现,我会使用//testNode/@listOfNodes[not(contains(.,' ')]- 如果我被谴责在未经验证的环境中工作,那将更改为//testNode/@listOfNodes[not(contains(normalize-space(.),' ')]. 要查找具有多个 IDREF 令牌的匹配项,请删除not().

于 2013-06-19T18:43:24.517 回答