English | Français | Deutsch | >> Magyar << | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Oldal 11 << | Előző | Következő | Tartalom | Elem index

Elég gyakran fordul el?, hogy egyszerre t?bb sablon is alkalmazható az XML forrás egy-egy elemére. Ebben az esetben el kell d?nteni, melyik lesz használva. Ez a prioritási sorrend a priority attribútummal határozható meg. Ha ez az attribútum nincs meghatározva, a prioritás t?bbféle szabály szerint kerül megállapításra. Az XSLT stíluslap 1 és az XSLT stíluslap 2 példák sablonjai eltérnek prioritás szempontjából. Az XSLT stíluslap 3 az alapértelmezett m?k?dést illusztrálja a priority attribútum hiánya esetén. A CCC sablonnak alacsonyabb a prioritása, mint a CCC/CCC sablonnak, mivel az kevésbé specifikus. Hasonlítsd ?ssze az XSLT stíluslap 4 és az XSLT stíluslap 5 példákat. A CCC sablonnak alacsonyabb a prioritása, mint a CCC/CCC vagy a AAA/CCC/CCC sablonoknak, ez utóbbi kett?nek azonban azonos a prioritása. Ilyen esetben egy XSLT feldolgozó jelzi a hibát; amennyiben ezt nem teszi meg, akkor az adott esetben alkalmazható sablonok k?zül azt választja ki, mely legutolsóként fordul el? a stíluslapon belül. Az XSLT stíluslap 6 példában a kevésbé specifikus "*" alacsonyabb prioritással bír, mint a CCC. A kiszámított prioritások értéke -0.5 és 0.5 k?z?tt lehet. Az XSLT specifikáció b?vebb részletekkel szolgál.

XSLT stíluslap 1

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT stíluslap
<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 stíluslap 2

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT stíluslap
<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 stíluslap 3

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT stíluslap
<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 stíluslap 4

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT stíluslap
<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 stíluslap 5

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

XSLT stíluslap
<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 stíluslap 6

XML forrás
<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>

Kimenet
<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 nézet

CCC (id=c1)

CCC (id=c2)

CCC (id=c3)

AAA (id=a1)

AAA (id=a2)

XSLT stíluslap
<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>