2009-07-31 3 views
0

HaloNightmare essayant de générer un code de XSD

Je suis sûr que cette question a été posée à plusieurs reprises dans le passé, mais je suis un cauchemar avec elle. J'ai un ensemble de schémas XSD avec une tonne de types complexes.

L'un d'eux est ceci:

<complexType name="commandType"> 
    <sequence> 
    <choice> 
     <element name="check" type="epp:readWriteType"/> 
    </choice> 
    </sequence> 
</complexType> 

Mais, « vérifier » devrait en fait être un « CheckType » .... mais il ne peut pas être, parce que faire cela créerait une sorte de boucle folle dans les fichiers comprend , donc les outils de conception ne vous laissent pas faire. Donc, readWriteType a été placé dans une classe dont peut-être checkType dérive (je ne sais pas, je pourrais mentir).

readWriteType cependant, ressemble à ceci:

<complexType name="readWriteType"> 
    <sequence> 
    <any namespace="##other"/> 
    </sequence> 
</complexType> 

Ainsi, les outils de génération de code ont tout simplement pas la moindre idée quoi faire avec elle, ou comment CheckType concerne readWriteType. C'est puissant frustrant. Quoi qu'il en soit, j'espérais juste que quelqu'un ici pourrait avoir un brainwave! Oh, XSD.exe ne fonctionne pas avec ces classes, donc j'essaie de travailler avec des outils tiers, quelque chose à propos de l'élément avant complexType.

Merci, P

Répondre

1

Je ne vois pas comment vous pouvez résoudre cela - aussi longtemps que vous utilisez le type d'élément <any>, le code généré sera toujours assez générique et utiliser beaucoup d'éléments object. Pourquoi ne pouvez-vous pas rendre l'élément check de type checkType? C'est vraiment la seule façon de régler les choses - si vous avez des types clairement définis, alors la génération de code peut faire quelque chose.

Marc

+0

Oui, j'espérais pouvoir utiliser « CheckType » comme type de contrôle, mais il ne valide pas. file1.xsd contient le CommandType complexType file2.xsd contient le CheckType complexType et comprend file1.xsd un haut À cause de cela, je ne peux inclure file2.xsd en haut de file1.xsd, ce qui signifie CheckType n'existe pas en tant que type disponible dans file1.xsd – Paul

Questions connexes