XML - Distintos elementos segun el valor de un elemento

 
Vista:

Distintos elementos segun el valor de un elemento

Publicado por Keshia (1 intervención) el 06/06/2007 12:29:23
Hola,

Necesito crear un XML Schema de este tipo:

<Empleado>
<Accion> </Accion>
<DNI></DNI>
<Direccion></Direccion>
<FechaEfectiva></FechaEfectiva>
</Empleado>

La acción puede ser "Alta", "Baja", "Modificacion".
Mi problema esque si es un "Alta" o "Modificación" quiero que aparezcan los elementos de arriba pero si es una "Baja", quiero que aparezcan todos menos el elemento Direccion.
¿Es posible hacer esto?

Un saludo
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 elementos condicionales en un XML Schema

Publicado por Alejandro (258 intervenciones) el 14/07/2023 19:53:50
Sí, Keshia, es posible definir elementos condicionales en un XML Schema para lograr el comportamiento que deseas. Puedes utilizar el concepto de "opcionalidad" y restricciones condicionales en la definición de tu esquema XML.

Aquí tienes un ejemplo de cómo puedes definir el XML Schema para tu caso:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 
  <!-- Definición del elemento 'Empleado' -->
  <xs:element name="Empleado">
    <xs:complexType>
      <xs:sequence>
        <!-- Definición del elemento 'Accion' -->
        <xs:element name="Accion" type="xs:string"/>
 
        <!-- Definición del elemento 'DNI' -->
        <xs:element name="DNI" type="xs:string"/>
 
        <!-- Definición del elemento 'Direccion' (opcional) -->
        <xs:element name="Direccion" type="xs:string" minOccurs="0"/>
 
        <!-- Definición del elemento 'FechaEfectiva' -->
        <xs:element name="FechaEfectiva" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
 
</xs:schema>

En este ejemplo, el elemento `<Direccion>` está definido como opcional (`minOccurs="0"`), lo que significa que puede estar presente o ausente en la instancia XML. Esto te permite controlar si el elemento `<Direccion>` aparece o no en función del valor de la acción.

Luego, al crear una instancia XML basada en este esquema, si la acción es "Baja", simplemente puedes omitir el elemento `<Direccion>` en el XML resultante. Si la acción es "Alta" o "Modificación", puedes incluir el elemento `<Direccion>` en el XML.

Recuerda utilizar este esquema al validar tus instancias XML para asegurarte de que cumplan con la estructura definida.

Espero que esta solución te ayude a definir elementos condicionales en un XML Schema según la acción especificada. Asegúrate de ajustar y adaptar el esquema según tus necesidades y requisitos específicos. ¡Buena suerte!
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