当前位置: 首页 > 知识库问答 >
问题:

在CQ5/AEM中使用SQL2、SQL、XPath或QueryBuilder查询查找同名同级(SN)

钮博裕
2023-03-14

是否可以在Adobe CQ5/Adobe Experience Manager中使用SQL2、SQL、XPath或QueryBuilder找到同名同级(SN)。我们正在努力准备升级到AEM 6的实例。X和jackrabbit oak已经禁用了对SNS的支持,这使得在不解决这个问题的情况下升级是不可能的。可以递归地遍历存储库,但这太慢了,我正在使用查询寻找更好的选项。SNS的定义如下:

/a/b/c
/a/b/c[2]
/a/b/c[3]

/a/b[2]/c[2]
/a/b/c[3]

我更喜欢SQL2,但也可以选择任何其他选项。请注意,没有函数或xslt是可能的,因为我们谈论的不是xml文档,而是java内容存储库(JCR)。

共有1个答案

羊舌墨一
2023-03-14

在XQuery 1.0或XPath 3.0中,可以找到与上下文节点同名的同级

let $n := node-name(.)
return (preceding-sibling::* | following-sibling::*)[node-name(.) = $n]

或者作为

let $n := node-name(.)
return ../*[node-name(.) = $n] except .

(如果您想在结果中包含原始元素,可以省略“除了”)。

我不认为纯粹的XPath 1.0解决方案是可能的,因为没有范围变量,但是在XSLT 1.0中使用XPath 1.0你可以做到

(preceding-sibling::* | following-sibling::*)
 [local-name(.) = local-name(current()) and 
   namespace-uri(.) = namespace-uri(current())]
 类似资料:
  • 我有下面的查询,它不会产生结果,但不会产生错误。我试图选择所有不是“特色新闻稿”且属于特定类型的页面,例如“公告”。 如果我删除“AND(不包含......”行,我会得到正确的结果。此外,如果我把该行放回去,并删除“AND(包含......”行,我会得到正确的结果。但是同时有两行给我没有结果。有些页面应该是合格的,也就是说,它们不是特色新闻稿,而是类型公告,所以在我看来,逻辑上这应该是可行的。 有

  • 我有一个SQL2查询,用于搜索特定路径的后代节点: 我可以写这个条件,使路径不区分大小写吗?例如,如果我有: 这些节点仍然可以在“/etc/commerce/products/welzijnswinkel/welzijnswinkel/nl/hobby en vrije tijd”下找到。

  • 我正在我们的AEM安装中做一些用法研究。我想找到一个组件的所有实例,看看它们对某个配置选项有什么价值。所以基本上,我想用从所有节点中选择和属性。 我相信JCR-SQL2查询将是: 我的问题是,我找不到运行此查询的UI。 > CRX:DE查询工具(CRX:DE 查询生成器调试器()使用自己的基于URL的查询语法,只输出JSON。我根据URL参数重新创建了查询。。。 ... 但我仍然不想编写代码来解析

  • 我正在为以下代码编写selenium脚本。 这些是如下所示的复选框。复选框的数量将根据数据库值进行更改。 在我的代码中,我首先检查是否选中了“Frau”复选框。所以我试着按照这个片段。 但是当我试图执行这个脚本时<代码>WebElement div=父级。findElement(By.xpath(“前面的同级:::div”)给我第一个div标记,而不是前一个。我想要一个兄弟姐妹。

  • 我有两张有相同字段桌子。(请不要责怪设计)。 以下仅针对示例架构 表A ID 姓名 电话 键 所以,我想在一次查询中从满足条件“keys”的表A或表B中查询id、name,返回字段只有“id”和“name”,不管它是从表A或表B 中查询 从TABELA中选择a.id、a.name、b.id、b.name作为a,TABLEB作为b,其中a.keys=“1”或b.keys=“1” 它将重复的id、na

  • 我正在使用Selenium来自动化一些测试。我对硒有点陌生。因此,我试图验证一个表单。有些字段带有星号,表示必填字段。我目前正在遍历所有可见字段,然后检查前面的元素是否有标签。我还需要检查标签是否有星级。我不太擅长这个xpath的东西,所以任何帮助都将不胜感激。 还有我的HTML结构,其中一些结构有星形类,而另一些没有: