我们正试图让所有包含属性值的节点从字符串"/content/retail/mx/mexico/es/"
下面开始。为此,我们编写了一个AEM XPath查询:
/jcr:root/content/retail/mx/mexico//*
[
jcr:contains(., '/content/retail/mx/mexico/es/' )
]
我们正在获得结果,但问题是我们正在获得那些包含属性值"/content/retail/mx/mexico/es_mexico"
的节点的结果。似乎XPath不考虑路径中的最后"/"
。
无论如何都要逃避,以便我们不会得到具有es_mexico
的节点的结果?
答案 0 :(得分:1)
通常在XPath中,contains()
会测试 子字符串包含 。
如果您想要 字符串相等 ,请使用=
等于运算符并将字符串作为参数。
此外,你的XPath,
/jcr:root/content/retail/mx/mexico//*
[
jcr:contains(., '/content/retail/mx/mexico/es/' )
]
有许多值得注意的方面:
jcr:contains()
函数,而不是XPath contains()
。为什么?.
下所有元素//*
的字符串值/jcr:root/content/retail/mx/mexico/
。除了子元素之外,这可能会导致几个祖先元素的选择 - 可能不是你期望的。