XSLT und Vergleich zwischen String mit mehreren
-
Mein Problem ist folgendes: ich habe in meinem XSLT-Skript ein paar Filterfunktionen untergebracht. Die Filter werden in Parametern gesetzt. Das Problem ist jetzt, dass ich dem Filter für Dateien gerne mehrere Dateien übergeben möchte. Dann wäre in dem Parameter fileFilter anstelle von "foo.cpp" eben "foo.cpp foobar.cpp bar.cpp". Und die Filterfunktion soll den Dateinamen nun gegen alle Drei prüfen. Ein einfacher Ansatz wäre mit contains(), allerdings liefert das auch true wenn ich eine bar.cpp hab und im Filter foobar.cpp steht, da bar.cpp ja in foobar.cpp enthalten ist.
Gibt es eine andere Möglichkeit?
Den String splitten kann man ja, danach erhält man die einzelnen String getrennt, aber wie kann ich dann gegen alle drei Strings prüfen?
-
Habe gerade eben nochmal 2Stunden damit verbracht eine Lösung zu finden, aber anscheinend bleibt mir nichts anderes übrig als es bei der contains Variante zu belassen bis Firefox und der IE XSLT2.0 unterstützen

-
Mir fällt auch keine wirklich bessere Lösung ein, ich beschäftige mich aber auch nicht sonderlich viel mit XSLT. Auf XSLT 2.0 würde ich aber lieber nicht warten. Diese Spezifikation stößt auf wenig Gegenliebe bei den Herstellern (die verweisen einfach auf XSLT 1.0 und EXSLT).
Alleine die Tatsache, dass du ein solches Problem hast, lässt mich vermuten, dass die Struktur bei der nicht unbedingt optimal ist. XSLT zielt auf die Verarbeitung von XML ab - nicht auf normalen Text. Warum hast du die Parameter nicht in der Form von XML zur Verfügung? Kannst du da vielleicht was an der Strutkur bei dir ändern?
Versuch doch statt dem unausgezeichnetem linearen"foo.cpp foobar.cpp bar.cpp"besser sowas wie
<file>foo.cpp</file> <file>foobar.cpp</file> <file>bar.cpp</file>Dann hast du auch keine Probleme mehr mit XSLT und kannst zudem auch Dateien verarbeiten, die so böse Sachen wie Leerzeichen im Dateinamen haben

Ich packe meine Optionen z.B. immer gerne in eine externe Datei. Finde ich praktischer und macht das Leben mit XSLT auch viel einfacher.
Obiges Beispiel mit <file> z.B. in eine Datei "options.xml" und schon kann man die Dateinamen der Reihe nach mit einem einfachen<xsl:for-each select="document('options.xml')/irgendein_root_tag/file">abfragen.
-
Dieser String kommt von Javascript und wird an das XSLT übergeben. In dem XML-File selbst gibt es ein File-Tag wo der Dateiname drin steht und der soll auf die angegebenen Dateien hin überprüft werden.
Wenn du mir sagst wie ich an ein param so einen XML-Knoten übergebe wäre ich auch zufrieden, wäre ja kein Ding in Javascript das zusammenzubasteln.