Pregunta

Sin entrar en demasiados detalles, buscamos utilizar XML como metadatos para describir restricciones en las propiedades (este es un ejemplo reducido y XSD no admitía nuestro modelo complejo propuesto), se están considerando dos opciones: cuál de los siguientes XML ¿Las estructuras tienen más sentido?

Opción 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>

Opcion 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>
¿Fue útil?

Solución

Probablemente optaría por la opción n.° 2, ya que el trabajo XML describe mejor los datos (que es, después de todo, lo que se supone que debe hacer XML) y, por lo tanto, es más fácil de leer y menos detallado.La opción n.° 1 está un poco cerca de tener <name> y <value> etiquetas para mi gusto.

Otros consejos

Para una mayor flexibilidad, me gustaría ir con # 1. Esto le permitirá añadir diferentes tipos de restricciones y reglas personalizadas.

Depende de cómo desea analizar / proceso de XML y si quieres ser capaz de validarlo.

Desde el punto de vista de validación (si está considerando la validación automática a través de un XSD en tiempo de compilación) La opción 2 es la mejor opción, ya que el contenido de las etiquetas tendrá un cierto tipo (por ejemplo, una expresión regular), mientras la etiqueta <value> no se pudo verificar el contenido correcto.

Además, probablemente me iría con la opción 2 en relación con el análisis y el procesamiento si está utilizando un analizador SAX, ya que podría cambiar los estados sobre la base de las etiquetas.

En lo personal, me gustaría ir con el primero, sospecho que sería más fácil escribir código para analizar y hacer la comprobación de errores en. Además de que tiene más sentido semánticamente a mi cerebro.

Dicho esto, pienso que usted encontrará que es 'elección personal', o bien está muy bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top