繁体   English   中英

如何在 MarkLogic 的模板文件中插入 xquery 模块

[英]How to insert a xquery module in a Template file in MarkLogic

我编写了一个 xquery 来根据某些条件计算我的记录数,并希望将结果作为列值放在模板文档中。

在这种情况下,如何从模板中调用 xquery

下面是 Xquery,它调用集合中的所有文档:GTM2_Shipment 并根据给定条件给出记录计数。

 xquery version "1.0-ml";
fn:count(
   for $x in collection("GTM2_Shipment")
   let $currentdt := fn:current-date()
   let $sixmonthAgo := $currentdt - xs:yearMonthDuration("P6M")
   where ($x/*:Shipment/*:Ancillary/*:QuotePrice/text() != 0) and
   ($x/*:Shipment/*:ASN/*:TrackedItem/*:Consignment/*:ConsignmentHeader/*:CargoSummary/*:TransMode/text() = 'Road')
   and 
   (fn:substring($x/*:Shipment/*:ASN/*:TrackedItem/*:Consignment/*:Bookings/*:CargoBookingHeader/*:BookingCreateDt,0,11) gt
   (format-date($sixmonthAgo, "[Y0001]-[M01]-[D01]")))
   return $x
)

下面的示例模板,我想再添加一个名为 CountByRoad 的列并添加上面的 xquery,它引用相同的集合 -GTM2_Shipment:

xquery version "1.0-ml";
    import module namespace tde = "http://marklogic.com/xdmp/tde" at "/MarkLogic/tde.xqy";

if (xdmp:database-name(xdmp:database()) = "data-hub-final-SCHEMAS")  then          
    let $Custom_Shipment:=
   <template xmlns="http://marklogic.com/xdmp/tde">
  <path-namespaces>
    <path-namespace>
      <prefix>xmlns</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/Shipment</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns00</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/PurchaseOrderHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns0</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/ConsignmentHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns1</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/PurchaseOrderDrop</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns2</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/ItemDetail</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns5</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/TransportationUnitHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns7</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/PurchaseOrderDelivery</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns9</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/BaseType</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns10</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/ASN</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns11</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/TransportationUnitHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns13</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/ContainmentHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns14</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/CargoBookingHeader</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ns15</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/Consignment</namespace-uri>
    </path-namespace>
    <path-namespace>
      <prefix>ps</prefix>
      <namespace-uri>http://www.globaltrademanagement_export.com/Shipment</namespace-uri>
    </path-namespace>
  </path-namespaces>
  <context>//ps:Shipment</context>
  <collections>
    <collection>GTM2_Shipment</collection>
  </collections>
  <rows>
    <row>
      <schema-name>GTM2_Shipment</schema-name>
      <view-name>Shipment_View</view-name>
      <view-layout>sparse</view-layout>
      <columns>
    <column>
      <name>Shipment_Ref</name>
      <scalar-type>string</scalar-type>
      <val>//ps:ShipmentRef</val>
    <nullable>true</nullable>
    </column>
    <column>
      <name>User</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns9:DocumentHeader/ns9:Version/ns9:CurrentVersion/ns9:User</val>
      <nullable>true</nullable>
    </column>
     <column>
      <name>PurchaseOrder</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:RefPurchaseOrders</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>Carrier_LocalCode</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:Carrier/ns9:LocalCode</val>
      <nullable>true</nullable>
    </column>
    
    <column>
      <name>Notify_PartyCode</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:Notify/ns9:Code</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>houseBill_Ref</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:HouseBillRef</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>primaryVessel</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:PrimaryVessel</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>Dept</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:Dept</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>Route</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:Route</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>transMode</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:CargoSummary/ns0:TransMode</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>OSP_PartyName</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:CargoSummary/ns0:OSP/ns9:PartyName</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>OSP_Code</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns0:ConsignmentHeader/ns0:CargoSummary/ns0:OSP/ns9:Code</val>
      <nullable>true</nullable>
    </column>
    
    <column>
      <name>Trans_UnitRef</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:TransUnitRef</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>POL_Name</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfLoading/ns9:PortName</val>
      <nullable>true</nullable>
    </column>
    <column>
      <name>POL_ETA_Sch_Dep</name>
      <scalar-type>dateTime</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfLoading/ns9:ScheduledDepartureDate</val>
      <nullable>true</nullable>
      <invalid-values>ignore</invalid-values>
    </column>
    <column>
      <name>POL_ETA_Act_Dep</name>
      <scalar-type>dateTime</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfLoading/ns9:ActualDepartureDate</val>
      <nullable>true</nullable>
      <invalid-values>ignore</invalid-values>
    </column>
    <column>
      <name>POL_ETA_Sch_Arr</name>
      <scalar-type>dateTime</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfLoading/ns9:ScheduledArrivalDate</val>
      <nullable>true</nullable>
      <invalid-values>ignore</invalid-values>
    </column>
    <column>
      <name>POL_ETA_Act_Arr</name>
      <scalar-type>dateTime</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfLoading/ns9:ActualArrivalDate</val>
      <nullable>true</nullable>
      <invalid-values>ignore</invalid-values>
    </column>
    <column>
      <name>POD_Name</name>
      <scalar-type>string</scalar-type>
      <val>//ns10:ASN/ns10:Schedule/ns11:TransportationUnitHeader/ns11:PrimarytUnit/ns11:TransportUnit/ns11:PortOfDischarge/ns9:PortName</val>
      <nullable>true</nullable>
      <invalid-values>ignore</invalid-values>
    </column>
    <column>
      <name>BookingCreateDt</name>
      <scalar-type>dateTime</scalar-type>
      <val>//ns10:ASN/ns10:TrackedItem/ns15:Consignment/ns15:Bookings/ns14:CargoBookingHeader/ns14:BookingCreateDt</val>
      <nullable>true</nullable>
    <invalid-values>reject</invalid-values>
    </column>

  <column>
      <name>Ancillary_QuotePrice</name>
      <scalar-type>decimal</scalar-type>
      <val>//ps:Ancillary/ps:QuotePrice</val>
      <nullable>true</nullable>
    <invalid-values>reject</invalid-values>
    </column>
      </columns>
    </row>
  </rows>
</template>
return
(

tde:template-insert("/GTM2/SHIPMENT_ShipmentView.xml",$Custom_Shipment),
      "template inserted")
      else ("Please select correct database.")
  

我不认为你可以做你想做的事。

https://docs.marklogic.com/guide/app-dev/TDE#id_71415

出于性能和安全原因,您的路径表达式仅限于 XPath 的一个子集。 有关更多详细信息,请参阅XQuery 和 XSLT 参考指南中的模板驱动提取 (TDE)

https://docs.marklogic.com/guide/app-dev/TDE#id_99178

模板支持使用具有有限功能的 XQuery 子集的方言,其中只有一部分功能可用。

方言不支持更复杂的操作,如循环、FLWOR 语句、迭代和 XML 构造。 也不支持属性轴property::

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM