2016-11-09 71 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世界“包含”针“世界。空白是否重要通常是配置的主题。如果您无法提供示例(以及示例输入!),则很难提供关于为什么它对讲师有用的更多详细信息。 –