none
validación expresión regular en xsd RRS feed

  • Pregunta

  • Hola todos, estoy validando mi archivo contra xsd; pero en el campo puede estar nulo, pero si no está nulo debe tener 4 números, no se como validarlo, ya que si dejo : [0-9]{4} me valida que tenga 4 números pero si el campo viene nulo, no hay nada me genera error, como hago para que me acepte el nulo , que le agrego a mi expresión en 

     <xsd:pattern value="[0-9]{0,4}"

    no puedo usar  <xsd:pattern value="[0-9]{0,4}" ya que si hay datos me acepta 3 digitos.

    cómo lo puedo ajustar?

    Gracias


    yenni

    martes, 16 de febrero de 2021 16:37

Respuestas

Todas las respuestas

  • ¿No funciona si en el xsd:element le pones minOccurs=0? Normalmente esto es lo que se hace para declarar un elemento como "opcional", y entonces en caso de estar ausente no validaría el pattern.
    martes, 16 de febrero de 2021 18:09
    Moderador
  • Hola, disculpa la pregunta pero donde coloco minOccurs=0 si tengo:

    <xsd:simpleType name="s_columna3">
        <xsd:annotation>
          <xsd:documentation source="col3">campo no valido</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
          <xsd:pattern value="[0-9]{4}" />
        </xsd:restriction>
      </xsd:simpleType>


    yenni

    martes, 16 de febrero de 2021 19:07
  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    martes, 16 de febrero de 2021 19:53
    Moderador
  • Si no me equivoco, iría en el simpleType:

    <xsd:simpleType name="s_columna3" minOccurs="0">

    En principio, eso indica que s_columna3 es opcional. En otras palabras, que el fichero XML puede no contener este elemento. Que no es lo mismo que si "viene nulo", que no tengo claro lo que quiere decir. ¿A qué te refieres cuando dices que el campo viene nulo? ¿Qué es lo que pone dentro del XML en este caso? Si se limita a omitirlo, entonces el minOccurs=0 debería funcionar, pero si está presente pero trae algún valor especial para indicar que es nulo entonces este mecanismo no valdría.

    martes, 16 de febrero de 2021 21:05
    Moderador
  • Hola Alberto, gracias por respoder, realmente no en nulo solo que no traiga datos; pero probé como lo indicas , ejemplo  columna 3 sin datos

    prueba|7787||dfddfdfd

    <xsd:simpleType name="s_columna3" minOccurs="0">

    la validación sigue pidiendo que el campo debe tener 2 digitos.

    Gracias.


    yenni

    martes, 16 de febrero de 2021 21:23
  • Hola, ya funciona, no sé porque antes no funcionaba con [0-9]{0,4}, pero ahora si funciona, gracias

    yenni

    • Marcado como respuesta EricRRModerator martes, 16 de febrero de 2021 22:52
    martes, 16 de febrero de 2021 21:45