Begrüße!
Erstmal Entschuldigung für den wenig aussagekräftigen Titel. Ich konnte mein Problem irgendwie nicht in einen so kurzen Text packen
Ich habe eine XML Datei, in der ein Text mit Annotationen steht. Zum einen steht darin der Text selbst und dann die Annotationen für die einzelnen Wörter in einer Liste. Übersichtsweise ein Beispiel der XML Datei:
Jedes Wort/Token hat eine ID und im Element POStags sind zu diesen IDs die Wortarten gespeichert (die Wortarten stimmen im Beispiel nicht, aber es geht ja um den Aufbau und nicht um die Werte). Daraus möchte ich eine HTML Datei erzeugen (mit XSL, spätere Änderungen mit jQuery), in der es möglich ist, sich unter anderem über Mouseovers die Wortart des aktuelle. Das Zielformat soll dabei dann vereinfacht so aussehen:
Soweit ist die Transformation kein Problem: über die Tokens iterieren und sich mit XPath die passende Wortart holen. Bei diesem Vorgehen gehen allerdings die Zeilenumbrüche verloren. Diese sind nur in dem Knoten <text/> vorhanden.
Ich bin noch auf keine Lösung gekommen, die mit vernünftigem Rechenaufwand zum Ziel führt. Mein einzige Ansatz war es, den Text aus <text/> zu verwenden, über die tokens zu iterieren und dem Text aus <text/> das <span/> Element hinzuzufügen - dabei muss dann jeweils der Offset beachtet werden. Erstes Rumspielen mit diesem Ansatz hat sich aber als mühsam und wenig effizient erwiesen.
Hat vielleicht jemand einen praktikableren Lösungsvorschlag?
Danke im Voraus,
Mfg,
Whizzler
Erstmal Entschuldigung für den wenig aussagekräftigen Titel. Ich konnte mein Problem irgendwie nicht in einen so kurzen Text packen
Ich habe eine XML Datei, in der ein Text mit Annotationen steht. Zum einen steht darin der Text selbst und dann die Annotationen für die einzelnen Wörter in einer Liste. Übersichtsweise ein Beispiel der XML Datei:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<D-Spin xmlns="https://www.dspin.de/data" version="0.3">
...
<TextCorpus xmlns="https://www.dspin.de/data/textcorpus" lang="de">
<text>Noch einen
Tag Ruhe!</text>
<tokens>
<token ID="t1">Noch</token>
<token ID="t2">einen</token>
<token ID="t3">Tag</token>
<token ID="t4">Ruhe</token>
<token ID="t5">!</token>
...
</tokens>
<POStags tagset="STTS">
<tag tokID="t1" ID="p1">NE</tag>
<tag tokID="t2" ID="p2">NE</tag>
<tag tokID="t3" ID="p3">$,</tag>
<tag tokID="t4" ID="p4">ART</tag>
<tag tokID="t5" ID="p5">$!</tag>
...
</POStags>
</TextCorpus>
</D-Spin>
Jedes Wort/Token hat eine ID und im Element POStags sind zu diesen IDs die Wortarten gespeichert (die Wortarten stimmen im Beispiel nicht, aber es geht ja um den Aufbau und nicht um die Werte). Daraus möchte ich eine HTML Datei erzeugen (mit XSL, spätere Änderungen mit jQuery), in der es möglich ist, sich unter anderem über Mouseovers die Wortart des aktuelle. Das Zielformat soll dabei dann vereinfacht so aussehen:
PHP:
<span id="t1" class="NE">Noch</span> <span id="t2" class="NE">einen</span> <span id="t3" class="$,">Tag</span> <span id="t3" class="ART">Ruhe</span>
Soweit ist die Transformation kein Problem: über die Tokens iterieren und sich mit XPath die passende Wortart holen. Bei diesem Vorgehen gehen allerdings die Zeilenumbrüche verloren. Diese sind nur in dem Knoten <text/> vorhanden.
Ich bin noch auf keine Lösung gekommen, die mit vernünftigem Rechenaufwand zum Ziel führt. Mein einzige Ansatz war es, den Text aus <text/> zu verwenden, über die tokens zu iterieren und dem Text aus <text/> das <span/> Element hinzuzufügen - dabei muss dann jeweils der Offset beachtet werden. Erstes Rumspielen mit diesem Ansatz hat sich aber als mühsam und wenig effizient erwiesen.
Hat vielleicht jemand einen praktikableren Lösungsvorschlag?
Danke im Voraus,
Mfg,
Whizzler
Zuletzt bearbeitet: