Question

Sans entrer dans trop de détails, nous cherchons à utiliser XML comme méta-données pour décrire les contraintes sur les propriétés (Ceci est un exemple dénudation et XSD ne soutient pas notre modèle complexe proposé), il y a deux options envisagées, ce qui les strucutures XML suivants plus de sens?

Option 1)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quanitity</name>
      <contraints>
         <contraint type="isRequired">
            <value>true</value>
         </contraint>
         <contraint type="regex">
            <value>^[0-9]$</value>
         </contraint>
         <contraint type="regex">
            <value>^[a-zA-Z]$</value>
         </contraint>
      </contraints>
   </Property>
</Properties>

Option 2)

<?xml version="1.0" encoding="us-ascii"?>
<Properties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Property type="string">
      <name>quantity</name>
      <IsRequired>true</IsRequired>
      <Regex>^[0-9]$</Regex>
      <Regex>^[a-zA-Z]$</Regex>
   </Property>
</Properties>
Était-ce utile?

La solution

Je serais probablement aller pour l'option # 2 comme le travail XML fait un meilleur travail de décrire les données (ce qui est après tout ce que XML est censé faire), et est donc plus facile à lire et moins bavard. Option n ° 1 est un peu près d'avoir et <name> balises pour mon <value> goût.

Autres conseils

Pour plus de flexibilité, j'irais avec # 1. Cela vous permettra d'ajouter de nombreux types de contraintes et des règles personnalisées.

Cela dépend de la façon dont vous voulez analyser / processus XML et si vous voulez être en mesure de valider.

D'un point de vue de la validation (si vous envisagez de validation automatique via un XSD au moment de la compilation) L'option 2 est le meilleur choix, comme le contenu des balises aura un certain type (par exemple, une expression régulière), alors que la balise n'a pas pu être <value> pour vérifier le contenu correct.

En outre, je serais probablement aller avec l'option 2 en ce qui concerne l'analyse et le traitement si vous utilisez un analyseur SAX, comme vous pouvez changer d'état en fonction des balises.

Personnellement, je partirais avec le premier, je pense qu'il serait plus facile d'écrire du code pour analyser et faire la vérification des erreurs dans. De plus il est plus logique sémantiquement à mon cerveau.

Cela dit, je pense que vous trouverez qu'il est « choix personnel », que ce soit est très bien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top