在将此标记为重复之前,我需要 xpath 表达式而不是 xquery 表达式。所以这对我没有帮助:How to check IDREFS length in xPath
另外,我尝试使用id函数,如下所示:xpath: contains() for a group of answers 但这只会为我返回空结果。
如果重要的话,我正在使用Notpad ++的xml插件。
我有下一个DTD定义
<!ELEMENT testNode EMPTY>
<!ATTLIST testNode
listOfNodes IDREFS #REQUIRED
bestNode IDREF #REQUIRED
>
当我得到/testNode/@listOfNodes
时,我必须检查listOfNodes
中是否有多个参考号。我怎么能这样做?
谢谢!
答案 0 :(得分:1)
xpaht-1.0的一种可能性是:
检查属性中有多少个分隔符(空格)。这可以通过原始字符串的长度减去没有空格的字符串的长度来完成。
string-length( testNode/@listOfNodes) - string-length( translate(/testNode/@listOfNodes,' ',''))
因此你测试的是:
string-length( testNode/@listOfNodes) - string-length( translate(/testNode/@listOfNodes,' ','')) +1 > 1
答案 1 :(得分:0)
要查找仅包含一个令牌的属性,我会使用//testNode/@listOfNodes[not(contains(.,' ')]
- 如果我被判处在未经验证的环境中工作,则会更改为//testNode/@listOfNodes[not(contains(normalize-space(.),' ')]
。要查找包含多个IDREF令牌的匹配项,请删除not()
。