<texit info> author=E. Bruno title=CC XSLT </texit>

Contrôle Continu Structure de Données Web

Vous avez droits à tous les documents.

Vous devrez rendre trois feuilles de style exo1_1.xsl, exo1_2.xsl et exo2.xsl. Ces documents seront déposés sur esparon et par sécurité envoyées aussi à l’adresse bruno@univ-tln.fr. Les noms des fichiers report.xml et bid.xml sont cliquables pour pouvoir être téléchargés.

Le document xml report.xml décrit des opérations chirurgicales.

  • Ecrire la feuille de style exo1_1.xsl qui retourne uniquement le texte du document ci-dessous.
  • Ecrire la feuille de style exo1_2.xsl qui
    • Construit un document XHTML ayant un élément title dans le head et un h1 dans le body. Le contenu de ces deux éléments sera le contenu l’élément title du report (ici HL7 Patient Records).
    • Ajouter le texte “Nombre d’incisions :” suivi nombre d’éléments incision (calculé) dans le documents.
    • Ajouter le texte “Observation après la première incision : ” suivi du texte de cette observation (extrait automatiquement).
    • Pour chaque section créer un élément div ayant un attribut class=“section”. Dans le div, ajouter un élément h1 dont le contenu est le title de la section.
    • Ajouter dans le div, la liste HTML de toutes les actions, contenues dans le content de la section. Il ne doit rien y avoir d’autre dans le div.
    • En utilisant le foreach. Ajouter un élément div dans le body qui contient la liste de tous les instrument utilisés dans l’ordre d’apparition dans le document.
    • En utilisant le foreach. Ajouter un élément div dans le body qui contient la liste de tous les instrument par ordre alphabétique inverse et sans doublons. Ajouter un attribut nb à l’élément UL qui indique le nombre total d’instruments uniques.
    • Déclarer une variable “globale” appelée instrument et dont la valeur est “hasson trocar”. Ajouter un élément div qui contient le texte de la dernière action qui contient l’instrument indiqué dans la variable $instrument.
report.xml
<report>
  <title>HL7 Patient Records</title>
  <section>
    <title>Procedure</title>
     <content>
      The patient was taken to the operating room where she was placed
      in supine position and
      <anesthesia>induced under general anesthesia.</anesthesia>
      <prep> 
        <action>A Foley catheter was placed to decompress the bladder</action>
        and the abdomen was then prepped and draped in sterile fashion.
      </prep>  
      <incision>
        A curvilinear incision was made
        <geography>in the midline immediately infraumbilical</geography>
        and the subcutaneous tissue was divided
        <instrument>using electrocautery.</instrument>
      </incision>
      The fascia was identified and
      <action>#2 0 Maxon stay sutures were placed on each side of the midline.
      </action>
      <incision>
        The fascia was divided using
        <instrument>electrocautery</instrument>
        and the peritoneum was entered.
      </incision>
      <observation>The small bowel was identified.</observation>
      and
      <action>
        the
        <instrument>Hasson trocar</instrument>
        was placed under direct visualization.
      </action>
      <action>
        The
        <instrument>trocar</instrument>
        was secured to the fascia using the stay sutures.
      </action>
     </content>
  </section>
</report>

Le document XML bid.xml représente :

  • des utilisateurs (user_tuple),

Par exemple, ici l’utilisateur dont l’identifiant est U01 :

  <user_tuple>
      <userid>U01</userid>
      <name>Tom Jones</name>
      <rating>B</rating>
  </user_tuple>
  • des objects mis aux enchères (item_tuple)

Par exemple, l’objet dont l’identifiant est 1001 mis en vente par l’utilisateur (offered_by) U01.

  <item_tuple>
      <itemno>1001</itemno>
      <description>Red Bicycle</description>
      <offered_by>U01</offered_by>
      <start_date>1999-01-05</start_date>
      <end_date>1999-01-20</end_date>
      <reserve_price>40</reserve_price>
    </item_tuple>
  • des enchères (bid_tuple)

Par exemple, l’offre de l’utilisateur U01 pour l’objet 1002 est de 400F.

    <bid_tuple>  
      <userid>U01</userid> 
      <itemno>1002</itemno> 
      <bid>400</bid> 
      <bid_date>1999-02-14</bid_date> 
    </bid_tuple>

Proposer une feuille de style XSL exo2.xsl qui représente les utilisateurs, les objets et les enchères sous la formes de trois tableaux HTML.

Vous devrez faire en sorte que les Information soient lisibles : le nom des propriétaires des objets seront mis en toutes lettre (pas uniquement leur code), de même pour les enchères (bids_tuple) le noms utilisateurs et objets sera en toute lettre.

BONUS : mettre en gras la meilleure offre pour chaque objet.

