2014-01-29 6 views
6

cts:element-query(xs:QName("elm"),cts:and-query(())) даст все фрагменты, где присутствует элемент elm.Проверка наличия атрибута с помощью cts: query

Точно так же, если я хочу, чтобы все документы, в которых атрибут (например ртд) присутствует под вяза что бы я должен делать?

cts:element-attribute-value-query() требует, чтобы я передавал значение, соответствующее значению атрибута. Но я хочу проверить только наличие атрибута независимо от того, какое значение оно содержит.

ответ

1

Попробуйте использовать шаблон. Одно отличие между элементами и атрибутами состоит в том, что элементы могут быть пустыми. Атрибуты не могут, поэтому они всегда должны соответствовать шаблону. Возможно, вам потребуется включить некоторые индексы символов для оптимальной производительности.

cts:element-attribute-value-query(
    xs:QName('div'), xs:QName('id'), '*')) 
+0

Не потребуется ли проверять значения (хотя любое значение будет соответствовать) и, следовательно, некоторое время при чтении значений? – callow

+1

@mblakele, удивленный тем, что вы говорите, что атрибуты XML не могут быть пустыми. Думаю, они могут. –

+0

Они могут иметь значение "". Пустые элементы являются особенными. – mblakele

3

Вы можете сделать это с помощью простых карат: элемент-атрибут-значение-запрос

cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*')) 

В случае, если Вы не установили безразличный поиск верно в базе данных, необходимо также обеспечить безразличный включен поиск явно в КТС: элемент-атрибут-значение-запрос

cts:element-attribute-value-query(
xs:QName('element'), xs:QName('attribute'), '*', ("wildcarded"))) 

Для получения более подробной информации по этому вопросу вы можете проверить cts:element-attribute-value-query страницы

Смежные вопросы