XML:1
<?xml version="1.0" encoding="UTF-8"?>
<PE uri="/MY/Cases/ILJ/ilj2010_1_00042.xml">
<P name="antony" value="cse"/>
<P name="type" value="reported"/>
<P name="year" value="2010"/>
<P name="part" value="1"/>
<P name="volume" value="2"/>
<P name="decdate-year" value="2010"/>
<P name="decdate-month" value="01"/>
<P name="decdate-day" value="27"/>
</PE>
XML:2
<?xml version="1.0" encoding="UTF-8"?>
<PE uri="/MY/Cases/ILJ/ilj2010_1_00042.xml">
<P name="antony" value="cse"/>
<P name="type" value="reported"/>
<P name="year" value="2010"/>
<P name="part" value="1"/>
<P name="volume" value="1"/>
<P name="decdate-year" value="2010"/>
<P name="decdate-month" value="01"/>
<P name="decdate-day" value="27"/>
</PE>
I'm using the below Xquery to differentiate the multiple xml. But I'm not getting the exact output. Here my question is how to filter the element with multiple attributes? I want to get the result for Volume =2 means it should return only the first xml.
MY query
xquery version "1.0-ml";
declare namespace xs = "http://www.w3.org/2001/XMLSchema";
let $value1 := "antony"
let $value2 := "cse"
let $value3 := "year"
let $value4 := "2010"
let $value5 := "volume"
let $value6 := "2"
let $value7 := "part"
let $value8 := "1"
for $uri1 in cts:uris((),(), (
cts:element-query(xs:QName("P"),
cts:and-query(
(
cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value1) ,
cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value2),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value3),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value4),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value5),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value6),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("name"),$value7),
cts:element-attribute-value-query(xs:QName("P"),xs:QName("value"),$value8)
))
)) )
return doc($uri1)