我想在CQ 5.6(AEM)实例中包含的JCR存储库中搜索所有包含给定字符串.jsp
的xxx
文件。作为JCR对XPath(或JCR-SQL2)的解释的新手,我在表达查询方面不是很成功。
这将为我提供所有.jsp
文件:
//*[jcr:contains(., '.jsp')]
这就是我希望限制上面包含
.jsp
的xxx
文件列表的方式://*[jcr:contains(., '.jsp')][jcr:contains(jcr:content/@jcr:data, 'xxx')]
//*[jcr:contains(., '.jsp') and jcr:contains(jcr:content/@jcr:data, 'xxx')]
//*[jcr:contains(., '.jsp')]/jcr:content[jcr:contains(@jcr:data, 'xxx')]/..
@jcr:data
类型为Binary
。以上似乎都不起作用。我要去哪里错了? 最佳答案
看起来查询应该在nt:file节点上,而不是在jcr:data节点上。请参阅JCR - Jackrabbit - Xpath expression for search content text of a file contained inside a node的答案。
使用querybuilder进行的快速测试显示了来自CQ中的JSP文件的结果(在此示例中,它们包含“ /foundation/global.jsp”):
http://localhost:4502/bin/querybuilder.json?type=nt:file&nodename=*.jsp&group.1_fulltext=foundation/global.jsp
给出:
{
success: true,
results: 10,
total: 21,
offset: 0,
hits: [
{
path: "/libs/cq/personalization/components/offerpage/body.jsp",
excerpt: " --%><%@include file="/libs/<strong>foundation/global.jsp</strong>"%><% I18n i18n = new I18n(slingRequest); String icnCls = ...",
name: "body.jsp",
title: "body.jsp",
lastModified: "2013-04-24 11:45:05",
created: "2013-04-24 11:32:58",
size: "3 KB",
mimeType: "text/plain"
},
...
}
关于java - 如何使用JCR XPath搜索jcr:content/@ jcr:data?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16191395/