Introduction à XML - Université de Genève, CUI ©

Groupe VP-GL=>Cours en-ligne=>Introduction à XML=>Plan du cours=>

Les formulaires

Modèle de données

Données structurées

Types énumérés

Basés sur le type string, en énumérant la liste des valeurs possibles. Exemple:

<xform:string name="card" enum="closed">
  <xform:value>Visa</value>
  <xform:value>MasterCard</value>
  <xform:value>Diners</value>
  <xform:value>American Express</value>
</xform:string>

Structures hétérogènes

Permet de regrouper un certain nombre de champs pour former une entité. Exemple:

<xform:group name="client">
  <xform:string name="Nom"/>
  <xform:string name="rue"/>
  <xform:string name="ville"/>
  <xform:string name="pays"/>
  <xform:string name="codePostal"/>
</xform:group>

Alternatives

"Unions"

Permet de déclarer différentes façons de fournir la même information. Exemple:

<xform:union name="genre">
  <xform:string enum="closed">
    <xform:value>féminin</value>
    <xform:value>masculin</value>
  </xform:string>
  <xform:string enum="closed">
    <xform:value>F</value>
    <xform:value>M</value>
  </xform:string>
</xform:union>

Variantes

Permet de déclarer des structures différentes en fonction de la valeur d'un champ. Exemple:

<xform:switch name="address">
  <xform:case locale="us" condition="property(locale) is 'US'">
    <xform:string name="street"/>
    <xform:string name="city"/>
    <xform:string name="state"/>
    <xform:string name="zipCode"/>
  </xform:case>
  <xform:case locale="ch-fr" condition="property(locale) is 'CH-FR'">
    <xform:string name="rue"/>
    <xform:string name="ville"/>
    <xform:string name="canton"/>
    <xform:string name="codePostal"/>
  </xform:case>
  <xform:case locale="uk" condition="property(locale) is 'UK'">
    <xform:string name="street"/>
    <xform:string name="town"/>
    <xform:string name="county"/>
    <xform:string name="postCode"/>
  </xform:case>
  <xform:case locale="default">
    <xform:string name="street"/>
    <xform:string name="town"/>
    <xform:string name="county"/>
    <xform:string name="postCode"/>
  </xform:case>
</xform:switch>

Structures homogènes

Permet de répéter une structure en plusieurs exemplaires. Exemple:

<xform:array name="auteurs" minOccurs="1" maxOccurs="unbounded">
  <xform:string name="auteur" />
</xform:array>

Langage de contraintes dynamiques

Les contraintes dynamiques sont définies par des expressions faisant référence à divers éléments du document. Cest éléments peuvent être référencés à l'aide de la notation définie dans XPath. Pour éviter des problèmes dûs à l'utilisation de caractères spéciaux, les opérateurs utilisés dans les expresssions sont des mots:
opérateur signification
not expr inverse le résultat de l'expression
if cond then expr1 else expr2 le résultat sera le résultat de la première expression si la condition est vraie, sinon celui de la deuxième expression
expr1 is expr2 retourne vrai si les deux expressions sont égales
expr1 is within(expr2,expr3) retourne vrai si expr1 est une valeur comprise entre expr2 et expr3. Les expressions doivent être du même type de base (numérique, string, date, temps, valeur monétaire)
expr1 is before expr2 expr1 est inférieure à expr2
expr1 is below expr2 idem
expr1 is after expr2 expr1 est supérieure à expr2
andor et xor opérateurs booléens
plus, minus, times et over opérateurs arithmétiques
string1 plus string2 concaténation de chaînes de caractères
nombre% valeur divisée par 100
number(), sum(), floor(), ceiling(), average(), min(), max() fonctions numériques
string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize-space() et translate() fonctions de manipulation de chaînes de caractères
now() heure actuelle du système sous forme de chaîne de caractères
submit() envoi au serveur

Interface utilisateur

Cette section décrit les balises à utiliser pour décrire l'interface utilisateur, les propriétés de style permettant la mise en page des éléments interactifs de formulaires, ainsi que le mécanisme faisant le lien entre l'interface utilisateur et le modèle de données.

Eléments interactifs

Elément Catégorie Description
output anyControl élément non modifiable par l'utilisateur et affichant une valeur généralement calculée à partir d'autres éléments
textbox anyNavControl élément de saisie de texte. Les attributs rows et cols indiqueront les dimensions (en caractères).
checkbox anyNavControl case à cocher
exclusiveSelect anyNavControl élément de sélection simple contenant un élément <item value="..."> pour chaque valeur possible. La propriété de style list-ui peut prendre une des valeurs radio, checkbox, menu ou listbox pour définir l'apparence de l'élément
multipleSelect anyNavControl élément de sélection multiple contenant, comme l'élément exclusiveSelect, des éléments item.
button anyNavControl élément permettant de lancer une action. L'attribut action peut contenir une contrainte dynamique.
submit button élément provoquant l'envoi des données du formulaire. L'attribut action a pour valeur par défaur submit().
reset pas encore défini
suspend pas encore défini

D'autres éléments interactifs seront bientôt définis.

Eléments de mise en page

Elément Description
groupbox élément pouvant contenir d'autres éléments de formulaire. La propriété de style layout indique la direction selon laquelle les éléments contenus sont répartis (horizontal, vertical ou inherit). La propriété field-align indique l'emplacement de l'étiquette (sous-élément <caption>) d'un élément par rapport à l'élément interactif même (left, right, top, bottom, center, justify ou inherit).

D'autres éléments, t.q. grille, seront bientôt définis.

Liens entre interface et modèle

Note: S'il y a plusieurs formulaires indépendants dans le même document, l'élément <xform:xform id="NomDuFormulaire"> permet de déclarer un formulaire et l'attribut xform:xform permet d'associer un élément interactif à un formulaire déclaré. Exemple:

<xform:textbox xform:xform=ref="EmpruntLivre/Emprunteur/NomFamille">

<xform:xform id="b">
  <xform:model>
  ...
  </xform:model>
  <xform:instance>
    <EmpruntLivre>
      <Emprunteur>
        <NomFamille>...</NomFamille>
      </Emprunteur>
    </EmpruntLivre>
  </xform:instance>
</xform:xform>

L'élément <xform:model> sert à définir le modàle de données associé à un formulaire, un peu comme une déclaration de type dans un langage de programmation. Si une instance est explicitement déclarée, elle doit être conforme au modèle associé au formulaire.

L'élément <xform:bind id="..." ref="..."> permet d'établir un lien entre modèle, instance et interface lorsque ces différentes parties ne sont pas directement imbriuées dans le même élément <xform:xform>



Bertrand Ibrahim     

Dernière modification: 12.04.01

Site Hosting: Bronco