Änderungen in der Verhaltensweise von LibXSLT gegenüber früheren Versionen

Neuere Versionen von LibXSLT haben ihr Verhalten hinsichtlich der Prüfung von Attributen verändert. Vor allen Dingen kommt dies zum tragen, wenn man in xpath-Ausdrücken parameter abprüft, die nicht mehr vorhanden sind.

Beispiel:

xml1:
<product name="" />

xml2:
<product />

xslt:
<xsl :apply-template select="/product[@name='']" />

Früher hat sich der xsl-code für xml1 und xml2 gleich verhalten. Jetzt wird allerdings Version xml2 nicht mehr aufgrufen, weil die XSL-Prüfung implizit vorraussetzt, dass das Attribut name vorhanden sein muss.

Die Kernaussage ist also:
früher: Attribut leer < => Attribut nicht vorhanden
jetzt: Attribut leer != Attribut nicht vorhanden

Die Prüfungen müssen also ggf. erweitert werden um den Bestandteil Attribut gar nicht definiert:


Im folgenden die Ausgabe eines Test-Stylesheets auf die Daten
Daten:

<data name1="hallo" name2="" />

Ausgabe

-------------------------
Prüfung auf @name1="test":
- @namex === @name1 vorhanden
- @namex='' ===
- @namex='hallo' === @name1 hallo
- @namex!='xxx' === @name1 ist nicht xxx
- not(@namex) ===
-------------------------
Prüfung auf @name2="":
- @namex === @name2 vorhanden
- @namex='' === @name2 leer
- @namex='hallo' ===
- @namex!='xxx' === @name2 ist nicht xxx
- not(@namex) ===
-------------------------
Prüfung auf @name3 das nicht vorhanden ist:
- @namex ===
- @namex='' ===
- @namex='hallo' ===
- @namex!='xxx' ===
- not(@namex) === Attribut nicht vorhanden

  • Both comments and trackbacks are currently closed.
  • Trackback URI: http://www.frankl.info/wordpress/know-how/anderungen-in-der-verhaltensweise-von-libxslt-gegenuber-fruheren-versionen/trackback/
  • Comments RSS 2.0

Comments are closed.