Xpath AEM/Oak:检查jcr:内容节点是否存在
由于CQ/AEM会在作者使用语言复制工具仅将子语言复制到另一种语言(而不是父语言)时创建损坏的页面,因此我实现了一个工具来检查这些损坏的页面,并有办法修复它们。在CQ 5.6.1中,我使用了以下XPath:Xpath AEM/Oak:检查jcr:内容节点是否存在,xpath,aem,jackrabbit-oak,Xpath,Aem,Jackrabbit Oak,由于CQ/AEM会在作者使用语言复制工具仅将子语言复制到另一种语言(而不是父语言)时创建损坏的页面,因此我实现了一个工具来检查这些损坏的页面,并有办法修复它们。在CQ 5.6.1中,我使用了以下XPath: /jcr:root/content//*[@jrc:primaryType='cq:Page' and not(jcr:content/fn:name()='jcr:content')] 现在,我正在AEM 6实例上运行相同的代码,虽然错误对我来说没有意义,但此查询不再有效: /jcr:r
/jcr:root/content//*[@jrc:primaryType='cq:Page' and not(jcr:content/fn:name()='jcr:content')]
现在,我正在AEM 6实例上运行相同的代码,虽然错误对我来说没有意义,但此查询不再有效:
/jcr:root/content//*[@jrc:primaryType='cq:Page' and not(jcr:content/fn:name((*))='jcr:content')]; expected: )
尽管您可以看到,由于某种原因,它在fn:name函数中添加了(*)
那么,如何修复此Oak查询,或者如何检查AEM 6中的损坏页面?这对我在AEM 6.1上很有效
/jcr:root/content//element(*,cq:Page)[not(jcr:content)]
这在AEM 6.1上对我有效
/jcr:root/content//element(*,cq:Page)[not(jcr:content)]
你真的应该设法治好那个人。我告诉你一件事。如果没有
jcr:content/
部分,它可以工作,因此您应该能够进一步理解它。我不确定您的意思,但如果我尝试在CRXDE Lite中进行查询,它对我来说就不起作用。它不会抛出错误,但也不会找到损坏的页面。你真的应该尝试修复那个人。我告诉你一件事。如果没有jcr:content/
部分,它可以工作,因此您应该能够进一步理解它。我不确定您的意思,但如果我尝试在CRXDE Lite中进行查询,它对我来说就不起作用。它没有抛出错误,但也没有找到损坏的页面。很抱歉响应太晚(将近一年),但迁移被推迟,问题再次出现。关于您的方法:它没有抛出错误,但仍然找不到我想要的节点。很抱歉响应太晚(将近一年),但是迁移被推迟了,问题再次出现。关于您的方法:它不会抛出错误,但仍然找不到我想要的节点。