4. Kontrollstrukturen
Inhalt 1. Einführung 2. Vorlagen 3. XPath 4. Kontrollstrukturen 5. Sortierung, Gruppierung und Nummerierung 6. Parameter und Variablen 7. Ein- und Ausgabeformate 8. Auslagerung und Wiederverwendung 9. Fortgeschrittene Techniken
Fallunterscheidungen Einsatz von XPath if choose
Kontrollstrukturen Verwendung von XPath Separierung der Knotenmengen vor der Verarbeitung Dadurch getrennte Verarbeitung möglich Keine sukzessiven Tests entlang der Verarbeitung von Knoten Verwendung von xsl:if und xsl:choose Fallweise Verarbeitung durch laufende Tests während der sukzessiven Verarbeitung von Knoten Testbedingungen werden weiterhin in XPath formuliert
Fallunterscheidungen Einsatz von XPath if choose
Fallunterscheidungen: XPath Die erste Möglichkeit, Knotenmengen bedingt zu verarbeiten, stellt die Auswahl aus einer größeren Knotenmenge über XPath- Ausdrücke dar, welche im match- oder select-attribut untergebracht sind. Dies hat das Ergebnis zur Folge, dass aus einer vorgegebenen Knotenmenge nur eine bestimmte Menge anhand eines Prädikats bzw. einer gegebenen Eigenschaft ausgewählt und daher auch nur diese Unterauswahl verarbeitet wird. Entscheidend für die Verwendung von XPath-Ausdrücken in Form von Quasi-Fallunterscheidungen ist die Separierung einer vorhandenen Knotenmenge in eine Untermenge, welche dann für die Verarbeitung bereit steht.
Fallunterscheidungen: XPath 1 2 1 2 Einzelne Vorlage erstellen für Kunden mit @Typ-Wert p oder g
Fallunterscheidungen: XPath
Fallunterscheidungen: XPath
Fragen
Fallunterscheidungen Einsatz von XPath if choose
Fallunterscheidungen: if Bedingte Verarbeitung von Knotenmengen über den Einsatz von XPath-Suchmustern benötigt noch keine neuen XSL-Elemente. Es ist eine eine Filterung mit anschließender getrennter Verarbeitung. Bedingte Verarbeitung über xsl:if und sein test-attribut. Es ist kein Filter, sondern eine reine getrennte Verarbeitung. Mit Hilfe von if ist es nur möglich, Fallunterscheidungen durchzuführen, die keine Alternativfälle und auch keinen Sonderfall zulassen.
Fallunterscheidungen: if
Fallunterscheidungen: if If <xsl:if test="bedingung"> Anweisungen </xsl:if> Bei xsl:if nur einfaches if ohne else-fall Bei xsl:choose mehrere xsl:when-angaben und Standardfall möglich Bedingungen werden über XPath vorgegeben Choose <xsl:choose> <xsl:when test="bedingung"> Anweisungen </xsl:when> <xsl:when test="bedingung"> Anweisungen </xsl:when> <xsl:otherwise> Standard-Anweisungen </xsl:otherwise> </xsl:choose>
Fallunterscheidungen: if
Fallunterscheidungen: if
Fallunterscheidungen Einsatz von XPath if choose
Fallunterscheidungen: choose Für eine if-elseif-else-struktur benötigt man die Elemente xsl:choose als Container-Element mit den beiden Kind-Elementen xsl:when für if und else-if sowie xsl:otherwise für else. Das nachfolgende Beispiel erzeugt eine getrennte Ausgabe für Geschäftsund Privatkunden, allerdings in Dokumentrichtung, weil nach dem Auffinden eines Kunde-Elements jeweils die Fallunterscheidung abläuft.
Fallunterscheidungen: choose If <xsl:if test="bedingung"> Anweisungen </xsl:if> Bei xsl:if nur einfaches if ohne else-fall Bei xsl:choose mehrere xsl:when-angaben und Standardfall möglich Bedingungen werden über XPath vorgegeben Choose <xsl:choose> <xsl:when test="bedingung"> Anweisungen </xsl:when> <xsl:when test="bedingung"> Anweisungen </xsl:when> <xsl:otherwise> Standard-Anweisungen </xsl:otherwise> </xsl:choose>
Fallunterscheidungen: choose
Fragen
Wiederholungen Einsatz von Vorlagen-Regeln for-each
Wiederholungen: Vorlagen-Regeln Durch Vorlagen-Regeln erreicht man exakt die gleichen Ergebnisse wie durch einen Einsatz von xsl:for-each (Kontrollstruktur für Wiederholungen). Verwendete Elemente: xsl:apply-templates und sein match-attribut xsl:template und sein select-attribut
Wiederholungen Einsatz von Vorlagen-Regeln for-each
Wiederholungen: for-each Um Wiederholungen einzurichten, verwendet man xsl:for-each. Es besitzt ein select-attribut und erwartet die gleichen Lokalisierungspfade wie bspw. xsl:apply-templates. <!-- Kategorie: Anweisung --> <xsl:for-each select = node-set-expression > <!-- Inhalt: ( xsl:sort*, template ) --> </xsl:for-each> Folgen Über eine Verwendung von for-each spart man normalerweise eine Ebene bei unbenannten Vorlagen ein. Dies verlängert die Vorlage, welche das for-each-element enthält, um die Anweisungen, die normalerweise in der ausgelagerten Vorlage stünden.
Wiederholungen: for-each Verschiebung der Verarbeitung von Kunden (bspw. choose-/if- Anweisung(en)) in for-each verschieben.
Wiederholungen: for-each
Fragen...