MudGuard: preceding-sibling-Mißverständnis (Liste von Anfangsbuchstaben)

Beitrag lesen

Hi,

Problem eingekreist:

<xsl:variable name="previous"><xsl:value-of select="translate(substring(preceding-sibling::catter[1]/@names,1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')" /></xsl:variable>

preceding-sibling greift auf die Reihenfolge der Elemente im XML-File zu, nicht auf die sortierte Reihenfolge.

Und die Reihenfolge ist (nicht wie im Beispiel), sondern so, daß zuerst alle Elemente, deren names-Attribut mit Großbuchstaben beginnt, sortiert nach diesem Großbuchstaben, vorkommen und dann alle Elemente, deren names-Attribut mit Kleinbuchstaben beginnt, sortiert nach diesem Kleinbuchstaben.

Also

<catters>
   <catter names="A_aaaa" />
   <catter names="A_bbbb" />
   <catter names="A_cccc" />

<catter names="B_dddd" />
   <catter names="B_eeee" />

<catter names="C_gggg" />
   <catter names="C_hhhh" />

<catter names="F_mmmm" />

<catter names="b_ffff" />

<catter names="c_iiii" />

<catter names="d_jjjj" />
   <catter names="d_kkkk" />

<catter names="f_llll" />
   <catter names="f_nnnn" />

</catters>

Da muß ich eine kleine Änderung in dem Programm vornehmen, daß das XML erzeugt - damit dort case-insensitiv sortiert wird.
Oder im XSL probieren, mit Position()-1 auf den Vorgänger zuzugreifen, statt mit preceding-sibling

cu,
Andreas

--
MudGuard? Siehe http://www.mud-guard.de/