Scheint so, als sollte das einfach sein, aber ...
Ich versuche XSLT zu verwenden, um einen Teil einer XML-Datei als einfachen Text zu extrahieren und den Rest wegzuwerfen.
Also von Beispiel Eingabe wie folgt ...
%Vor% ... Ich versuche, nur den Text zu erhalten, der in den <body>
-Tags und allen ihren Kindern enthalten ist. Die gewünschte Ausgabe ist in diesem Fall:
Mögliche Komplikation: <body>
kann auch in <front>
matter und / oder in <teiHeader>
existieren, also was ich wirklich brauche sind die Kinder von <body>
wenn und nur wenn dieses Tag ein Kind von% ist co_de% und <text>
.
Ich habe wirklich einfaches XSL wie dieses versucht ...
%Vor% ... aber es gibt mir einen einfachen Text von allem in der Datei, nicht nur die <TEI>
-Elemente.
Danke!
Ich habe wirklich einfache XSL so versucht ...
...
%Vor%... aber es gibt mir einen einfachen Text von alles in der Datei, nicht nur die
<body>
elements.
Der Grund dafür ist eine berühmte Eigenschaft / Eigenschaft von XPath (und Grund für viele tausend ähnliche Fragen), jeden Namen ohne Präfix als "kein Namespace" zu betrachten. Jedes Element im bereitgestellten XML-Dokument gehört jedoch zum Namespace: "http://www.tei-c.org/ns/1.0" und muss als ein Knoten in diesem Namespace zugegriffen werden.
Lösung : Definieren Sie den Standard-Namespace für Dokumente im XSLT-Code (diesmal mit einem daran gebundenen Präfix) und verwenden Sie das Präfix, um jeden Namen anzugeben.
Dies ist eine der einfachsten und kürzesten möglichen Transformationen , die das gewünschte Ergebnis erzeugt:
%Vor%Bei Anwendung auf das bereitgestellte XML-Dokument :
%Vor%das gewünschte, korrekte Ergebnis wird erzeugt :
%Vor%Sie können verwenden:
%Vor%und
%Vor%Es gibt zurück:
%Vor%