 Källkoden för /anders.enges/xml/xml19.asp
 Källkoden för /anders.enges/xml/xml19.asp 
<!--#include file="../inc/navstuff.asp" -->
<h4>Patterns</h4>
<p>Nedan kommer en liten exempelfil för att demonstrera patterns:</p>
<%  show "xml19_1.xml" %>
<p>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.</p>
<p>Exempel</p>
<p>
<table border="0" width="400">
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/driver/name</b></td>
    </tr>
    <tr> 
        <td>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)<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/*/name</b></td>
    </tr>
    <tr> 
        <td>kommer att matcha alla name noder som finns någonstans under racers 
            noden. * fungerar således som en vanlig wildcard<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/driver/*</b></td>
    </tr>
    <tr> 
        <td>kommer att matcha alla noder som finns under driver. Således både 
            name och nationality noderna<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/driver[nationality]/name</b></td>
    </tr>
    <tr> 
        <td>kommer att matcha name noden, men endast för de som har en nationality 
            nod. <br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/driver[nationality='Finn']/name</b></td>
    </tr>
    <tr> 
        <td>kommer att matcha namnen på de som har en finsk nationalitet<br>
            <br>
            Här kan ni gärna jämföra med den sats som förekom 
            i föregående kapitel:<br>
            <b>.[code='Min Dator']</b> som är samma som <b>products/product[code='Min 
            Dator']</b> men eftersom vi redan befann oss i products/product kontexten 
            så sätter vi istället en punkt<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>racers/driver[@type="F1"]</b></td>
    </tr>
    <tr> 
        <td>matchar alla driver noder där type attributet är F1<br>
            <br>
        </td>
    </tr>
</table>
</p>
<h4>Matcha en specifik nod</h4>
<p>
<table border="0" width="400">
    <tr> 
        <td bgcolor="#FFFFCC"><b>driver[0]</b></td>
    </tr>
    <tr> 
        <td>matchar den första föraren. Som vanligt (inom data) är 
            0 det första elementet<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>driver[nationality][2]</b></td>
    </tr>
    <tr> 
        <td>Matchar den tredje (3) föraren som har en nationalitet<br>
        </td>
    </tr>
</table>
</p>
<h4>Parenteser</h4>
<p>om vi har ett XML data med följande utseende:</p>
<div class="code"><A><br>
       <B/><br>
       <B/><br>
    </A><br>
    <A><br>
        <B/><br>
        <B/><br>
    </A><br>
</div>
<p>så kommer </p>
<p>
<table border="0" width="400">
    <tr> 
        <td bgcolor="#FFFFCC"><b>A/B[0]</b></td>
    </tr>
    <tr> 
        <td> att matcha den första B noden för varje A<br>
            <br>
            medan <br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>(A/B)[3]</b></td>
    </tr>
    <tr> 
        <td> matchar den tredje B noden i hela materialet. I vårt fall blir 
            det den första B i den andra A<br>
            <br>
            och <br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>A[1]/B[1]</b></td>
    </tr>
    <tr>
        <td>matchar den andra B noden i den andra A<br>
        </td>
    </tr>
</table>
</p>
<h4>Matcha sista noden</h4>
<p>
<table border="0" width="400">
    <tr> 
        <td bgcolor="#FFFFCC"><b>A[end()]</b></td>
    </tr>
    <tr> 
        <td> matchar den sista A noden inom nuvarande kontext<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>A/B[end()]</b></td>
    </tr>
    <tr> 
        <td> matchar den sista B noden imon nuvarande A kontext<br>
            <br>
        </td>
    </tr>
    <tr> 
        <td bgcolor="#FFFFCC"><b>A/B[end()]</b></td>
    </tr>
    <tr>
        <td>matchar den sista B noden i hela materialet<br>
        </td>
    </tr>
</table>
</p>
<p> </p>
<p> </p>
<!--#include file="../inc/footer.asp" -->