Xml 构造查询以使用HTML在之间迭代结果?
我最近成功运行的查询是:Xml 构造查询以使用HTML在之间迭代结果?,xml,data-structures,xml-parsing,xquery,Xml,Data Structures,Xml Parsing,Xquery,我最近成功运行的查询是: let $doc := doc('test') for $v in $doc//item where $v/product_info/unit[.='9291'] return ( <div class="seller_company">{ $v/seller_info/seller_company_id[position() lt 2]/text() } </div>, <div class="seller_ratin
let $doc := doc('test')
for $v in $doc//item
where $v/product_info/unit[.='9291']
return (
<div class="seller_company">{ $v/seller_info/seller_company_id[position() lt 2]/text() }
</div>,
<div class="seller_rating">{ $v/seller_info/seller_rating[position() lt 3]/text() }
</div>
)
let$doc:=doc('test'))
对于$doc//项目中的$v
其中$v/产品信息/单位[.='9291']
返回(
{$v/seller\u info/seller\u company\u id[position()lt 2]/text()}
,
{$v/seller\u info/seller\u rating[position()lt 3]/text()}
)
但它似乎结构不正确,因为我在第二个div中收到了2个结果,而不是两个卖方评级div,每个div都有一个结果。看看代码,我得到这些结果是有道理的。试图重新构造查询,我感到困惑。以下是我的进展:
let $doc := doc('test')//item
for $v in $doc
where $v/product_info/unit[.='9291']
let $x := return $v/seller_info/seller_company_id,
$y := return $v/seller_info/seller_rating
for $resultx in $x/text()
return
<div id="seller_company_id>{ $resultx }</div>
for $resulty in $y/text()
return
<div id="seller_rating">{ $resulty }</div>
let$doc:=doc('test')//项
对于$doc中的$v
其中$v/产品信息/单位[.='9291']
让$x:=返回$v/卖方信息/卖方公司id,
$y:=返回$v/卖方信息/卖方评级
对于$x/text()中的$resultx
返回
请发送有效代码。里面有很多语法错误!编译器不接受的代码是非常糟糕的风格,并不表示您正在努力自己解决问题。如果您不知道问题是什么,请构建一个简短的示例,并尝试再次修复它,如果您确实不明白,请在此处提出问题
- 免责条款中的免责条款
- 卖方公司id后缺少
“
”
- 缺少序列(实际上正是我在上一个问题中回答的内容)
这几乎满足了您的需要,我没有将id
更改为class
。我删除了一些let
-子句,如果您认为它更易于阅读,请重新添加它们
for $v in doc('test')//item
where $v/product_info/unit[.='9291']
return
for $resultx in $v/seller_info/seller_company_id/text()
return
(
<div id="seller_company_id">{ $resultx }</div>,
for $resulty in $v/seller_info/seller_rating/text()
return
<div id="seller_rating">{ $resulty }</div>
)
用于文档中的$v('test')//项
其中$v/产品信息/单位[.='9291']
返回
对于$resultx,在$v/卖方信息/卖方公司id/文本()中
返回
(
{$resultx},
对于$v中的$resulty/卖方信息/卖方评级/文本()
返回
{$resulty}
)
谢谢。我将在以后的问题发布中遵循您的标准。出于信息目的,我还将尝试查找有关此的元文章。此代码有效。非常酷。我还能够将其转换为更复杂的查询。我无法找到元文章,所以我创建了一篇:。这只是关于fina的L我发现,对于较大的结果集,我使用此查询获取重复项。可能您的数据集存在问题。请更具体地说明重复项。我对此进行了一段时间的研究,找到了一种在不获取重复项的情况下迭代结果的方法。正如您所建议的,这是数据格式的问题。没有ue的出现是因为子元素之间没有我期望的1对1关系。
<div>6356</div><div>C31T150 hr.</div>
<div class="seller_company_id">6356</div>
<div class="seller_rating">C31</div>
<div class="seller_rating">T150 hr.</div>
for $v in doc('test')//item
where $v/product_info/unit[.='9291']
return
for $resultx in $v/seller_info/seller_company_id/text()
return
(
<div id="seller_company_id">{ $resultx }</div>,
for $resulty in $v/seller_info/seller_rating/text()
return
<div id="seller_rating">{ $resulty }</div>
)