首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用XPath JCR查询访问jcr:root

如何使用XPath JCR查询访问jcr:root
EN

Stack Overflow用户
提问于 2014-02-17 09:45:42
回答 1查看 1.9K关注 0票数 2

我想在CQ5 dialogs上应用一些java函数。在第一步中,我在myComponent folder中搜索对话框xml文件,如下所示:

代码语言:javascript
复制
NodeIterator tabRequiredFields = getQueryResult("/jcr:root/apps/myProject/pages/myComponent/dialog/jcr:root")

但是这个查询没有提供任何结果。crx工具也没有显示任何结果,请参见下面的图片:

我的/jcr:root/apps/myProject/pages/myComponent/dialog.xml看起来是这样的:

代码语言:javascript
复制
    <?xml version="1.0" encoding="UTF-8"?>
    <jcr:root xmlns:cq="http://www.day.com/jcr/cq/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
        jcr:primaryType="cq:Dialog"
        stateful="false"
        title="Test"
        .....>
       <items
        jcr:primaryType="cq:Widget"
        xtype="panel">
        ...
        ......
       </items>
      .....
   </jcr:root>

我可以访问items,如下所示

代码语言:javascript
复制
NodeIterator tabRequiredFields = getQueryResult("/jcr:root/apps/myProject/pages/myComponent/dialog/items")

这个很好用。我的问题是:为什么是jcr:root?如何检查,是否存在jcr:root

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-17 14:35:09

来自dialog.xml的名为dialog.xml的XML元素不会在存储库中创建jcr:root节点。这是一个特殊的保留标识符,case将该元素的所有属性和子节点放入一个节点中,该节点的名称与没有扩展名的文件名称相同(在您的示例中是dialog)。

如果不清楚,请使用CRX,打开/apps/myProject/pages/myComponent并查看在那里可以找到什么。这就是为什么您应该在路径的末尾添加/dialog而不是/jcr:root

如果要查找所有对话框,请使用主类型cq:Dialog,如rakhi4110建议的那样。以下查询:

代码语言:javascript
复制
/jcr:root/apps/myProject/pages//element(*, cq:Dialog)

将返回来自/apps/myProject/pages (和后代)的所有对话框。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21825575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档