在Alfresco JavaScript控制台中使用XPath查询节点类型求助
Alfresco XPath查询:按类型过滤子节点及排除缩略图方案
正确的查询写法
1. 筛选指定类型的后代节点(含多级子节点)
要匹配目标节点下所有doc:doc类型的节点,同时排除缩略图,使用以下语法:
node.childrenByXPath("//*[@type='doc:doc' and @cm:name != 'cm:thumbnail']")
如果只需要直接子节点(不包含孙节点及更深层级),将路径中的//*改为*即可:
node.childrenByXPath("*[@type='doc:doc']")
2. 精准排除缩略图节点
缩略图通常存储在cm:renditions容器下,若要彻底排除这类节点,可结合祖先节点判断:
node.childrenByXPath("//*[@type='doc:doc' and not(ancestor::*[@cm:name='cm:renditions'])]")
你的写法无效的原因
*//[@type='doc:doc']:语法错误,*//后缺少节点选择器,正确结构应为//*[@属性='值']*//.[TYPE='doc:doc']:Alfresco XPath中类型属性是小写@type,且.指代当前节点,逻辑与语法均错误TYPE='doc:doc'/+TYPE='doc:doc':缺少节点选择器和属性前缀@,不符合Alfresco的查询规则
验证技巧
在JavaScript控制台中,可通过日志输出验证查询结果:
var matchedNodes = node.childrenByXPath("//*[@type='doc:doc']"); for (var i = 0; i < matchedNodes.length; i++) { logger.log(matchedNodes[i].name + " | 类型:" + matchedNodes[i].type); }
内容的提问来源于stack exchange,提问作者Alessandro Carraro
相关产品推荐
相关产品推荐

