Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get XPath from XML Document Present in Marklogic Database

I am new to Marklogic and My Requirement is, I have XML document in Marklogic Database containing multiple elements.

 ** Example :**    

<tXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Header>
        <Source>Source1</Source>
        <Action_Type>Action_Type1</Action_Type>
        <Sequence_Number>Sequence_Number1</Sequence_Number>
    </Header>
</tXML>

When i pass "Sequence_Number"it should return /tXML/Header/Sequence_Number and it is possible to have "Sequence_Number" element multiple times.

Please tell me whether it is possible using Marklogic XQuery/Java API or i need to uses any third party API to obtain this result.

like image 607
DevNinja Avatar asked Aug 13 '26 21:08

DevNinja


1 Answers

It probably won't perform well on large documents, but you could use string matching on element names to find the elements, and then use xdmp:path to get the corresponding XPath for that document. Something like:

xquery version "1.0-ml";

let $xml := document {
<tXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Header>
        <Source>Source1</Source>
        <Action_Type>Action_Type1</Action_Type>
        <Sequence_Number>Sequence_Number1</Sequence_Number>
    </Header>
</tXML>
}
let $elem-name := "Sequence_Number"
let $elems := $xml//*[local-name() eq $elem-name]
return $elems ! xdmp:path(.)

HTH!

like image 152
grtjn Avatar answered Aug 16 '26 14:08

grtjn