275 votes

Outil de validation du schéma XML (XSD) ?

Au bureau, nous sommes en train d'écrire une application qui va générer des fichiers XML à partir d'un schéma qui nous a été donné. Le schéma se trouve dans un fichier .XSD.

Existe-t-il des outils ou des bibliothèques que nous pouvons utiliser pour des tests automatisés afin de vérifier que le XML généré correspond au schéma ?

Nous préférons les outils gratuits qui conviennent à un usage commercial, même si nous n'inclurons pas le vérificateur de schémas dans le paquet, de sorte qu'il ne doit être utilisable que par les développeurs pendant le développement.

Notre langage de développement est le C++ si cela fait une différence, bien que je ne pense pas que cela devrait, car nous pourrions générer le fichier xml et ensuite faire la validation en appelant un programme séparé dans le test.

161 votes

J'adore le fait que beaucoup de ces questions "non constructives" figurent en tête des résultats de recherche Google sur des sujets que je recherche et que les réponses sont utiles.

2 votes

Je comprends ce que vous voulez dire par "pas constructif". Honnêtement, c'est une excellente question et les débats/arguments finissent parfois par donner de bonnes réponses.

26 votes

C'est le cas exact où les admins sont contre-productifs.

1voto

http://www.xmlvalidation.com/

(Assurez-vous de cocher la case " Valider contre un schéma XML externe ").

1voto

jipipayo Points 1358

Un excellent outil visuel pour valider et générer des XSD à partir de XML est IntelliJ IDEA, intuitif et simple.

1voto

AaronDanielson Points 908

Vous pouvez connecter votre schéma XML à l'Intellisense de Microsoft Visual Studio. Cette option vous donne à la fois la validation en temps réel ET la complétion automatique, ce qui est tout simplement génial.

J'ai ce scénario exact qui fonctionne sur ma copie gratuite de Microsoft Visual C++ 2010 Express.

0voto

Jason Dagit Points 5998

J'ai trouvé ce billet de blog en cherchant sur Google : http://marknelson.us/2002/01/01/xml-schema-validation/

Il date un peu, mais semble être une alternative à l'utilisation de libxml, avec des exemples de code.

0voto

Andrew Stern Points 388

J'ai tendance à utiliser xsd de Microsoft pour aider à générer le xsd à partir d'un fichier .NET. J'analyse également les sections du xml à l'aide de xmlstarlet. Le dernier outil gratuit qui pourrait vous être utile est altovaxml, qui est disponible à cette URL : http://www.altova.com/download_components.html .

Cela me permet d'analyser tous les fichiers xml et de choisir le xsd à utiliser en analysant le xml.

# Function:
#    verifyschemas - Will validate all xml files in a configuration directory against the schemas in the passed in directory
# Parameters:
#    The directory where the schema *.xsd files are located.  Must be using dos pathing like: VerifySchemas "c:\\XMLSchemas\\"
# Requirements:
#    Must be in the directory where the configuration files are located
#
verifyschemas()
{
    for FILENAME in $(find . -name '*.xml' -print0 | xargs -0)
    do
        local SchemaFile=$1$(getconfignamefromxml $FILENAME).xsd
        altovaxml /validate $FILENAME /schema $SchemaFile > ~/temp.txt 2> /dev/null
        if [ $? -ne 0 ]; then
            printf "Failed to verify: "
            cat ~/temp.txt | tail -1 | tr -d '\r'
            printf "    - $FILENAME with $SchemaFile\n"
        fi
    done
}

Pour générer le xml, j'utilise : xsd DOTNET.dll /type:CFGCLASS & renommer schema0.xsd CFGCLASS.xsd

Pour obtenir le nom xsd, j'utilise : xmlstarlet sel -t -m /XXX/* -v local-name() $1 | sed 's/ $///'

Cela me permet de récupérer le bon XSD à l'aide d'une balise d'élément dans le fichier xml.

Le résultat net est que je peux appeler une fonction bash pour analyser tous les fichiers XML et les vérifier. Même s'ils se trouvent dans plusieurs sous-répertoires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X