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>
    )