Announcement

Collapse
No announcement yet.

XSLT 1.1 following-sibling in Variable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XSLT 1.1 following-sibling in Variable

    Hallo,

    ich arbeite derzeit an einem kleinen XSLT-Skript für SharePoint und hänge seit einigen Stunden an einem ziemlich nervigen, wahrscheinlich einfach zu lösenden Problem. Ich habe eine ganze Weile nicht mehr mit XSLT gearbeitet und nicht all zu viel Erfahrung, vielleicht stehe ich deswegen auch voll auf dem Schlauch...

    Ich übergebe an eine Variable eine gefilterte Auswahl an Daten, im konkreten Fall ist das z.B.
    Code:
    <xsl:variable name="Rows" select="/dsQueryResponse/CEPD_Documents_Chapter/Rows/Row[$filteredDocuments/@ID=@Document_x0020_ID]">
    Nun möchte ich in diesen gefilterten Daten gruppieren, das geschieht durch folgenden Code :
    Code:
    <xsl:variable name ="chapterGroups" select="$Rows[not(following-sibling::Row/@Chapter_x0020_Number = @Chapter_x0020_Number)]"/>
    Das Problem bei dieser Gruppierung ist, dass sich das "following-sibling" auf den gesamten XML-Baum bezieht, ich möchte allerdings nur innerhalb des in der Variable "$Rows" vorhandenen XML-Baums gruppieren. Befindet sich nun mein gefilterter Datensatz z.B. in der Mitte des Baumes, so sind die Gruppen immer leer, ist der Datensatz am Ende des Baumes, funktioniert die Gruppierung. Auch der Ansatz zur Gruppierung mit einem Key hat das selbe Problem, nur umgedreht (ist der Datensatz am Anfang funktioniert es, ist er am Ende, nicht)... Von daher meine Frage :
    Wie kann ich erreichen, dass sich following-sibling nur auf die in einer Variable enthaltenen Einträge, nicht auf den gesamten Baum bezieht?
    Jeder Eintrag hat übrigens bereits eine eindeutige ID, das könnte vielleicht bei der Umsetzung hilfreich sein...

    Leider kann ich den betreffenden XML-Code hier nicht posten, bei Bedarf werde ich mir aber ein entsprechendes Beispiel zur Veranschaulichung ausdenken können... Bin nur gerade etwas unter Zeitdruck (eben weil mich dieses Problem so lange aufgehalten hat -.-).

    Schonmal vielen Dank für eventuelle Antworten, das Problem macht mich gerade wahnsinnig

    Beste Grüße,

    Compu

  • #2
    Mit XPath selektiert man Knoten in einer Baumstruktur und diese Baumstruktur ändert sich nicht, wenn man Knoten selektiert. Auch wenn die Variable "Rows" eine bestimmte Knotenmenge selektiert, ändert sich also nicht die Baumstruktur, in der sich die Knoten befinden, damit auch nicht die siblings eines Elementes.
    Wenn man eine neue Baumstruktur erzeugen und weiterverarbeiten will, ist das in XSLT 1.0 nur durch die Verkettung von Stylesheets möglich oder aber nur durch die Benutzung einer Erweiterungsfunktion wie exsl:node-set http://www.exslt.org/exsl/functions/node-set/index.html.

    Comment


    • #3
      Danke für die Information, das hat zwar meinen ganzen Ansatz über den Haufen geworfen, habe jetzt aber einen viel schnelleren und einfacheren gefunden (Da jedes Dokument die gleichen Kapitel hat, habe ich einfach die Kapitel aus dem ersten Dokument ausgelesen statt über alle Dokumente zu gruppieren... Manchmal macht man sich's aber auch schwer )

      Comment

      Working...
      X