2010-10-18 3 views
0

J'ai été chargé d'écrire un fichier xsd, pour un format de fichier xml que ma société a créé.Noms de balises de variable XML

Malheureusement l'une des balises contient deux variables, voici un exemple de la balise

<to_1.1.1.0_24> 

Le 1.1.1.0 est une adresse IP et en tant que telle peut changer, et le 24 est le masque de réseau. Existe-t-il une manière d'exprimer cela dans un document xsd?

Merci beaucoup

David

+0

Il semble que le concepteur original de ce XML n'a pas aimé la verbosité de XML, et a essayé d'être intelligent. Grosse erreur. Il sera pénible de traiter ce XML dans le reste de l'écosystème XML, comme vous le voyez maintenant en essayant d'écrire un XSD pour cela. –

+0

Je vois maintenant une grande difficulté à écrire le XSD, que je pense que je vais retarder, jusqu'à ce que je puisse refactoriser cette zone du code. – Mumbles

Répondre

3

n °

La balise elle-même ne doit pas contenir des données variables. Cela devrait être divisé en deux attributs ou éléments. Par exemple:

<to ip="1.1.1.0" netmask="24" /> 

ou:

<to> 
    <ip>1.1.1.0</ip> 
    <netmask>24</netmask> 
</to> 
+0

Merci, j'espérais que ce n'était pas le cas. C'est ce que je soupçonnais comme le décodage du xml, c'est assez complexe. Malheureusement, je n'ai pas conçu cette partie du logiciel ou de la structure xml. – Mumbles

0

Non, et en général ce qui est très mauvaise forme pour un document XML comme il fait l'analyse considérablement moins simple qu'il devrait être. Vraiment, il devrait être quelque chose comme

<to network="1.1.1.0" netmask-bit="24">...</to> 

ou quelque chose comme ça

1

Utilisez l'élément xsd:any. Cela validera ce genre d'élément.

Cependant, il ne manquera pas de validation pour quoi que ce soit d'autre, mais c'est le genre de compromis que vous avez à faire lorsque vous collez ce genre de chose en XML.

Questions connexes