I have written one xquery to get count of my records based on some conditions and would like to put the result as a column value in a Template document.
How can I call the xquery from the template in this case
Below is the Xquery which calls all documents from collection :GTM2_Shipment and gives count of records based on given condition.
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
)
Example Template below where I want to add one more column named CountByRoad and add the above xquery and it refers the same collection -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.")
I don't think you can do what you want.
https://docs.marklogic.com/guide/app-dev/TDE#id_71415
For performance and security reasons, your path expressions are limited to a subset of XPath. For more details, see Template Driven Extraction (TDE) in the XQuery and XSLT Reference Guide.
https://docs.marklogic.com/guide/app-dev/TDE#id_99178
Templates support a dialect using a subset of XQuery with limited functionalities where only a subset of functions are available.
More complex operations like looping, FLWOR statements, iterations, and XML construction are not supported within the dialect. The property axis
property::
is also not supported.