代码之家  ›  专栏  ›  技术社区  ›  Walter Kuhn

XSD查询一组不同的文件

  •  0
  • Walter Kuhn  · 技术社区  · 8 年前

    我有三个XML文件。第一个,叫做计划。xml,包括引用单个文件的“计划”元素列表。

    计划。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")
    

    然而,我被困在这里。有什么帮助吗?

    更准确地说,如何遍历不同的文件,将元素和属性收集到变量中,然后输出它们? 我使用氧气XML作为编辑器。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Michael Kay    8 年前

    不太明白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>)