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(..) 方法,但我不想使用它,因为它需要一个整数作为第二个参数

任何完整的代码将不胜感激

同样对于撒克逊人,我也面临着类似的错误

原因:net.sf.saxon.trans.StaticError:#...nt-node() external 中的 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 时,它工作正常,唯一的问题是撒克逊语,错误出现在复制行

知道如何解决这个问题吗?

谢谢小号

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 Scripting 删除元素:

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

您可以在http://www.zorba-xquery.com/html/demo#QEuf9N5OLfD87WarBscHKrRrwm0=现场试用此示例

于 2012-08-17T18:39:37.887 回答