Hallo,
In xslt 2.0 wäre das dann einfacher:
<xsl:apply-templates select="idref(@id)" mode="byevent"/>
Aber die Implementierung in Saxon 7.9 scheint noch nicht wirklich zu funktionieren.
Ich habe jetzt mal nachgefragt und ausprobiert, es funktioniert so:
<xsl:apply-templates select="idref(@id)/.." mode="byevent"/>
Dabei verstehe ich nicht wirklich, warum hier nicht die selbe Funktionweise vom W3C vorgesehen ist, wie beim id(). (Bzw es ist, aber id() funktioniert trozdem dann anders) Aber vielleicht ändert sich die WD noch.
Wie schon mal erwähnt: ich hab immer mal wieder einige 100 Transformationen vorzunehmen.
Mit msxsl dauert das für ALLE Transformationen nur unwesentlich länger als mit dem JAVA-Teil Saxon. Aus irgendeinem Grund dauert es bei mir ca. 30 Sekunden, bis die JAVA-VM (1.4.2 genauso wie auch 1.4.0 oder 1.3.1) sich bereiterklärt, mit der Abarbeitung eines Java-Programms zu beginnen.
30 Sek. sind viel. Liegt vielleicht am Rechner? Da M$ mit winXP keine eigene VM mehr ausliefert, muss ich auch auf die "normale" Java VM zurückgreifen (1.4.2_03) aber es dauert bei mir trotzdem nur sehr kurz:
------------------------------
Dein Beispiel XML:
SAXON 7.9 from Saxonica
Java version 1.4.2_03
Processing file:/data.xml using associated stylesheet
Prepared associated stylesheet file:/data.xsl
Building tree for file:/data.xml using class net.sf.sa
xon.tinytree.TinyBuilder
Tree built in 16 milliseconds
Tree size: 22 nodes, 46 characters, 12 attributes
-------------------------------
MSXSL von der commandline:
Microsoft (R) XSLT Processor Version 4.0
Source document load time: 7.831 milliseconds
Stylesheet document load time: .703 milliseconds
Stylesheet compile time: .616 milliseconds
Stylesheet execution time: .914 milliseconds
Daher bleib ich vorerst bei msxsl - und das kann derzeit auch nur xslt 1.0
Würde ich auch, schon allein aus dem Grund, weil xslt 2 eben noch keine Rec. ist.
Grüße
Thomas