2014-01-29 49 views
6

cts:element-query(xs:QName("elm"),cts:and-query(()))將給出存在元素elm的所有片段。使用cts檢查屬性的存在性:查詢

同樣的,如果我想所有的文件,其中一個屬性(比如ATR)存在下那麼我有什麼呢?

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做到這一點:元素的屬性值查詢

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

如果您還沒有設置通配符搜索真正的數據庫,您還需要提供通配符啓用搜索明確CTS:元素的屬性值查詢

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

有關更多細節,您可以檢查cts:element-attribute-value-query