XML - Ayuda con el xsd

 
Vista:

Ayuda con el xsd

Publicado por raul (1 intervención) el 07/06/2004 13:57:49
Hola estoy haciendo un fichero de configuración en xml y me gustaría realizar la validación de este a través del xsd, mi duda es la siguiente:

en una parte del fichero xml tengo lo siguiente:
<restrictionDate>
<intelocutor>Interlocutor2</intelocutor>
<department>Ventas</department>
<day dayFrom="1">true</day>
</restrictionDate>

Como podría indicarle en el xsd que dentro del elemnto <restrinctionDate> tiene que haber obligatoriamente un <day> y :
un <interlocutor>
o un <departament>
o ambos pero que al menos haya uno de los dos
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

Definir restricciones de elementos opcionales y obligatorios en XSD

Publicado por Alejandro (258 intervenciones) el 10/07/2023 20:19:33
Puedes definir la restricción de que dentro del elemento `<restrictionDate>` debe haber obligatoriamente un elemento `<day>` y al menos uno de los elementos `<interlocutor>` o `<department>` utilizando XSD (XML Schema Definition). Para lograr esto, puedes utilizar las características de XSD como elementos requeridos (`<xs:element minOccurs="1">`) y grupos de elección (`<xs:choice>`). Aquí tienes un ejemplo de cómo puedes definir esto en tu XSD:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <xs:element name="restrictionDate">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="interlocutor" type="xs:string" minOccurs="0"/>
        <xs:element name="department" type="xs:string" minOccurs="0"/>
        <xs:element name="day" minOccurs="1">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:boolean">
                <xs:attribute name="dayFrom" type="xs:integer" use="required"/>
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
 
</xs:schema>

En el ejemplo anterior, se define el elemento `<restrictionDate>` con una secuencia (`<xs:sequence>`) que especifica el orden y la estructura de los elementos secundarios. Los elementos `<interlocutor>` y `<department>` tienen `minOccurs="0"` para indicar que son opcionales. El elemento `<day>` tiene `minOccurs="1"` para indicar que es obligatorio. Además, se utiliza una restricción (`<xs:extension>`) en el elemento `<day>` para definir su tipo (`xs:boolean`) y un atributo requerido (`dayFrom`).

Con esta definición en el XSD, se asegurará que haya obligatoriamente un elemento `<day>` dentro del elemento `<restrictionDate>`, y al menos uno de los elementos `<interlocutor>` o `<department>` (o ambos).

Recuerda que debes asociar este XSD con tu archivo XML para realizar la validación. Esto puede hacerse utilizando herramientas o bibliotecas XML que admitan la validación con XSD, como `XmlReader` en .NET Framework.

Espero que esto te sea útil para definir la validación requerida en tu XSD.
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