当前位置 : 主页 > 网页制作 > xml >

xml – 复杂的xPath查询

来源:互联网 收集:自由互联 发布时间:2021-06-13
我需要编写一个非常复杂的XSLT 1.0查询. 鉴于以下XML文件,我需要一个查询来获取多个报告中的作者集. (例如Antonio Rossi,因为他在报告1和2中都是如此). reports report id="01" titolo I venti del Nor
我需要编写一个非常复杂的XSLT 1.0查询.

鉴于以下XML文件,我需要一个查询来获取多个报告中的作者集. (例如Antonio Rossi,因为他在报告1和2中都是如此).

<reports>
  <report id="01">
    <titolo>
      I venti del Nord
    </titolo>
    <autori>
      <autore>
        Antonio Rossi
      </autore>
      <autore>
        Mario Verdi
      </autore>
    </autori>
    <versioni>
      <versione numero="1.0">
        <data>
          13-08-1980
        </data>
        <autore>
          Mario Verdi
        </autore>
        <commento>
          versione iniziale
        </commento>
      </versione>
      <versione numero="2.0">
        <data>
          14-08-1981
        </data>
        <autore>
          Antonio Rossi
        </autore>
        <commento>
          poche modifiche
        </commento>
      </versione>
    </versioni>
  </report>
  <report id="02">
    <titolo>
      Le pioggie del Nord
    </titolo>
    <autori>
      <autore>
        Antonio Rossi
      </autore>
      <autore>
        Luca Bianchi
      </autore>
    </autori>
    <versioni>
      <versione numero="1.0">
        <data>
          13-12-1991
        </data>
        <autore>
          Antonio Rossi
        </autore>
        <commento>
          versione iniziale
        </commento>
      </versione>
      <versione numero="2.0">
        <data>
          14-08-1992
        </data>
        <autore>
          Antonio Rossi
        </autore>
        <commento>
          modifiche al cap. 1
        </commento>
      </versione>
      <versione numero="3.0">
        <data>
          18-08-1992
        </data>
        <autore>
          Antonio Rossi
        </autore>
        <commento>
          Aggiunta intro.
        </commento>
      </versione>
      <versione numero="4.0">
        <data>
          13-01-1992
        </data>
        <autore>
          Luca Bianchi
        </autore>
        <commento>
          Modifiche sostanziali.
        </commento>
      </versione>
    </versioni>
  </report>
  <report id="03">
    <titolo>
      Precipitazioni nevose
    </titolo>
    <autori>
      <autore>
        Fabio Verdi
      </autore>
      <autore>
        Luca Bianchi
      </autore>
    </autori>
    <versioni>
      <versione numero="1.0">
        <data>
          11-01-1992
        </data>
        <autore>
          Fabio Verdi
        </autore>
        <commento>
          versione iniziale
        </commento>
      </versione>
      <versione numero="2.0">
        <data>
          13-01-1992
        </data>
        <autore>
          Luca Bianchi
        </autore>
        <commento>
          Aggiornato indice
        </commento>
      </versione>
    </versioni>
  </report>
</reports>
即使在XPath 1.0中也是如此:

//report//autore[text()=../../following-sibling::report//autore/text()]

它还选择具有与以下任何报告节点中的任何自动存储节点相同的文本内容的所有自动节点.

或者,为了保持简短,即使这在你真正的xml文件中没有任何麻烦也应该有用:

//autore[text()=../../following-sibling::*//autore/text()]

编辑:意外工作.请参阅下面的评论.

网友评论