0

たとえば、結果が次の形式である必要があります

<result>
  <French>
    <country>country-name</country>
    <country>country-name</country>
    ...
  </French>
  <German>
    <country>country-name</country>
    <country>country-name</country>
    ...
  </German>
</result>

しかし、現在、私の結果は次の形式です

  <language percentage="100">German</language>
  <language percentage="32">French</language>
  <language percentage="1">German</language>
  <language percentage="100">French</language>
  <language percentage="100">French</language>
  <language percentage="100">German</language>
  <language percentage="99">French</language>
  <language percentage="100">French</language>
  <language percentage="10">French</language>
  <language percentage="32">German</language>
  <language percentage="100">French</language>
  <language percentage="18">French</language>
  <language percentage="65">German</language>

これは私のクエリです:

 doc("countries.xml")//country/language[contains(text(), "French") or contains(text(), "German")]

元のデータは次のようになります。

<country name="Afghanistan" population="22664136" area="647500">
    <language percentage="11">Turkic</language>
    <language percentage="35">Pashtu</language>
    <language percentage="50">Afghan Persian</language>
</country>
4

3 に答える 3

1

XQuery を使用すると、この問題が解決されます。

  <result>
  {
    for $language in distinct-values(doc("countries.xml")//language)
    return
      element {translate($language, " ", "_")}
      {
        for $country in doc("countries.xml")//country[language = $language]
        return element country {string($country/@name)}
      }
  }
  </result>

この言語にはスペースが含まれているため (「アフガン ペルシャ語」など)、すぐにタグ名として使用できないことに注意してくださいtranslate

名前を付けた言語だけが必要な場合は、for句を次のように置き換えます

    for $language in ("French", "German")
于 2012-07-24T18:35:46.633 に答える
0

LinQ to XML/Object を使用したり、GroupBy でクエリを作成して XMLWriter で XML を書き換えたり、xml/xsl で XML StyleSheet Transform を併用したりできます。

于 2012-07-24T17:10:13.847 に答える
0

XPath は、入力ドキュメント内のノードのみを選択できます。新しい出力ドキュメントを構築する場合は、XSLT または XQuery を使用してこれを行うことができます。どちらも XPath を使用して入力からノードを選択し、出力で新しいノードを構築する機能を追加します。

于 2012-07-24T21:38:01.513 に答える