我有一个xml文件:
<search>
<parameter name=”Title” included=”true”>I Want to Be Somebody New!</parameter>
<parameter name=”Author” included=”true”>Lopsh</parameter>
<parameter name=”ISBN” included=”false”/>
</search>
我想要做的是,如果包含为true且名称为Title,则获取标题数据。如果有阶梯,我到处搜索其他地方,但似乎找不到。我试过这段代码
let $params := doc('params.xml')
for $param in $params
let $title := if ($param/@name="Title" and $param/@included="true") then $param/data(.) else ' '
let $author := if ($param/@name="Author" and $param//@included="true") then $param/data(.) else ' '
let $isbn := if ($param/@name="ISBN" and $param//@included="true") then $param/data(.) else ' '
return $title
它仍无法正常工作
答案 0 :(得分:1)
您没有迭代<parameter>
个元素。 doc(...)
返回一个文档节点,其第一个子节点是根元素,在本例中为<search>
。要迭代所需的值,请添加XPath以选择它们:
for $param in $params/search/parameter
答案 1 :(得分:1)
对于您要求的内容&#34;包含为true且名称为Title获取标题数据&#34;,您可以使用非常简单的XPath:
data(/search/parameter[@included eq "true"][@name eq "Title"])
但也许你的问题不易被理解,因为你对代码的尝试似乎要复杂得多?!?