XMLXSLXSL programmeringXSL patterns
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna XSL Dynamiska sidor XML i praktiken

XSL patterns

Patterns

Nedan kommer en liten exempelfil för att demonstrera patterns:

xml19_1.xml

<?xml version="1.0" encoding="iso-8859-1"?> 
<!--  ingen DTD - slarvigt -->
<racers>
   <driver type="F1">
     <name>Mika Häkkinen</name>
     <nationality>Finn</nationality>
   </driver>
   <driver type="rally">
     <name>Marcus Grönholm</name>
     <nationality>Finn</nationality>
   </driver>
   <driver type="rally">
     <name>Colin McRae</name>
   </driver>
   <driver type="F1">
     <name>David Couthard</name>
     <nationality>Scottish</nationality>
   </driver>
</racers>
Om du har IE 5.0 eller nyare kan du klicka här för att se filen i praktiken

För att komma åt delar av datat kan man använda sig av patterns. Patterns utgår oftast från nuvarande kontext. Med det medan att om man har en template som matchar roten (match="/") så utgår vi från roten. Om vi har en template eller en for-each som befinner sig djupare in i datat är detta då den kontext vi kan utgå från. Jämför men nuvarande katalog begreppet i filhantering.

Exempel

racers/driver/name
Kommer att matcha alla noder som heter name och är undernod till driver som i sin tur är undernod till racers (roten i vårt fall)

racers/*/name
kommer att matcha alla name noder som finns någonstans under racers noden. * fungerar således som en vanlig wildcard

racers/driver/*
kommer att matcha alla noder som finns under driver. Således både name och nationality noderna

racers/driver[nationality]/name
kommer att matcha name noden, men endast för de som har en nationality nod.

racers/driver[nationality='Finn']/name
kommer att matcha namnen på de som har en finsk nationalitet

Här kan ni gärna jämföra med den sats som förekom i föregående kapitel:
.[code='Min Dator'] som är samma som products/product[code='Min Dator'] men eftersom vi redan befann oss i products/product kontexten så sätter vi istället en punkt

racers/driver[@type="F1"]
matchar alla driver noder där type attributet är F1

Matcha en specifik nod

driver[0]
matchar den första föraren. Som vanligt (inom data) är 0 det första elementet

driver[nationality][2]
Matchar den tredje (3) föraren som har en nationalitet

Parenteser

om vi har ett XML data med följande utseende:

<A>
   <B/>
   <B/>
</A>
<A>
    <B/>
    <B/>
</A>

så kommer

A/B[0]
att matcha den första B noden för varje A

medan

(A/B)[3]
matchar den tredje B noden i hela materialet. I vårt fall blir det den första B i den andra A

och

A[1]/B[1]
matchar den andra B noden i den andra A

Matcha sista noden

A[end()]
matchar den sista A noden inom nuvarande kontext

A/B[end()]
matchar den sista B noden imon nuvarande A kontext

A/B[end()]
matchar den sista B noden i hela materialet

 

 

  XSL programmeringPatterns exempel
XSL
XSL i praktiken
XSL loopar
XSL programmering
XSL patterns
Patterns exempel
Programkoden
xsl:if
xsl:choose
xsl:for-each
xsl:apply-templates
XSL Övningar
XML versioner
Microsofts lösning
Nummer och datum
Typexempel för XSL ...


Top
< XSL programmering Patterns exempel>
© Anders Enges, Vörå 2002  | 04.10.01 13:45 Visa asp koden