Ich versuche, Vorgänger-Geschwister und folgende Geschwister mit einer Teilmenge von Datensätzen mit einer Sortierung auf ihnen zu verwenden. Das Problem, dass die vorangehend/folgende bringt Werte aus der ursprünglichen XML Reihenfolge zurück:mit Vorgänger-Geschwister mit mit xsl: sort
<Salaries>
<Salary>
<Base>1000</Base>
<CreatedDate xmlns:d7p1="http://schemas.datacontract.org/2004/07/System">
<d7p1:DateTime>2016-01-09T14:38:54.8440764Z</d7p1:DateTime>
<d7p1:OffsetMinutes>0</d7p1:OffsetMinutes>
</CreatedDate>
</Salary>
<Salary>
<Base>2000</Base>
<CreatedDate xmlns:d7p1="http://schemas.datacontract.org/2004/07/System">
<d7p1:DateTime>2015-01-09T14:38:54.8440764Z</d7p1:DateTime>
<d7p1:OffsetMinutes>0</d7p1:OffsetMinutes>
</CreatedDate>
</Salary>
<Salary>
<Base>3000</Base>
<CreatedDate xmlns:d7p1="http://schemas.datacontract.org/2004/07/System">
<d7p1:DateTime>2017-01-09T14:38:54.8440764Z</d7p1:DateTime>
<d7p1:OffsetMinutes>0</d7p1:OffsetMinutes>
</CreatedDate>
</Salary>
</Salaries>
Wenn ich eine Art unter A für-jedes (Gehalt/Gehalt) mit dem AC# Funktion verwenden, um Offset Minuten in ein Datum hinzu und Zum Beispiel in eine lange Zahl umwandeln (z. B. 201701010000) (um die Manipulation in xslt einfacher zu machen).
<xsl:sort select="number(cs:Convertdatetolong(cs:AddOffsetMinutes(substring(p:CreatedDate/d5p1:DateTime,1,19),p:CreatedDate/d5p1:OffsetMinutes)))" order="ascending"/>
Die Sortierung funktioniert perfekt und ich bekomme die Datensätze aus in der folgenden Reihenfolge:
Das Problem kommt, wenn ich vorhergehenden verwenden -sibling/vorhergehende (und folgende). Ich würde erwarten, dass der erste Datensatz (2000) keinen vorhergehenden Datensatz hat und der letzte Datensatz (3000) keine Folge hat. Allerdings , wenn ich die Verwendung vorangehenden/nachfolgenden ich den bisherigen Rekord und den nächsten Datensatz aus dem ursprünglichen XML erhalten:
- 2000 (vorhergehenden - 1000/folgenden - 3000)
- 1000 (vor -/folgenden - 2000 )
- 3000 (vor - 2000/folgenden -)
ich gegen den bisherigen Rekord (in der sortierten Reihenfolge vergleichen können mag) und die aktuelle Datensatz (in der sortierten Reihenfolge):
- 2000 (vorhergehend -/folgenden - 1000)
- 1000 (vorhergehenden - 2000/folgende 3000)
- 3000 (vorhergehende - 1000/folgenden -)
Ich habe versucht preceding-sibling und vor
<xsl:value-of select="preceding::p:Salary[1]/p:Base"/>
<xsl:value-of select="preceding-sibling::p:Salary[1]/p:Base"/>
<xsl:value-of select="preceding::p:Salary[position()=1]/p:Base"/>
(das Gehalt in einem anderen Namespace (p) ist das wirklich möglich oder muss ich Variablen verwenden, um den vorherigen Rekord da sparen ta gegen?
Alle Ideen dankbar erhalten. Ich benutze xslt 1.0
Danke. Ich habe es geschafft, die Werte und Daten in eine Knotenmenge zu setzen, in der Reihenfolge, in der ich sie haben möchte. Ich kämpfe darum, sie in einem for-each zu umkreisen: scheint nicht zu funktionieren –
Itsallgonepearshaped
Ah, ich musste den gleichen Namensraum verwenden. Dah. msxsl: Knotenmenge ($ SAL) // p: Gehalt – Itsallgonepearshaped