2016-11-19 10 views
0

私は.xmlファイルにXQUERY FLWOR式を使用しています:

for $dynosaur in doc("document.xml")//species 
let $dynosaurName := $dynosaur/text()  // keeping the dynosaurName as a variable 
return $dynosaur 

のような上記のリターン結果:

<species age="84">Velociraptor</species> 

私はのように結果をフォーマットする必要があります:

<!ELEMENT dynosaur (Velociraptor) +> 
私は、下記の使用しようとしたが働いておりませんので、10

...

return <!ELEMENT dynosaur ({$dynosaurName}) +> //here i want that format but it return error 

そしてXMLファイル:

<?xml version="1.0"?> 
<dinosauria> 
    <group> 
     <name>saurishia</name> 
     <subgroups> 
      <group> 
       <name>theropoda</name> 
       <subgroups> 
        <group> 
         <name>carnosaurs</name> 
         <speciesList> 
          <species age="74">Dyptosaurus</species> 
          <species age="170">Megalosaurus</species> 
          <species age="67">Tyrannosaurus</species> 
         </speciesList> 
        </group> 
        <group> 
         <name>coelurosauria</name> 
         <speciesList> 
          <species age="84">Velociraptor</species> 
          <species age="110">Deinonychus</species> 
          <species age="228">Eoraptor</species> 
         </speciesList> 
        </group> 
       </subgroups> 
      </group> 
      <group> 
       <name>sauropodomorpha</name> 
       <subgroups> 
        <group> 
         <name>sauropods</name> 
         <speciesList> 
          <species age="155">Brachiosaurus</species> 
          <species age="155">Camarasaurus</species> 
         </speciesList> 
        </group> 
       </subgroups> 
      </group> 
     </subgroups> 
    </group> 
    <group> 
     <name>ornithishia</name> 
     <subgroups></subgroups> 
    </group> 
</dinosauria> 

最後に:

私はそのタイプを返す方法を見つけることができませんf結果。私は多くのリンクとこの本を検討しました:http://www.datypic.com/books/xquery/chapter09.html

+0

私はあなたの入力とあなたの希望する結果との関係が何であるかを理解するのに苦労しています。あなたは明らかにDTDの形で出力を生成しようとしていますが、入力を記述するDTDではありません。それは何ですか?言い換えると、入力が変更された場合、出力にどのような影響がありますか? –

+0

@Michael Kay別の例を挙げますので、質問のxmlだけを念頭に置いてください。このクエリは、 'xmlファイル 'にそれらを見ることができるので、' species'を3つ戻します。 '<種の年齢= "84"> Velociraptor 'と2つ以上。これは 'forループ'の結果です。この返された種のそれぞれがこのフォーマットでそれを印刷したいと思います。私は '<!ELEMENT dynosaur($ dynosaur_name)+>'を返そうとしている 'forループ'の 'result'を意味します。 '$ dynosaur_name'は恐竜の名前です。 – GOXR3PLUS

+0

@Michael Kay私が望むのは、一般的にそのような形で結果をフォーマットすることです。「xml DTD」のように見えます。 – GOXR3PLUS

答えて

1

テキストを出力してみることができますか?

return concat("<!ELEMENT dynosaur (",$dynosaurName, ") +>") 
+0

ありがとう! '("、$ dynosaurName、 ")の代わりに'( "$ dynosaurName") 'を書くとエラーが出ます'結果をフォーマットするためのリンクも良いでしょう:) – GOXR3PLUS

+1

これはhttp://www.xqueryfunctions.com/xq/fn_concat.htmlを助けるかもしれません – GSpringTech

関連する問題