2016-04-04 15 views
0

Ich versuche eine Abfrage über ein XML (XHTML5) mit zwei verschiedenen Namespaces, einen für die Tags und einen für die Attribute.XQuery XML-Dateien mit verschiedenen Namespaces in Attributen (epub: type)

Dies ist ein Beispiel:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" 
xmlns:epub="http://www.idpf.org/2007/ops"> 

<head> 
    <link href="primo.css" rel="stylesheet" type="text/css" /> 
    <title>Incipit</title> 


</head> 
<body> 

    <p id="notauno" epub:type="footnote">Il nome della rosa è una cosa.</p> 
</body> 
</html> 

Also, ich habe ein Attribut "type" von epub-Namespace. Ich kann die richtige XQuery-Syntax nicht verstehen, um beispielsweise den Wert von epub zu lesen: tippe p-tag ("footnote") ein. Ich habe versucht, anderen Code, wie folgt:

xquery version "1.0"; 

declare namespace epub="http://www.idpf.org/2007/opf"; 
declare namespace h="http://www.w3.org/1999/xhtml"; 

let $sorgente:=fn:doc("file.xhtml") 

for $nota in $sorgente//h:p 
return data ($nota/@epub:type) 

Aber es ist ein Fehler, den ich nicht sehen kann. Wenn mir jemand helfen könnte, danke im Voraus.

+0

"gibt es einen Fehler" - _which_ Fehler entdeckt? Welche Ausgabe erhalten Sie? Was ist die erwartete Ausgabe für die von Ihnen bereitgestellte Eingabe? –

+0

Meine erwartete Ausgabe ist "Fußnote". Ich habe eine "Ihre Abfrage hat eine leere Sequenz zurückgegeben." –

+0

verwenden Sie MarkLogic? – Daniele

Antwort

1

Sieht aus wie ein Tippfehler für mich. Die XML hat epub Präfix der folgenden URI abgebildet:

xmlns:epub="http://www.idpf.org/2007/ops" 

während im XQuery wird das gleiche Präfix zugeordnet:

epub="http://www.idpf.org/2007/opf"; 

Beachten Sie den Unterschied zwischen ops und opf

+1

Sie haben Recht. Facepalm. Es war ein Tippfehler. Vielen Dank. –

1

Ihre Erklärung für den Epub-Namespace hat einen Tippfehler. sollte sein:

declare namespace epub="http://www.idpf.org/2007/ops"; 

Und dann wird es funktionieren ;-)

+0

Sie haben auch Recht. Vielen Dank. –