bid.xml
<?xml version='1.0'?>
<data>
  <users>
    <user_tuple>
      <userid>U01</userid>
      <name>Tom Jones</name>
      <rating>B</rating>
    </user_tuple>
    <user_tuple>
      <userid>U02</userid>
      <name>Mary Doe</name>
      <rating>A</rating>
    </user_tuple>
    <user_tuple>
      <userid>U03</userid>
      <name>Dee Linquent</name>
      <rating>D</rating>
    </user_tuple>
    <user_tuple>
      <userid>U04</userid>
      <name>Roger Smith</name>
      <rating>C</rating>
    </user_tuple>
    <user_tuple>
      <userid>U05</userid>
      <name>Jack Sprat</name>
      <rating>B</rating>
    </user_tuple>
    <user_tuple>
      <userid>U06</userid>
      <name>Rip Van Winkle</name>
      <rating>B</rating>
    </user_tuple>
  </users>
  <items>
    <item_tuple>
      <itemno>1001</itemno>
      <description>Red Bicycle</description>
      <offered_by>U01</offered_by>
      <start_date>1999-01-05</start_date>
      <end_date>1999-01-20</end_date>
      <reserve_price>40</reserve_price>
    </item_tuple>      
    <item_tuple>
      <itemno>1002</itemno>
      <description>Motorcycle</description>
      <offered_by>U02</offered_by>
      <start_date>1999-02-11</start_date>
      <end_date>1999-03-15</end_date>
      <reserve_price>500</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1003</itemno>
      <description>Old Bicycle</description>
      <offered_by></offered_by>
      <start_date>1999-01-10</start_date>
      <end_date>1999-02-20</end_date>
      <reserve_price>25</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1004</itemno>
      <description>Tricycle</description>
      <offered_by>U01</offered_by>
      <start_date>1999-02-25</start_date>
      <end_date>1999-03-08</end_date>
      <reserve_price>15</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1005</itemno>
      <description>Tennis Racket</description>
      <offered_by>U03</offered_by>
      <start_date>1999-03-19</start_date>
      <end_date>1999-04-30</end_date>
      <reserve_price>20</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1006</itemno>
      <description>Helicopter</description>
      <offered_by>U03</offered_by>
      <start_date>1999-05-05</start_date>
      <end_date>1999-03-06</end_date>
      <reserve_price>50000</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1007</itemno>
      <description>Racing Bicycle</description>
      <offered_by>U04</offered_by>
      <start_date>1999-01-20</start_date>
      <end_date>1999-05-25</end_date>
      <reserve_price>200</reserve_price>
    </item_tuple>
    <item_tuple>
      <itemno>1008</itemno>
      <description>Broken Bicycle</description>
      <offered_by>U01</offered_by>
      <start_date>1999-02-05</start_date>
      <end_date>1999-02-20</end_date>
      <reserve_price>25</reserve_price>
    </item_tuple>
  </items>
  <bids>
    <bid_tuple> 
      <userid>U02</userid> 
      <itemno>1001</itemno> 
      <bid>35</bid> 
      <bid_date>1999-01-07</bid_date> 
    </bid_tuple> 
    <bid_tuple> 
      <userid>U04</userid> 
      <itemno>1001</itemno> 
      <bid>40</bid> 
      <bid_date>1999-01-08 </bid_date> 
    </bid_tuple> 
    <bid_tuple> 	 
      <userid>U02</userid> 
      <itemno>1001</itemno> 
      <bid>45</bid> 
      <bid_date>1999-01-11 </bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U04</userid> 
      <itemno>1001</itemno> 
      <bid>50</bid> 
      <bid_date>1999-01-13</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U02</userid> 
      <itemno>1001</itemno> 
      <bid>55</bid> 
      <bid_date>1999-01-15</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U01</userid> 
      <itemno>1002</itemno> 
      <bid>400</bid> 
      <bid_date>1999-02-14</bid_date> 
    </bid_tuple> 
    <bid_tuple> 
      <userid>U02</userid> 
      <itemno>1002</itemno> 
      <bid>600</bid> 
      <bid_date>1999-02-16</bid_date> 
    </bid_tuple> 
    <bid_tuple> 
      <userid>U03</userid> 
      <itemno>1002</itemno> 
      <bid>800</bid> 
      <bid_date>1999-02-17</bid_date> 
    </bid_tuple>
    <bid_tuple>  
      <userid>U04</userid> 
      <itemno>1002</itemno> 
      <bid>1000</bid> 
      <bid_date>1999-02-25</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U02</userid> 
      <itemno>1002</itemno> 
      <bid>1200</bid> 
      <bid_date>1999-03-02</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U04</userid> 
      <itemno>1003</itemno> 
      <bid>15</bid> 
      <bid_date>1999-01-22</bid_date> 
    </bid_tuple> 
    <bid_tuple> 
      <userid>U05</userid> 
      <itemno>1003</itemno> 
      <bid>20</bid> 
      <bid_date>1999-02-03</bid_date> 
    </bid_tuple> 
    <bid_tuple> 
      <userid>U01</userid> 
      <itemno>1004</itemno> 
      <bid>40</bid> 
      <bid_date>1999-03-05</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U03</userid> 
      <itemno>1007</itemno> 
      <bid>175</bid> 
      <bid_date>1999-01-25</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U05</userid> 
      <itemno>1007</itemno> 
      <bid>200</bid> 
      <bid_date>1999-02-08</bid_date> 
    </bid_tuple> 
    <bid_tuple>  
      <userid>U04</userid> 
      <itemno>1007</itemno> 
      <bid>225</bid> 
      <bid_date>1999-02-12</bid_date> 
    </bid_tuple> 
  </bids>
</data>