Un outil qui peut combiner plusieurs fichiers XSD en un seul?

je dois créer des classes de sérialiseur XML pour environ 65 fichiers XSD, pour lesquels J'utilise XSD.EXE pour générer le code C#...

cependant, je continue à courir dans la limite de caractères de la fenêtre CMD dans le fichier de sortie résultant (dans lequel XSD.EXE combine le nom de chaque XSD inclus): "le chemin spécifié, le nom de fichier, ou les deux sont trop longs. Le nom de fichier complet doit être inférieure à 260 caractères, et le nom du répertoire doit être de moins de 248 caractère."

pour faire court, il semble que le seul moyen que je puisse obtenir tous ceux-ci pour valider et générer ensemble est si je peux fusionner tous les XSDs (dé-référencement des includes/importations, qui xsd.EXE ne résout pas le schéma de toute façon) en un grand.

s'il vous Plaît dites-moi qu'il existe un outil pour ce faire...

19
demandé sur ewall 2010-10-05 01:34:57

5 réponses

Ce que vous pouvez faire est de créer un autre nouveau fichier appelé fichier.xsd contenant tous les noms de schéma et le truc est de nommer le dernier fichier de schéma .\ comme préfixe.

Fichier.xsd

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'>
    <generateClasses language='CS' namespace='MyNamespace'>
        <schema>First.xsd</schema>
        <schema>Second.xsd</schema>
        <!-- more schema files here -->
        <schema>.\Third.xsd</schema>
    </generateClasses>
</xsd>

maintenant, lancez la commande "xsd.exe / p:fichier.xsd / classes " et vous obtenez le fichier de classe généré :)

20
répondu Sandhya 2013-10-06 20:17:30

pour les références futures, un autre outil conçu pour le remaniement du schéma XML est QTAssistant - je suis associé avec elle.

Pour clarifier votre question et j'espère aider les autres... Une chose qui ne peut pas être réalisée comme vous l'avez demandé, c'est qu'on ne peut pas dé-référencer les importations: un fichier XSD est associé à un schéma XML qui n'autorise pas plus d'un namespace cible par élément XSD:schema.

un XSD: include peut être "inlined"; puisque les fichiers doivent avoir le même namespace cible ou correspondre à l'approche "caméléon" de la conception de namespace, il est possible de fusionner le contenu d'un fichier dans l'autre.

xsd:import ne peuvent pas être "inline"... sauf si vous modifiez aussi les espaces de noms des cibles. Toutefois, cela ne produirait pas un ensemble de schéma équivalent.

si vous avez un jeu de schéma XML entièrement défini écrit à travers 65 fichiers XSD, avec par exemple 10 espaces de noms, l'ensemble "canonique" de fichiers de schéma XML re-factorisés doit avoir au moins 10 les fichiers.

7
répondu Petru Gardea 2017-04-24 21:55:52

j'ai localisé un outil (essentiellement un XSLT) pour faire ce genre de chose: Paul Kiel schéma XML Flattener, mais je n'ai pas eu mes mains sur elle encore.

D'autres sources disent que des outils comme Oxygen XML Editor et XMLSpy peut le faire aussi, mais je ne peux pas comprendre comment.

-> http://www.oxygenxml.com/xml_schema_editor.html#xml_schema_flatten

dans mon cas, j'ai résolu le problème par un autre moyen détourné route: raccourcir le nom de chaque entrée XSD de sorte que XSD.Le nom de sortie combiné de L'EXE--que vous ne pouvez pas choisir--est en dessous de la limite de 260 caractères.

5
répondu ewall 2011-07-30 14:26:27

je viens de commencer à utiliser Altova XML Spy (1 jour )

Pour les aplatir .schéma xsd en un seul document... cela va encore valider, et fournir des références pour cliquer dans eclipse...

  1. ouvrir le .xsd que vous êtes en train de parler...
  2. L'élément de Menu appelé (schéma Design) a un élément appelé ( schéma aplati).
  3. cliquez dessus. ( il vous demandera où sauvegarder le nouveau fichier... Je crée juste un dossier de sortie ou quelque chose comme ça.

Il semble très bien fonctionner.

3
répondu TheKingpin 2011-10-21 22:07:24

juste ajouter .\ préfixe le nom de la dernière .XSD (schema) et l'inclure dans la virgule.g ".\Dernière.xsd". La classe de sortie sera générée avec le dernier nom de fichier de schéma.

3
répondu Syed Musa Tariq 2015-01-14 13:36:23