Jan Schmidt wrote:
> ich muss eine xml-Datei transformieren. Dazu habe ich bisher
> das kurze Shell-Script verwendet.
>
> xml sel -T -t -m '//*/text' -v '@lang' -n $IN |sort|uniq |while read i; do
> xml tr ${PFAD}/xml2text.xslt -s sprache="$i" $IN >${OUT}_${i}.txt
> done
>
> Leider ist das unter Win (MSYS) extrem langsam (100 fache
> Ausführungsdauer gegenüber Linux). Ich habe herausgefunden, dass das
> an der Pipe-Verbindung vor dem while liegt.
Sobald die Pipe einmal steht, sollte das eigentlich recht flott gehen.
Was ist denn 'xml' für ein Tool? Ich habe meine XML-Spielereien mit
'LotusXSL' angefangen, einem (damals) grottenlahmen Java-Teil, bis ich
'xsltproc' gefunden habe, was Kreise um LotusXSL rennt.
> Jetzt die Frage: Kann man das Konstrukt irgendwie direkt in xml
> abbilden, so dass xmlstarlet sort und uniq mit erledigt?
>
> Ich bin schon beim sort gescheitert.
Genau daran bin ich in XSLT auch gescheitert, bzw. die produzierten
Lösungen hatten irgendwas von O(n^4).
Du kannst aber mit dem Shellscript ein Stylesheet erzeugen, das ein
Template des existierenden Stylesheets aufruft, so dass du am Ende nur
einen 'xml tr'-Aufruf in der Pipeline hast.
> Zur Not könnte das auch in das Stylesheet mit rein, aber da habe
> ich auch keinen Plan wie das anzustellen ist. Das scheitert ja
> schon daran, dass mehrere Ausgabedateien zu erzeugen sind.
Du könntest ein großes Ausgabedokument erstellen, Beißmarken einfügen
und es nachher anhand dieser in mehrere Dokumente aufteilen.
Stefan