2

こんにちは私はこのようなxmlを持っています:

<ns1:books><ns2:book category="WEB"><ns3:title lang="en">Learning XML</ns3:title>
<ns3:author>Erik T. Ray</ns3:author><ns3:year>2003</ns3:year><ns3:price>39.95</price>

Saxon xqueryを使用して、ns3:author要素を削除したいのですが、どうすればよいか教えてもらえますか?

fn:remove(..)メソッドがあることは知っていますが、2番目の引数として整数を取るため、これは使用したくありません。

完全なコードは大歓迎です

また、サクソンで私は次のようなエラーに直面しています

原因:net.sf.saxon.trans.StaticError:#... nt-node()外部のXQuery構文エラー。コピー$temp#:クエリの終わりを超えた予期しないトークン「$」

そして私はxmlを使用しました

名前空間を宣言するsoapenv="http://www.w3.org/2003/05/soap-envelope"; 名前空間を宣言しますreg="http://www.mycompany.com/internal/xsd/registrationservice"; 名前空間を宣言しますreg1="http://www.mycompany.com/internal/xsd/registrationtypes";

declare variable $RegistrationServiceRequest := <reg:RegistrationServiceRequest><reg1:RegistrationAttributes>       <reg1:Username>fdf</reg1:Username><reg1:Password>passwdfdford1</reg1:Password>      <reg1:Title>Mdfdfr</reg1:Title><reg1:FirstName>fdsfdsfsd</reg1:FirstName>
            </reg1:RegistrationAttributes><reg1:AutoLogin> <reg1:AutoLogin1>trtrtrt</reg1:AutoLogin1></reg1:AutoLogin>
        </reg:RegistrationServiceRequest>;
        copy $temp := $RegistrationServiceRequest 
modify delete node $temp/reg1:AutoLogin
return $temp

しかし、私がzorbaで試したとき、それはうまくいきました、唯一の問題はサクソンにあり、エラーはコピーラインにあります

これを修正する方法はありますか?

ありがとうS

4

2 に答える 2

3

ドキュメントに小さな変更を加えたい場合、XQuery は最良の選択ではありません。XQuery update で行うことも、XSLT で行うこともできます。XQuery だけでそれを行うことは可能ですが、非常に面倒です。

于 2012-08-17T22:06:42.220 に答える
1

XQuery Updateを使用してこれを行うことができます。

copy $n := $data modify delete node $n/ns2:book/ns3:author return $n 

この例は、http://www.zorba-xquery.com/html/demo#JTJCK3mGQJgLav/2uOtgldoTYoM=でライブで試すことができます。

または、XQuery スクリプトを使用して要素を削除します。

delete node $data/ns2:book/ns3:author; 
$data 

この例をhttp://www.zorba-xquery.com/html/demo#QEuf9N5OLfD87WarBscHKrRrwm0=でライブで試すことができます。

于 2012-08-17T18:39:37.887 に答える