2016-06-03 19 views
0

Grundsätzlich erhalten wird, gibt diese leeren Etiketten:Existieren-db: XPath keinen Wert zurück, wenn XML mit doc Funktion

let $report := fn:doc('/db/junitReports/Report.xml') 
return <label>{$report//testResult/text()}</label> 

Report.xml:

<junit> 
    <interfaceName>InterfaceName</interfaceName> 
    <reportDate>2016-06-01</reportDate> 
    <testResult>failure</testResult> 
</junit> 

aber es zeigt gesamte xml wenn xPath auf ein bestimmtes Element nicht verwendet wird:

let $report := fn:doc('/db/junitReports/Report.xml') 
return <label>{$report}</label> 

was bedeutet, dass die Datei aus dem db zugänglich ist.

fand ich einen Beitrag, wo es durch die Aktualisierung db spätere Version wurde behoben existieren, aber ich bin auf dem neuesten 2.1.2

+3

Fast sicher ein Namespace-Problem. Ich glaube nicht, dass Sie Report.xml korrekt reproduziert haben. –

Antwort

0

Ich habe einen „*“ Namespace in den xPath um das Problem zu lösen:

return <label>{fn:doc(fn:concat($collection, '/', $child))//*:testResult/text()}</label> 
+4

Das sollte nicht benötigt werden, wenn das XML das ist, was Sie uns gezeigt haben. –

+0

XML sieht genau so aus, wie ich es gezeigt habe. Es ist in der eXist-Datenbank gespeichert. – user6419217