如何在xPath中检查IDREFS计数是否大于1

如何在xPath中检查IDREFS计数是否大于1,xpath,dtd,Xpath,Dtd,在将其标记为重复之前,我需要xpath表达式,而不是xquery表达式。所以这对我没有帮助: 此外,我还尝试使用此处建议的id函数: 但这只会为我返回空结果 如果有必要的话,我正在使用Notpad++的xml插件 我有下一个DTD定义 <!ELEMENT testNode EMPTY> <!ATTLIST testNode listOfNodes IDREFS #REQUIRED bestNode IDREF #REQUIRED > 当我得到

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

此外,我还尝试使用此处建议的id函数: 但这只会为我返回空结果

如果有必要的话,我正在使用Notpad++的xml插件

我有下一个DTD定义

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

当我得到
/testNode/@listOfNodes
时,我必须检查
listOfNodes
中是否有多个ref。我该怎么做


谢谢

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

string-length( testNode/@listOfNodes) - string-length( translate(/testNode/@listOfNodes,' ',''))
因此,您的测试将是:

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

要查找只包含一个标记的属性,我将使用
//testNode/@listOfNodes[not(contains(,'')]
——如果我被迫在未经验证的环境中工作,这将更改为
//testNode/@listOfNodes[not(contains)(规范化空间(.),'')]
。要查找具有多个IDREF令牌的事件,请删除
not()

谢谢。尽管如此,我发现
/testNode[count(id(@listOfNodes))>1]
也可以工作,但从某些方面来看,它在
记事本+
上不起作用。例如,它在这里确实起作用: