1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Types d’attributs :

abdelouafiSep 16, 2016

    1. abdelouafi

      abdelouafi Administrator Staff Member

      Messages:
      267
      Likes Received:
      8
      Trophy Points:
      18
      Joined
      Sep 13, 2016
      Types d’attributs :
      ID :
      Il doit s'agir d'un nom XML qui identifie de manière unique l'élément.

      Une valeur qui apparaît dans un tel attribut ne peut pas apparaître une seconde fois dans le même document
      <!ATTLIST personne id ID #REQUIRED>

      Cette notion est tout à fait comparable à la clef primaire d'une table dans une base de données.
      IDREF :
      La valeur de l'attribut est une référence à un élément identifié par la valeur de son attribut de type ID.
      <!ATTLIST descendent id_des IDREF #REQUIRED>

      IDREFS :

      La valeur de l'attribut est une liste de références séparées par des espaces.
      <!ATTLIST descendents ids_des IDREFS #REQUIRED>

      NMTOKEN :
      Il s'agit ici un nom XML mais sans restriction sur le premier caractère (qui peut donc être un chiffre). Une contrainte essentielle est donc qu'un attribut de ce type ne contient pas d'espace.
      <!ATTLIST ville code_postal NMTOKEN #REQUIRED>
      NMTOKENS :
      Une suite de NMTOKEN, séparés par des espaces.

      ENTITY
      La valeur d'un attribut de ce type doit être une entité définie dans la DTD
      ENTITIES :
      Une suite d’entités séparées par des espaces.

      Modes d’attributs:
      "valeur" ou ‘valeur’:

      C’est une chaîne quelconque de caractères. Si l'attribut est absent pour un élément du document, sa valeur est implicitement la chaîne valeur. Cette valeur doit, bien sûr, être du type donné à l'attribut.

      #IMPLIED :
      L'attribut est optionnel et il n'a pas de valeur par défaut. Si l'attribut est absent, il n'a pas de valeur.
      # REQUIRED :
      L'attribut est obligatoire et il n'a pas de valeur par défaut.

      #FIXED "valeur" ou #FIXED ‘valeur’ :
      La valeur de l'attribut est fixée à la valeur value donnée. Si l'attribut est absent, sa valeur est implicitement value. Si l'attribut est présent, sa valeur doit être value pour que le document soit valide. Cette valeur doit, bien sûr, être du type donné à l'attribut.
      Il s'agit de définir des raccourcis (ou des alias) qui seront utilisables dans les documents XML liés à la DTD. Certaines entités sont déjà définies en XML : &lt; (<), &gt; (>), &amp; (&), &quot; ("), et &apos; (').

      Entités Générales :
      <!ENTITY m "masculin">

      Cette déclaration permettra d'utiliser &m; dans le document XML associé à la DTD.

      La valeur de l'entité peut contenir du texte, des balises et des entités.
      <!ENTITY pied_page '<hr/><p>Copyright 2014, dernière m-à-j octobre 2014.</p>'>
      Entités Générales Externes :

      Si le code associé à une entité devient très important, il peut être intéressant de le détacher dans un fichier à part.

      <!ENTITY pied_page SYSTEM "pp.xml" >

      Dans ce cas, le fichier pp.xml doit être un fichier XML bien formé (première ligne de déclaration de la version XML et du codage utilisé, fermeture systématique des balises ouvertes, etc.).

      Il y a aussi le cas où le fichier externe représenté par l'entité ne contient pas du XML et ne doit donc pas être parcouru par les applications traitant le document.

      <!NOTATION jpeg SYSTEM "image/jpeg">
      <!ENTITY photo_H2 SYSTEM “H2.jpg" NDATA jpeg>

      Ici, en plus du fichier externe, on trouve NDATA pour Notation Data et jpeg faisant référence à une NOTATION définie précédemment. La NOTATION doit permettre à l'application de traiter le fichier externe : il peut s'agir d'un type MIME comme ici ou d'une commande à exécuter.

      Une telle entité pourra apparaître comme valeur d'un attribut défini avec le type ENTITY.

      Entités Paramètres :
      Ce type d'entité permet d'éviter de répéter les mêmes informations.
      <!ELEMENT personne (nom,prénom,naissance)>
      <!ELEMENT enseignant (nom,prénom)>

      L'utilisation d'une entité paramètre comme suit permet de ne pas répéter et autorise à enrichir ultérieurement la description d'une personne :

      <!ENTITY % description "nom,prénom">

      <!ELEMENT personne (%description;,naissance)>

      <!ELEMENT enseignant (%description;)>

      Des instructions (INCLUDE et IGNORE) permettent de prendre en compte un bloc de la DTD, ou de l'ignorer. La syntaxe est la suivante :
      <![IGNORE[

      <!ELEMENT personne (nom,prénom)>
      <!ELEMENT nom (#PCDATA)>
      <!ELEMENT prénom (#PCDATA)>

      ]]>

      <![INCLUDE[

      <!ELEMENT entreprise (rs,taille)>
      <!ELEMENT rs (#PCDATA)>
      <!ELEMENT taille (#PCDATA)>

      ]]>

      Ce mécanisme devient plus puissant avec l'utilisation conjointe d'entités-paramètres.

      <!ENTITY % bloc_personnes "INCLUDE">
      <!ENTITY % bloc_entreprises "IGNORE">

      <![%bloc_personnes;[

      <!ELEMENT personne (nom,prénom)>
      <!ELEMENT nom (#PCDATA)>
      <!ELEMENT prénom (#PCDATA)>

      ]]>

      <![%bloc_entreprises[

      <!ELEMENT entreprise (rs,taille)>
      <!ELEMENT rs (#PCDATA)>
      <!ELEMENT taille (#PCDATA)>

      ]]>


      Conclusion
      Le rôle d'une DTD est de définir précisément la structure d'un document XML.

      Les DTD ont l'avantage d'être relativement simples à utiliser mais elles sont parfois aussi un peu limitées, elles sont donc particulièrement adaptées pour des petits modèles de documents.
      Les reproches liées aux DTD :
      ØL'élément racine n'est pas spécifié dans la DTD ; un document peut être valide en utilisant n'importe quelle balise de la DTD comme racine ;
      ØLe nombre d'apparitions d'un élément ne peut pas être contraint précisément, puisque l'on ne dispose que des quantifieurs ?, * et + ;
      ØOn ne dispose pas de types pour les contenus des attributs et des éléments (nom, date, code postal, numéro de téléphone, url, adresse mail, etc.) ;
      ØOn ne peut pas contraindre la forme de ces contenus (entre 5 et 20 caractères, contenant un signe @, etc. ) ;
      ØEnfin, le langage utilisé pour définir une DTD n'est pas un langage XML (non extensible).
       
      Loading...

Share This Page

Share