0

我得到了三个 XML 文件。第一个称为plans.xml,包含一个“plan”元素列表,这些元素引用各个文件。

计划.xml:

<plans>
     <plan XSD-version="2.0" release="R1801.1" plan-file="./plan-2.0.xml"/>
     <plan XSD-version="3.0" release="R1801.2" plan-file="./plan-3.0.xml"/>
</plans>

第二个文件,称为“plan-2.0.xml”(第三个文件类似,只是版本号和名称为“plan-3.0.xml”):

计划-2-0.xml:

<Services>    
    <service name="x" version="2.0"/>
    <service name="y" version="2.0"/>
    <service name="z" version="2.0"/>
 </Services>

我想要实现的是一个xquery(3.0),它接受一个输入参数(I1801.2)并生成一个带有标题的简单html列表:

<h1>I1801.2</h1>
  <ul>
    <li>x with version 2.0
    <li>y with version 2.0
    <li>z with version 2.0 
  </ul>

我正在与具体的概念作斗争——我使用 xquery 已经十多年了。

我的脚本开始像:

xquery version "3.0";
let $j := doc("plans.xml")

但是,我被困在这里。有什么帮助吗?

更准确地说,如何循环不同的文件,将元素和属性收集到变量中,然后输出?我正在使用 Oxygen XML 作为编辑器。

4

1 回答 1

0

不太清楚 XSD 的来源?

尝试:

for $p in $j//plan
return (
   <h1>{string($p/@release)}</h1>,
   <ul>{for $s in doc($p/@plan-file//service
        return <li>{string($s/@name} with version {string($s/@version)}</li>
   </ul>)
于 2017-12-11T14:43:36.920 回答