Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Si vous vous posez une question, vous n'êtes peut-être pas le premier...Les traductions en français des bibles XML.Ces articles sont des références dans leur domaine.Tout ce qu'il faut savoir pour démarrer sur un sujet XML...


Formats décimaux français (ou bilingues) pour W3C XML Schema

Je voudrais pouvoir avoir des float avec virgule (français) et float avec point (anglais). Comment définir mon schéma W3C XML Schema pour qu'il accepte les 2 notations?

Eric van der Vlist, Dyomedea (vdv@dyomedea.com).
vendredi 17 septembre 2004

Table des matières

Introduction

Comment définir un format float ou décimal français?

Comment demander à W3C XML Schema d'accepter les deux formats

Références

Introduction

Il y a deux parties dans votre questions : comment définir un format décimal (ou "float") français et comment demander à W3C XML Schema d'accepter les deux formats.

Comment définir un format float ou décimal français?

W3C XML Schema ne connaît que les "floats anglophones" (avec un point). Vous pouvez dériver un "float francophone" de "xs:token" de la manière suivante :

<xs:simpleType name="float.fr">
<xs:restriction base="xs:token">
  <xs:pattern value="(\+|-)?(([0-9]+(,[0-9]+)?)|(,[0-9]+))((E|e)(
\+|-)?[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>

Si vous voulez inclure les valeurs spéciales autorisées par le type "xs:float", à savoir "INF" (infini), "-INF" (moins l'infini) et "NaN" (Not a Number), vous pouvez rajouter les facettes correspondantes (en les traduisant elles aussi si vous le souhaitez) :

<xs:simpleType name="float.fr">
<xs:restriction base="xs:token">
  <xs:pattern value="(\+|-)?(([0-9]+(,[0-9]+)?)|(,[0-9]+))((E|e)(
\+|-)?[0-9]+)?"/>
  <xs:pattern value="INF"/> 
  <xs:pattern value="-INF"/> 
  <xs:pattern value="NaN"/> 
</xs:restriction>
</xs:simpleType>

Cette méthode présente l'inconvénient de dériver ce type du type primitif "xs:token" dont on conserve la sémantique et surtout la liste des facettes.

On ne peut donc appliquer sur le type "float.fr" que les facettes du type "xs:token", c'est à dire "xs:enumeration", "xs:length", "xs:maxLength", "xs:minLength" et "xs:pattern" et les facettes utiles pour un format de type "float" ("xs:maxExclusive", "xs:maxInclusive", "xs:minExclusive" et "xs:minInclusive") nous sont interdites.

C'est une conséquence de la décision du groupe de travail W3C XML Schema de rejeter les demandes du groupe de travail chargé de l'internationalisation au W3C et il n'y a hélas pas d'autre alternative si l'on a besoin de définir des types de données numériques "localisés".

Comment demander à W3C XML Schema d'accepter les deux formats

Une fois que notre type "float.fr" est défini, il suffit de créer un type de données "bilingue" au moyen d'une dérivation par union :

  <xs:simpleType name="float.bilingue">
    <xs:union memberTypes="float.fr xs:float"/>
  </xs:simpleType>

Ce nouveau type aura la sémantique et la liste des facettes de tous les types issus d'une dérivation par union, c'est à dire "xs:pattern" et "xs:enumeration".

Références

Copyright 2004, Eric van der Vlist


 

Mots clés.



L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.


Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot  

Conception, réalisation et hébergement
Questions ou commentaires
  redacteurs@xmlfr.org