2010-06-10 7 views
0

Veuillez noter que je demande une validation par rapport à un nœud particulier et non à l'ensemble du fichier. Pour exemplesComment valider un noeud XML contre un XSD en C++?

<somexmldoc> 
    <someNode> 
     <UserDefinedNode> </> 
     <UserDefinedNode> </> 
    </someNode> 
</somexmldoc> 

Ce document XML, j'ai un wholeDoc.XSD qui pourrait être utilisé pour valider le document en entier, sauf « UserDefinedNode » (Ce nœud est spécifié avec « une » balise dans xsd, qui permet à un utilisateur pour définir quoi que ce soit sous ce nœud).

Est-il possible d'avoir un fichier userdefined.XSD distinct pour valider "UserDefinedNode"? Est-il possible d'utiliser MSXML pour C++ (IXMLDomDocument) pour valider cela?

Merci!

Répondre

0

Devrait être possible. J'ai trouvé un document appelé COMMENT FAIRE: Valider des fragments XML par rapport à un schéma XML dans Visual C# .NET pour vous (see here). C'est C#, mais vous devriez être capable de traduire ceci :-)

1

XSD s'applique à tout le document DOM mais pas au fragment DOM. Cependant, comme votre fragment est aussi un XML valide, pourquoi ne pas le copier dans un autre objet DOM en tant que root? Vous pouvez utiliser appendChild ou cloneNode pour réaliser ceci, puis valider le nouveau DOM. À propos, si vous voulez valider un fragment DOM spécifié, la méthode validateNode est là pour vous.