2011-11-09 8 views
2

後述のように、私は、Oracle XML DB(11グラムR2)での問題に対処してきた:XMLコンテンツ変更

セイを、私は、次のしている「xml_document」という名前のXMLType列を持つテーブルにXMLドキュメント

<?xml encoding="utf-8" ?> 
<books> 
    <book> 
     <author>AUTHORNAME1</author> 
     <title>TITLE1</title> 
     <price>12.33</price> 
    </book> 
    <book> 
     <author>AUTHORNAME2</author> 
     <title>TITLE2</title> 
     <price>9.55</price> 
    </book> 
    <book> 
     <author>AUTHORNAME3</author> 
     <title>TITLE3</title> 
     <price>15.00</price> 
    </book> 
</books> 

は今、私が何をしたいのかそれが追加さ「-expensive」タグとして「> 10価格」とのすべての書籍のタイトルを置き換えています。

' for $book in ora:view("XML_TABLE")//books/book where $book/price > 10 return replace value of node $book/title with concat($book/title/text(),"-expensive") ' 

したがって、Oracle SQLDeveloperで問合せを実行すると、結果のXMLコンテンツは次のようになります。

<?xml encoding="utf-8" ?> 
<books> 
    <book> 
     <author>AUTHORNAME1</author> 
     <title>TITLE1-expensive</title> 
     <price>12.33</price> 
    </book> 
    <book> 
     <author>AUTHORNAME2</author> 
     <title>TITLE2</title> 
     <price>9.55</price> 
    </book> 
    <book> 
     <author>AUTHORNAME3</author> 
     <title>TITLE3-expensive</title> 
     <price>15.00</price> 
    </book> 
</books> 

は、私はすでにUPDATEXML()、XMLQUERY()とXMLTABLE()手続きでそれを行うことを試みた、まだ一歩前進を取ることができません。

ご協力いただければ幸いです。

+0

あなたのXMLスニペットは無効です。あなたはaを欠いている?あなたのXML宣言の終わりに、 '<?xml encoding =" utf-8 "?>'また、複数のルート要素がありますが、それらを ' [...]'にラップしたいでしょうか? –

答えて

0
  • whenはありません(Oracle XQueryについてはわかりませんが)。試してみてくださいwhere
  • 文字列連結はconcat(str1, [...], str2)を使用して行われ、+ - オペレータは行われません。

は、この文字列で検索してください:

for $book in ora:view("XML_TABLE")//book 
where $book/price > 10 
return 
    replace value of node $book/title 
    with concat($book/title/text(), "-expensive") 
+0

ご迷惑をおかけして申し訳ありません。私はそれを修正しましたが、まだ動作していません:) –

+0

'ora:view'の意味がわかりません。 [documentation](http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm#CBAIEJDC)は、リレーショナル・データに対するXMLビューを作成するだけで、更新については何も表示しません。私はまた、悲しいことに私の前提を確認していない、これについての情報も見つけることができません。 XQuery Updateを使用するには、[永続的XMLビュー](http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28369/xdb_xquery.htm#CBAIFJJJ)を作成する必要があります。私の答えは問わず、[BaseX](http://www.basex.org)を使って(ora:viewを置き換えて)テストしました。 –

関連する問題