Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

Client Serveur – DTD Attributs & Entités

Programmation Client Serveur



Introduction:

  • Dans le chapitre précédent, nous avons vu comment décrire les balises de nos documents XML, mais ce n’est pas suffisant pour pouvoir décrire l’intégralité d’un document XML.
  • En effet, rappelez vous qu’une balise peut contenir ce qu’on appelle des attributs.
  • Il convient donc de décrire les règles relatives à ces attributs. C’est ce que nous allons voir au cours de ce chapitre.
  • Ce chapitre sera également l’occasion de découvrir une nouvelle notion dont on n‘a pas encore parlé : les entités.

Les attributs: La syntaxe

  • Pour indiquer que notre règle porte sur un attribut, on utilise le mot clef ATTLIST.
  • On utilise alors la syntaxe suivante : <!ATTLIST balise attribut type mode>
  • Une règle peut donc se diviser en 5 mots clefs:  ATTLISTbaliseattributtype et mode.

Retour sur la balise et l’attribut

  • Il suffit simplement d’écrire le nom de la balise et de l’attribut concerné par la règle.
  • Par exemple, reprenons une balise du TP de l a partie 1 :
<personne sexe="masculin" /> 
  • On écrira alors :
<!ATTLIST personne sexe type mode>

Retour sur le type

  • Cet emplacement a pour vocation de décrire le type de l’attribut.
  • Est-ce une valeur bien précise ? Est-ce du texte ? Un identifiant ?

Cas d’un attribut ayant pour type la liste des valeurs possibles:

  • Nous allons étudier ici le cas d’un attribut ayant pour type une liste de valeurs.
  • Les différentes valeurs possibles pour l’attribut sont séparées par une barre verticale.
  • <!ATTLIST balise attribut (valeur 1 | valeur 2 | valeur 3 | etc.) mode>
  • Reprenons une nouvelle fois la balise <personne />.
  • Nous avons vu que cette balise possède un attribut sexe.
  • Nous allons ici imposer la valeur que peut prendre cette attribut: soit masculin, soit féminin.
  • Cas d’un attribut ayant pour type la liste des valeurs possibles:
  • Voici ce à quoi la règle portant sur l’attribut dans notre DTD doit ressembler :
<!ATTLIST personne sexe (masculin|féminin) mode>
<!-- valide -->
<personne sexe="masculin" />

<!-- valide -->
<personne sexe="féminin" />

<!-- invalide -->
<personne sexe="autre" />

Cas d’un attribut ayant pour type du texte non « parsé » :

  • Derrière le terme « texte non «parsé»  » se cache en fait la possibilité de mettre ce que l’on veut comme valeur : un nombre, une lettre, une chaîne de caractères, etc.
  • Il s’agit de données qui ne seront pas analysées par le « parseur » au moment de la validation et/ou l’exploitation de votre document XML.
  • Dans le cas où notre attribut contient du texte non « parsé », on utilise la mot clef CDATA.
<!ATTLIST balise attribut CDATA mode>
  • Soit la règle suivante :
<!ATTLIST personne sexe CDATA mode>

<!-- valide -->
<personne sexe="masculin" />

<!-- valide -->
<personne sexe="féminin" />

<!-- valide -->
<personne sexe="autre" />

<!-- valide -->
<personne sexe="12" />
  • Il est tout à fait possible de vouloir qu’une balise possède un attribut permettant de l’identifier de manière unique.
  • Prenons par exemple l’exemple d’une course à pied.
  • Dans le classement de la course, il y aura un unique vainqueur, un unique second et un unique troisième.
  • Pour indiquer que la valeur de l’attribut est unique, on utilise le mot clef ID comme Identifiant: <!ATTLIST balise attribut ID mode>
<!-- valide -->
<personne position="POS-1" />
<personne position="POS-2" />
<personne position="POS-3" />

<!-- invalide -->
<personne position="POS-1" />
<personne position="POS-1" />
<personne position="POS-2" />

Retour sur le mode

Cet emplacement permet de donner une information supplémentaire sur l’attribut comme par exemple une indication sur son obligation ou sa valeur.

Cas d’un attribut obligatoire :

  • Lorsqu’on souhaite qu’un attribut soit obligatoirement renseigné, on utilise le mot clef #REQUIRED.
  • Par exemple, si l’on souhaite que le sexe d’une personne soit renseigné, on utilisera la règle suivante :
<!ATTLIST personne sexe (masculin|féminin) #REQUIRED> 


<!-- valide -->
<personne sexe="masculin" />

<!-- valide -->
<personne sexe="féminin" />

<!-- invalide -->
<personne />

Cas d’un attribut optionnel:

  • Si au contraire on souhaite indiquer qu’un attribut n’est pas obligatoire, on utilise le mot clef #IMPLIED.
  • Si l’on reprend l’exemple précédent, on peut indiquer qu’il n’est pas obligatoire de renseigner le sexe d’une personne par la règle suivante :
<!ATTLIST personne sexe CDATA #IMPLIED> 


<!-- valide -->
<personne sexe="masculin" />

<!-- valide -->
<personne sexe="féminin" />

<!-- valide -->
<personne sexe="15" />

<!-- valide -->
<personne />

Cas d’une valeur par défaut:

  • Il est également possible d’indiquer une valeur par défaut pour un attribut.
  • Il suffit tout simplement d’écrire cette valeur « en dur » dans la règle.
  • Par exemple, il est possible d’indiquer qu’une personne dont l’attribut sexe n’est pas renseigné est un homme par défaut grâce à la règle suivante : <!ATTLIST personne sexe CDATA “masculin”>
<!-- valide -->
<personne sexe="masculin" />

<!-- valide -->
<personne sexe="féminin" />

<!-- valide -->
<!-- l'attribut sexe vaut "masculin" -->
<personne />

Cas d’une constante:

  • Enfin, il est possible de fixer la valeur d’un attribut quand celui-ci est présent grâce au mot clef #FIXED suivi de ladite valeur.
  • Cette situation peut par exemple se rencontrer lorsque l’on souhaite travailler dans une devise bien précise et que l’on souhaite qu’elle apparaisse dans le document.
  • Par exemple, la règle suivante permet d’indiquer que la devise, dans le cas où elle est renseignée, doit obligatoirement avoir pour seule valeur possible l’euro: ü
<!ATTLIST objet devise CDATA #FIXED "Euro">
<!-- valide -->
<objet devise="Euro" />

<!-- invalide -->
<objet devise="Dollar" />

<!-- valide -->
<objet />

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More