Hello,
I have problem with namespace 'www.ni.com/TestStand/ATMLTestResults/3.0'. It works for "return" statement, but when I use a value from this namespace in "where" or "order by" statement, the query returns just an empty string, like no results would have been found, although they exist.
In more detail, I have following query:
-----------------------------------------------
declare namespace nTestResultsCollection='urn:IEEE-1636.1:2013: TestResultsCollection';
declare namespace nTestResults='urn:IEEE-1636.1:2013:TestResults';
declare namespace nCommon='urn:IEEE-1671:2010:Common';
declare namespace nNi='www.ni.com/TestStand/ATMLTestResults/3.0';
let $DocumentNames := ('Report/89500019-0000-4020-a039-9f53a80d7058', 'Report/89400019-0052-4020-a0f0-e1851b8bbec2', 'Report/00000000-0000-4020-a 093-6c29d4c65c32', 'Report/00000000-0000-4020-a09c-ac632bfa5a7d', 'Report/ 00000000-0000-4020-a09c-ac635023a45c', 'Report/00000000-0000-4020-a09c-ac63e 9c5b490', 'Report/89500019-0051-4020-a170-409bbe8e4f89', 'Report/89500019- 0051-4020-a170-409b334e86c8')
for $DocumentName in $DocumentNames
let $Document := db:open('ATML',$DocumentName)
let $TestSystemItem0 := $Document/nTestResultsCollection: TestResultsCollection/nTestResultsCollection:TestResults/nTestResults: TestStation/nCommon:Definition/nCommon:Identification/nCommon:ModelName/text ()
let $TestSystemItem1 := $Document/nTestResultsCollection: TestResultsCollection/nTestResultsCollection:TestResults/nTestResults: TestStation/nCommon:Definition/nCommon:Extension/nNi:Items/nNi:Item/Content/ text()
let $StartDate := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/nTestResults:ResultSet/substring-before (data(@startDateTime), 'T')
let $StartTime := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/nTestResults:ResultSet/substring-after (data(@startDateTime), 'T')
let $UUID := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/data(@uuid)
let $Serial_Number := $Document/nTestResultsCollection: TestResultsCollection/nTestResultsCollection:TestResults/nTestResults:UUT/ nCommon:SerialNumber/text()
let $Part_Number := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/nTestResults:UUT/nCommon:Definition/data( @name)
let $Slot_ID := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/nTestResults:TestStation/nCommon: Definition/nCommon:Extension/nNi:Items/nNi:Item/Content/text()
where (($TestSystemItem1 = 'dx5484'))
order by $StartDate, $StartTime
return
<Result>
<DocumentName>{ $DocumentName }</DocumentName>
<TestSystemItem0>{ $TestSystemItem0 }</TestSystemItem0>
<TestSystemItem1>{ $TestSystemItem1 }</TestSystemItem1>
<StartDate>{ $StartDate }</StartDate>
<StartTime>{ $StartTime }</StartTime>
<Serial_Number>{ $Serial_Number }</Serial_Number>
<Part_Number>{ $Part_Number }</Part_Number>
<Slot_ID>{ $Slot_ID }</Slot_ID>
<Additional_Info></Additional_Info>
<ChildResults>
{
let $Childs := $Document/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/nTestResults:ResultSet//nTestResults: TestGroup/nTestResults:Test
for $Test in $Childs
let $TestData := $Test/nTestResults:TestResult/nTestResults:TestData
let $Limits := $Test/nTestResults:TestResult/nTestResults:TestLimits/ nTestResults:Limits
let $TestId := $Test/data(@ID)
let $TestName := $Test/data(@name)
let $TestGroup := $Test/../substring-after(data(@name), '#')
let $TestOutcome := $Test/nTestResults:Outcome/data(@value)
let $Root := $Test/root()
let $RootUuid := $Root/nTestResultsCollection:TestResultsCollection/ nTestResultsCollection:TestResults/data(@uuid)
where (($TestName = 'Course Datum MON (7V)' and $TestGroup = 'Course Datum Input Test' and $RootUuid = $UUID))
return
<Test>
<TestData>{ $TestData }</TestData>
<Limits>{ $Limits }</Limits>
<TestId>{ $TestId }</TestId>
<TestName>{ $TestName }</TestName>
<TestGroup>{ $TestGroup }</TestGroup>
<TestOutcome>{ $TestOutcome }</TestOutcome>
<Temperature></Temperature>
</Test>
}
</ChildResults>
</Result>
-----------------------------------------------
If I remove the where (($TestSystemItem1 = 'dx5484')) statement ($ TestSystemItem1 is from nNi namespace), it works fine and TestSystemItem1 values are returned properly in the result in the <TestSystemItem1>{ $ TestSystemItem1 }</TestSystemItem1>. However, if I put the $TestSystemItem1 to the where statement (like in the example above), or to the order by statement, it returns empty result.
Is there a way how to fix it? Or is it fixable in the BaseX itself (maybe in the new version)? We cannot change the value of 'www.ni.com/TestStand/ ATMLTestResults/3.0' because the xml files are generated by the 3rd party.
Thank you for your help in advance.
Best regards,
Radim Havlicek