English | Français | >> Deutsch << | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Seite 11 << | Zurück | Vor | Inhalt | Element-Index

Nicht selten liefern mehrer Vorlagen die selben Elemente in einer XML-Quelle. Es muss also eine Entscheidungsm?glichkeit geschaffen werden, welche Vorlage in welcher Reihenfolge benutzt werden soll. Das Priority-Attribut spezifiert die Reihenfolge der Bearbeitung. Wenn das Attribut nicht gesetzt ist, wird die Reihenfolge anhand verschiedener Regeln berechnet. XSLT Stylesheet 1 und XSLT Stylesheet 2 unterscheiden Sich durch die Reihenfolge der Vorlagen. XSLT Stylesheet 3 zeigt die Standard-Reihenfolge, da kein Priority-Attribut gesetzt wurde. Die Vorlage CCC hat eine geringere Priorir?r als CCC/CCC. Vergleichen Sie XSLT Stylesheet 4 und XSLT Stylesheet 5 . Die Vorlage CCC hat eine geringere Priorir?t als CCC/CCC oder AAA/CCC/CCC, aber die beiden letzten haben die gleiche Priorit?t. In einem solchen Fall kann der XSLT-Prozessor eine Fehlermeldung erzeugen; Wenn keine Fehlermeldung erzeugt wird, muss anhand der übriggebliebenen Auswahl-Vorlagen festgestellt werden, welches als letztes im Stylesheet vorkommt. In XSLT Stylesheet 6 hat ein "*" weniger Priorit?t als CCC. Der Bereich bei ausgerechneten Priorit?ten liegt zwischen -0.5 to 0.5. Die W3C-XSLT Spezifikation gibt hier weitere Details.

XSLT Stylesheet 1

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h2 style="color:red">CCC (id=c2)</h2>
<h3 style="color:blue">CCC (id=c3)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC" priority="3">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="CCC/CCC" priority="4">
     <h2 style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 2

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h3 style="color:blue">CCC (id=c2)</h3>
<h3 style="color:blue">CCC (id=c3)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC" priority="4">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="CCC/CCC" priority="3">
     <h2 style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 3

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h2 style="color:red">CCC (id=c2)</h2>
<h3 style="color:blue">CCC (id=c3)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="CCC/CCC">
     <h2 style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 4

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h2 style="color:green">CCC (id=c2)</h2>
<h3 style="color:blue">CCC (id=c3)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="CCC/CCC">
     <h2 style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>

<xsl:template match="AAA/CCC/CCC">
     <h2 style="color:green">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 5

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h2 style="color:red">CCC (id=c2)</h2>
<h3 style="color:blue">CCC (id=c3)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
</xsl:template>

<xsl:template match="CCC">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="AAA/CCC/CCC">
     <h2 style="color:green">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>

<xsl:template match="CCC/CCC">
     <h2 style="color:red">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h2>
</xsl:template>


</xsl:stylesheet>


XSLT Stylesheet 6

XML Quelltext
<source>

<AAA id="a1" pos="start">
     <BBB id="b1"/>
     <BBB id="b2"/>
</AAA>
<AAA id="a2">
     <BBB id="b3"/>
     <BBB id="b4"/>
     <CCC id="c1">
          <CCC id="c2"/>
     </CCC>
     <BBB id="b5">
          <CCC id="c3"/>
     </BBB>
</AAA>

</source>

Ausgabe
<h3 style="color:blue">CCC (id=c1)</h3>
<h3 style="color:blue">CCC (id=c2)</h3>
<h3 style="color:blue">CCC (id=c3)</h3>
<h3 style="color:maroon">AAA (id=a1)</h3>
<h3 style="color:maroon">AAA (id=a2)</h3>

HTML-Ansicht

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

AAA (id=a1)

AAA (id=a2)

XSLT Stylesheet
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <xsl:apply-templates select="//CCC"/>
     <xsl:apply-templates select="//AAA"/>
</xsl:template>

<xsl:template match="CCC">
     <h3 style="color:blue">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>

<xsl:template match="*">
     <h3 style="color:maroon">
          <xsl:value-of select="name()"/>
          <xsl:text> (id=</xsl:text>
          <xsl:value-of select="@id"/>
          <xsl:text>)</xsl:text>
     </h3>
</xsl:template>


</xsl:stylesheet>