2010-03-01 4 views
3

Je travaille sur une génération de code pour un projet existant et je veux partir d'un xsd. Donc je peux utiliser des outils comme Xsd2Code/xsd.exe pour générer le code et aussi utiliser le xsd pour valider le xml. Cette partie fonctionne sans aucun problème. Je souhaite également traduire certaines restrictions à DataAnnotations (enrichir Xsd2Code). Par exemple xs: minInclusive/xs: maxInclusive Je peux traduire en RangeAttribute. Mais que faire avec les attributs de validation personnalisés que nous avons créés? Puis-je ajouter des facettes/restrictions personnalisées? Et comment? Ou existe-t-il une autre solution/meilleure pratique?XSD, restrictions et génération de code

Je voudrais rassembler tout dans un seul fichier (xsd) afin qu'un fichier contienne la structure de la classe (modèle) incluant la validation (attributs) à ajouter.

<xs:element name="CertainValue"> 
    <xs:simpleType> 
    <xs:restriction base="xs:double"> 
     <xs:minInclusive value="1" /> 
     <xs:maxInclusive value="100" /> 
     <xs_custom:customRule attribute="value" /> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

Répondre

0

schéma XML est lui-même schéma pressèrent, de sorte que vous ne pouvez pas ajouter un élément arbitraire (dans ses yeux). Il y a une possibilité d'ajouter ce que vous voulez, xs: annotation/xs: appinfo, qui est disponible pour l'ajout à la plupart des nœuds. Peut-être essayer quelque chose comme ceci:

<xs:element name="CertainValue"> 
<xs:simpleType> 
    <xs:restriction base="xs:double"> 
    <xs:annotation> 
     <xs:appinfo> 
     <xs_custom:customRule attribute="value" />  
     </xs:appinfo> 
    </xs:annotation> 
    <xs:minInclusive value="1" /> 
    <xs:maxInclusive value="100" /> 
    </xs:restriction> 
</xs:simpleType> 

Cela dépend de l'endroit où Xsd2Code cherche les choses, mais s'ils attendent XSD passé pour valider, appinfo est probablement leur seul choix. Juste quel élément ajouter l'appinfo sur lui aussi de question.

Questions connexes