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

如何使用XPath jcr查询访问jcr:root,xpath,aem,jcr,Xpath,Aem,Jcr,我想在CQ5对话框上应用一些java函数。在第一步中,我在myComponent文件夹中搜索对话框xml文件,如下所示: NodeIterator tabRequiredFields = getQueryResult("/jcr:root/apps/myProject/pages/myComponent/dialog/jcr:root") 但此查询不提供任何结果。crx Xpath工具也不显示任何结果,请参见下图: my/jcr:root/apps/myProject/pages/myCom

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

NodeIterator tabRequiredFields = getQueryResult("/jcr:root/apps/myProject/pages/myComponent/dialog/jcr:root")
但此查询不提供任何结果。crx Xpath工具也不显示任何结果,请参见下图:

my/jcr:root/apps/myProject/pages/myComponent/dialog.xml如下所示:

    <?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>

这个很好用。我的问题是:
jcr:root的原因是什么?如何检查
jcr:root
是否存在?
对话框中名为
jcr:root
的XML元素。XML
不会在存储库中创建
jcr:root
节点。它是一个特殊的保留标识符,CRX软件包管理器将此元素的所有属性和子节点放入一个节点,该节点的名称与文件名相同,没有扩展名(在您的情况下,它将是
对话框

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

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

/jcr:root/apps/myProject/pages//element(*, cq:Dialog)

将返回来自
/apps/myProject/pages
(及其子体)的所有对话框。

我怀疑dialog.xml是否会以这种方式呈现,至少与我的CQ实例相比,dialog.xml不是这样构造的。据我所知,只有根节点(“/”)在xml中导出为jcr:root。所以这看起来有点奇怪。您能告诉我您使用的是哪一版本的CQ吗?我使用的是cq5.4版本,我的dialog.xml的结构如前所述:)。我想知道,除了jcr:rootWell我使用cq5.5之外,我可以访问所有节点。为什么不试试/jcr:root/apps/myProject/pages/myComponent/dialog而不是/jcr:root/apps/myProject/pages/myComponent/dialog/jcr:root?因为不是所有对话框都命名为dialog.xml在这种情况下,试试/jcr:root/libs/foundation/components//element(*,cq:dialog),这将返回所有对话框,而不管它们的名称如何。这一点很清楚。但我不能使用/dialog,因为并非所有对话框都命名为dialog。在这种情况下,如何识别dialog.xml?
dialog.xml
只是CQ包中的一个文件。此特定名称不会出现在存储库中。您应该使用
cq:Dialog
primary类型来列出来自特定位置的对话框,正如rakhi4110在他的评论中所建议的那样。
/jcr:root/apps/myProject/pages//element(*, cq:Dialog)