Soap 要在getListItemChanges方法中传递的动态日期

Soap 要在getListItemChanges方法中传递的动态日期,soap,wsdl,xquery,Soap,Wsdl,Xquery,我正在使用下面的代码。它工作得很好 <GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/"> <listName>States At A Glance</listName> <viewFields></viewFields> <since>2013-08-29T 19:52:52Z</since> <con

我正在使用下面的代码。它工作得很好

<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<viewFields></viewFields>     
<since>2013-08-29T 19:52:52Z</since>
<contains></contains>
</GetListItemChanges>
我测试了$Y的值,它正是我想要的

但是,当我用$Y替换日期值时,代码开始出错:

let $soap-payload := ('<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<listName>States At A Glance</listName>
<since>{fn:data($Y)}</since>
</GetListItemChanges>')
let$soap负载:=('
一目了然
{fn:data($Y)}
')
错误消息:

axis2_svc_客户端_发送_接收失败。Web服务返回了soap错误。
错误类型:XQuery引擎错误。soap:引发了类型为“Microsoft.SharePoint.SoapServer.SoapServerException”的ReceiverException。

所示代码将不会执行替换。变量
$soap payload
不包含XML,而是一个字符串。字符串中的XQuery表达式将不会被计算。如果从
$soap payload
中删除单引号,将计算XQuery表达式

如果需要将
$soap payload
作为字符串,可以通过字符串连接来构建它,也可以序列化XML。其机制取决于您的XQuery处理器(和版本)

  • XQuery 3.0:
    fn:serialize()
  • MarkLogic服务器:
    xdmp:quote()
  • 萨克森:
    Saxon:serialize()
串联示例

XQuery 1.0

let$soap负载:=
fn:concat(
'
一目了然
',
fn:concat(
$Y,
'
'))
XQuery 3.0

let$soap负载:=
'
一目了然
“| |$Y | |”
'
序列化示例

let $soap-payload-xml :=
  <GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <listName>States At A Glance</listName>
    <since>{ $Y }</since>
  </GetListItemChanges>
let $soap-payload := fn:serialize($soap-payload-xml)
let$soap有效负载xml:=
一目了然
{$Y}
让$soap负载:=fn:serialize($soap负载xml)
let $soap-payload :=
  fn:concat(
    '<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
      <listName>States At A Glance</listName>
      <since>',
    fn:concat(
      $Y,
      '</since>
      </GetListItemChanges>'))
let $soap-payload :=
  '<GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
     <listName>States At A Glance</listName>
     <since>' || $Y || '</since>
   </GetListItemChanges>'
let $soap-payload-xml :=
  <GetListItemChanges xmlns="http://schemas.microsoft.com/sharepoint/soap/">
    <listName>States At A Glance</listName>
    <since>{ $Y }</since>
  </GetListItemChanges>
let $soap-payload := fn:serialize($soap-payload-xml)