2010-01-19 7 views
5

J'essaie d'étendre et de personnaliser un schéma xsd externe (de la norme fixml). J'ai besoin de changer le type de données de certains éléments, sans toucher au schéma d'origine, mais en le redéfinissant; mais l'ont trouvée extrêmement lourde.XSD: Comment redéfinir le type de données d'un simpleType eg. De xs: string à xs: integer

Ce qui existe:

champs-base.xsd

<xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="UTCTimestamp"> 
<xs:simpleType> 

ce que je veux qu'il devienne:

<xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="xs:string"> 
<xs:simpleType> 

Ce que j'ai essayé (mais pas):

<xs:redefine schemaLocation="fields-base.xsd"> 
      <xs:simpleType name="LastUpdateTime_t"> 
       <xs:restriction base="xs:string" /> 
      </xs:simpleType> 
</xs:redefine> 

Livres et net ne s Même si cela a trop aidé, je commence à me demander si cela est théoriquement possible.

Répondre

4

Pour autant que je sache, ce n'est pas possible.

Le seul Redéfinir je pouvais faire validate dans XMLSpy était:

<xs:redefine schemaLocation="fields-base.xsd"> 
     <xs:simpleType name="LastUpdateTime_t"> 
      <xs:restriction base="LastUpdateTime_t" /> 
     </xs:simpleType> 
</xs:redefine> 

C'est, la nouvelle restriction doit être fondée sur la restriction de base.

Peut-être que XMLSpy est faux à ce sujet.

Cette citation un peu cryptique du W3C XML Schema definition:

Dans les [enfants], chaque simpleType doit avoir un parmi ses [enfants] et chaque complexType doit avoir une restriction ou l'extension parmi ses grand- [enfants] la valeur réelle de dont la base [attribut] doit être la identique à la valeur réelle de son propre attribut de nom plus l'espace de noms cible;

peut-être parler de cela (c'est la partie de la spécification que les liens XMLSpy à pour cette erreur).

Le seul vraiment bon exemple de redéfinition de types simples que j'ai pu trouver était here. Dans cet exemple, la redéfinition est uniquement pour les énumérations.

Questions connexes