Extrahieren Sie einen Teil einer XML-Datei als einfachen Text mit XSLT

8

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:

%Vor%

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!

    
Matthew Wilkens 17.06.2011, 23:48
quelle

3 Antworten

7
  

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%     
Dimitre Novatchev 18.06.2011, 02:21
quelle
2

Sie können verwenden:

%Vor%

und

%Vor%

Es gibt zurück:

%Vor%     
Grzegorz Szpetkowski 18.06.2011 00:39
quelle
0

Versuchen Sie die Übereinstimmung / TEI / text / body // text ()

    
k_b 17.06.2011 23:53
quelle

Tags und Links