XML - TIPOS FECHAS

 
Vista:

TIPOS FECHAS

Publicado por MONTSE (1 intervención) el 30/01/2003 15:52:35
Hola a todos!

Mi pregunta es la siguiente, una parte de mi esquema es esta:

<xs:element name="programa">
<xs:ComplexType>
<xs:sequence>
<xs:element name="nombre" type="tiponombre"/>
<xs:element name="inicio" type="xs:dateTime"/>
<xs:element name="final" type="xs:dateTime"/>
<xs:element name="tipo" type="tipoprog"/>
<xs:element name="sinopsis" type="tiposinopsis" minOccurs="0"/>
</xs:sequence>
</xs:ComplexType>
</xs:element>

¿Sabe alguien si hay alguna forma de indicarle que "final" siempre sea mayor que "inicio"? Es que al ser dos fechas e "inicio" es la fecha d inicio de un programa y "final" la de finalizacion, pues siempre final deberia ser posterior a inicio, y no se como forzarlo a ello, para evitar errores.

Un saludo y muchas gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Restricción de fechas de inicio y final en el esquema de programa

Publicado por Alejandro (258 intervenciones) el 07/07/2023 19:54:02
¡Hola, Montse!

En el esquema XML que has proporcionado, puedes utilizar restricciones de restricción de contenido para asegurarte de que el valor de "final" siempre sea mayor que el valor de "inicio". Para lograr esto, puedes utilizar la restricción de restricción de contenido de tipo "xs:restriction" con la base de tipo "xs:dateTime". Dentro de la restricción, puedes utilizar la restricción de restricción de valor "xs:minExclusive" para especificar que "final" debe ser mayor que "inicio".

Aquí tienes un ejemplo de cómo podrías modificar el esquema para agregar la restricción:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<xs:element name="programa">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="nombre" type="tiponombre"/>
      <xs:element name="inicio" type="xs:dateTime"/>
      <xs:element name="final">
        <xs:simpleType>
          <xs:restriction base="xs:dateTime">
            <xs:minExclusive value="{inicio}"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="tipo" type="tipoprog"/>
      <xs:element name="sinopsis" type="tiposinopsis" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

En el código anterior, se utiliza la restricción "xs:minExclusive" con el atributo "value" establecido en "{inicio}". Esto indica que el valor de "final" debe ser estrictamente mayor que el valor de "inicio". Ten en cuenta que "{inicio}" es solo un marcador utilizado en este ejemplo para referirse al valor de "inicio". En tu implementación real, deberías reemplazar "{inicio}" con el valor adecuado de "inicio" en ese contexto específico.

Con esta restricción en su lugar, cuando se valide un documento XML basado en este esquema, se verificará automáticamente si el valor de "final" es mayor que el valor de "inicio". Si no se cumple esta restricción, se producirá un error de validación.

Espero que esto te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar