在属性

时间:2015-06-05 14:08:45

标签: xpath cq5 aem crx

我目前的问题是在属性值中找到HTML-Tags。我认为使用/jcr:root/content/xgermany//*[jcr:contains(., '<strong>')] order by @jcr:score

等查询进行搜索会很容易

字符<>似乎存在问题,因为此查询会查找其属性中包含strong的所有内容。它会找到<strong>Some Text</strong>,但也会找到This is a strong man

Query Builder API也没有帮助我。

是否有可能使用XPath或SQL查询解决它,或者我是否必须遍历整个内容?

4 个答案:

答案 0 :(得分:0)

我不完全理解This is a strong man为什么会找到'<strong>',但听起来意外的行为来自"simple search-engine syntax" for the second argument to jcr:contains()。显然< >被忽略了,因为&#34;毫无意义&#34;标点符号。

您可以尝试引用搜索字词:

/jcr:root/content/xgermany//*[jcr:contains(., '"<strong>"')]

虽然如果整个XPath表达式用双引号括起来,你可能需要调整一下。

当然,即使它有效,这也不会非常强大,因为您通过搜索固定字符串而不是实际解析HTML来尝试查找HTML元素。

答案 1 :(得分:0)

如果你有一个特定的jcr:primaryType和目标属性,你可以做这样的事情

numpy.vectorize()

我测试了它,但你需要知道你感兴趣的属性。

这是jcr-sql语法

答案 2 :(得分:0)

以这种方式开始使用类似冠军的谓词,所有这些对你来说都是有意义的!

HTML Encode &lt;strong&gt;
HTML Decimal &#60;strong&#62;

查询构建器是您的朋友: 谓词:(像CHAMP!)

path=/content/geometrixx
type=nt:unstructured
property=text
property.operation=like
property.value=%&#60;strong&#62;%

请到这里: http://localhost:4502/libs/cq/search/content/querydebug.html?charset=UTF-8&query=path%3D%2Fcontent%2Fgeometrixx%0D%0Atype%3Dnt%3Aunstructured%0D%0Aproperty%3Dtext%0D%0Aproperty.operation%3Dlike%0D%0Aproperty.value%3D%25%3Cstrong%3E%25

谓词:(就像一个CHAMP!)

path=/content/geometrixx
type=nt:unstructured
property=text
property.operation=like
property.value=%&lt;strong&gt;%

去吧:

http://localhost:4502/libs/cq/search/content/querydebug.html?charset=UTF-8&query=path%3D%2Fcontent%2Fgeometrixx%0D%0Atype%3Dnt%3Aunstructured%0D%0Aproperty%3Dtext%0D%0Aproperty.operation%3Dlike%0D%0Aproperty.value%3D%25%26lt%3Bstrong%26gt%3B%25

XPath:

/jcr:root/content/geometrixx//element(*, nt:unstructured)
[
jcr:like(@text, '%<strong>%') 
]

SQL2(已经涵盖...... NASTY YUK ..)

SELECT * FROM [nt:unstructured] AS s WHERE ISDESCENDANTNODE([/content/geometrixx]) and text like '%<strong>%'

答案 3 :(得分:0)

虽然我确信使用一串谓词完全有可能,但它可能会走错路线。理想情况下,在存储或发布HTML时解析HTML会更好。 所需信息将存储在相关节点上的简单属性中。与大量过于复杂的查询语法相比,查询将只使用property = value查询更简单。 它可能会更快。 因此,如果您使用HTMLClient读取HTML,然后使用OSGI服务进行解析,则可以为您准确地保存这些属性。每次更改HTML时,该过程都会根据需要更新这些属性。如果您的SQL过多,请稍微思考一下。