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" -->