[英]how to document insert with the collections in Marklogic using 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.