2016-11-09 59 views
1

我想返回包含「field」中的「databases」屬性的所有書籍的結果。XQuery:如果屬性的返回值包含其他特定屬性,則返回值

for $e in //testbook[field="databases"] 
return $e/title 

樣品的.xml文件:

<?xml version="1.0" encoding="UTF-?> 
<testbook> 
<book> 
<author> AuthorGuy </author> 
<title> theBook</title> 
<field> databases </field> 
</book> 
</testbook> 

回答

1

這裏有兩個問題:

  1. <title/><field/>元素都包含在<book/>元素,是不是<testbook/>直接孩子,修復路徑表達式。
  2. <field/>標記包含用空格包住的字段,使用contains($string, $needle)而不是簡單的比較。

工作的示例:

let $document := document{<testbook> 
<book> 
<author> AuthorGuy </author> 
<title> theBook</title> 
<field> databases </field> 
</book> 
</testbook>} 

for $e in $document//testbook[contains(book/field, "databases")] 
return $e/book/title 
+0

我不是知道,在的空白會造成問題,我會注意的,在未來但是我似乎並沒有讓你的工作示例工作。我不確定是否由於我純粹的無知或氧氣XML編輯器不是我的朋友。你也可以詳細說明你的$針,我不太熟悉術語。 想法是簡單的比較來自演講者幻燈片幻燈片有一個類似的例子,工作得很好,他的.xml 「for $ e in // employee [sex =」F「]/name return $ E/L-NAME」。 這個迴應有點長。 – Peter

+0

無論如何,我真的很感激你的輸入/幫助,而且如果你有更多的更正確的話:-) – Peter

+0

例如,'contains(「hello world」,「world」)'將作爲「heystack」'hello世界「包含」針「世界。空白是否重要通常是配置的主題。如果您無法提供示例(以及示例輸入!),則很難提供關於爲什麼它對講師有用的更多詳細信息。 –