none
Schemas (xsd) Validar un elemento que pudiera ser string, boolean o entero positivo. RRS feed

  • Pregunta

  • Hola a todos, de ante mano agradezo la ayuda que me puedan otorgar...
    Se esta ralizando una aplicación en la que se tienen que validar la estrucutura de algunos mensajes SOAP que se envian entre diferentes puntos.

    Un ejemplo muy sencillo de un mensaje es este:

    <?xml version="1.0" encoding="UTF-8"?>
    <Message type="notification" name="EndpointUpdate">
      <Token Id="10.160.5.54" />
      <Sessions>
        <Session>
          <ConferenceData type="Xxxxx XX" id="Xxxxx XX - 0305349 - e3727a37-77c0-46e6-a617-6f00a408bba0" />
          <Endpoints>
            <Endpoint id="17064057931">
              <Properties>
                <Property type="Name">
                  <Value>Nombre del Participante</Value>
                </Property>
                <Property type="AudioId">
                  <Value>1</Value>
                </Property>
                <Property type="Mute">
                  <Value>True</Value>
                </Property>
                <Property type="Role">
                  <Value>Leader</Value>
                </Property>
                <Property type="Status">
                  <Value>Connected</Value>
                </Property>
                <Property type="AutoJoin">
                  <Value>True</Value>
                </Property>
                <Property type="Tag">
                  <Value>17064057931-43509491-0ccd-4c1c-9ec0-5838c509b5d8</Value>
                </Property>
                <Property type="PhoneNumber">
                  <Value>17064057931</Value>
                </Property>
              </Properties>
            </Endpoint>
          </Endpoints>
        </Session>
      </Sessions>
    </Message>


    Acutalmetne se estan valiando los mensajes mediante Schemas .xsd para asegurar la integridad de los datos en el mensaje... sin embargo me econtre con un detalle, los volres del elemento < Value > Xxxx </ Value > pueden ser de tipo string, boolean o enteros positvos. Actualmente lo estoy validando de esta manera:

    <xs:element name="Property" >
        <xs:complexType>
          <xs:all>
            <xs:element ref="Value"/>
          </xs:all>
          <xs:attribute name="type" use="required" type="PropertyType">
          </xs:attribute>
        </xs:complexType>
      </xs:element>
    
    
      <xs:simpleType name ="PropertyType">
        <xs:restriction base="xs:string">
          <xs:enumeration value="AudioId"/>
          <xs:enumeration value="AutoJoin"/>
          <xs:enumeration value="Mute"/>
          <xs:enumeration value="Name"/>
          <xs:enumeration value="PhoneNumber"/>
          <xs:enumeration value="Role"/>
          <xs:enumeration value="Status"/>
          <xs:enumeration value="Tag"/>
        </xs:restriction>
      </xs:simpleType>
    Y el elemento "Value" es:

      <xs:element name="Value">
        <xs:simpleType>
          <xs:restriction base="xs:positiveInteger">
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    

    de que forma podria validar que el lemento Value pudiera ser xs:string, xs:boolean ó xs:positiveInteger segun sea el atributo type, es decir que el valor del elemento < Value > True </ Value > es xs:boolean si se trata del atributo "Mute" y xs:string si se trata del atributo "Name" o "Phone Number"

    De ante mano muchas gracias
    salu2


    Israel Camacho
    • Editado iskary lunes, 17 de agosto de 2009 18:47
    lunes, 17 de agosto de 2009 18:33