Alle Konzepte Priorität Match-Regeln werden mit einer Priorität ausgestattet. Der Stylesheet-Entwickler hat die Möglichkeit diese Priorität zu überschreiben. Dazu wird das Attribut @priority an der Match-Regel verwendet. Ein Use-Case für die Prioritäten wäre bspw. folgendes Filter-Szenario
Beispiel Seminarverwaltung
Die Eingabeinstanz soll in einer Vorprozessierung gefiltert werden.
Dabei sollen Seminar-Elemente markiert werden, die nicht besonderen Bedingungen entsprechen:
Das Seminar-Element hat ein Feld "Ende-Datum" das abgelaufen ist.
Am Seminar-Element sind mehrere Dozenten angestellt, obwohl das Seminar-Element vom Typ "Single" ist.
Einem Seminar-Element ist kein Dozent zugeordnet.
Sicherlich kann es Seminar-Elemente geben, die alle drei Bedingungen erfüllen. Um das Error-Log aber nicht zu überfüllen, sollen die Filter nach ihren Prioritäten ausgeführt werden.
In XSLT Templates überführt, könnte diese Anforderung so umgsetzt werden:
<xsl:template match="Seminar[Ende-Datum/xs:date(.) le current-date()]" priority="30" mode="filter-seminare"> <xsl:element name="Filtered-Seminar" namespace="{namespace-uri()}"> <xsl:attribute name="reason">termed-seminar</xsl:attribute> <xsl:apply-templates select="node()|@*" mode="filter-seminare"/> </xsl:element> </xsl:template> <xsl:template match="Seminar[Type eq 'SINGLE' and count(dozenten/dozent) gt 1]" priority="20" mode="filter-seminare"> <xsl:element name="filtered-Seminar" namespace="{namespace-uri()}"> <xsl:attribute name="reason">dozenten-count</xsl:attribute> <xsl:apply-templates select="node()|@*" mode="filter-seminare"/> </xsl:element> </xsl:template> <xsl:template match="Seminar[not(dozenten/dozent)]" mode="filter-seminare"> <xsl:element name="filtered-Seminar" namespace="{namespace-uri()}"> <xsl:attribute name="reason">dozenten-missing</xsl:attribute> <xsl:apply-templates select="node()|@*" mode="filter-seminare"/> </xsl:element> </xsl:template>Plain Text
Neben des Einsatzes des @priority Attributs XSLT Konstrukte Priority Attribut Attribute priority und des nachfolgend beschriebenen @mode Attributs ist sicherlich auch noch interessant, dass die gefilterten Seminar-Elemente hier nicht gelöscht werden, sondern umbenannt werden. Auf diese Weise können sie in einem nachfolgenden Transformationsschritt (Stichwort: Vortransformationen ) weiterbehandelt werden, stören aber in der regulären Verarbeitung nicht.