Foros del Web » Programación para mayores de 30 ;) » Programación General »

[SOLUCIONADO] Máscara de un XSD que me da error

Estas en el tema de Máscara de un XSD que me da error en el foro de Programación General en Foros del Web. Buenas! Siguiendo los consejos de un compañero, abro aquí un post sobre mi problema con un XSD, y ya vosotreos lo movéis al lugar más ...
  #1 (permalink)  
Antiguo 05/03/2016, 10:14
Avatar de BramSt  
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años, 7 meses
Puntos: 5
Máscara de un XSD que me da error

Buenas!





Siguiendo los consejos de un compañero, abro aquí un post sobre mi problema con un XSD, y ya vosotreos lo movéis al lugar más oportuno si aquí no está bien.

Aclarar que estoy usando el STYLUS STUDIO 2007

Pues tengo un XML:

Código XML:
Ver original
  1. <?xml version="1.0"?>
  2.  
  3. <libreria xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="esquema.xsd">
  4.  
  5.     <libro categoria="biografia">
  6.  
  7.         <titulo>
  8.             Diabulus In Musica
  9.         </titulo>
  10.         <autor>
  11.             Espido Freire
  12.         </autor>
  13.         <editorial>
  14.             Planeta
  15.         </editorial>
  16.         <isbn>48-239-4152-9</isbn>
  17.  
  18.     </libro>
  19.  
  20. </libreria>

Y su correspondiente esquema:

Código XML:
Ver original
  1. <?xml version="1.0"?>
  2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  3.  
  4.  
  5.     <xsd:element name="libreria" type="t_libreria"/><!--*complejo-->
  6.  
  7.    
  8. <!--definimos la libreria-->
  9.     <xsd:complexType name="t_libreria">
  10.        
  11.        
  12.             <xsd:sequence>
  13.  
  14.                 <xsd:element name="libro" type="t_lib" maxOccurs="unbounded"/><!--*complejo-->
  15.                
  16.  
  17.             </xsd:sequence>
  18.        
  19.  
  20.     </xsd:complexType>
  21.    
  22. <!--definimos el libro-->
  23.     <xsd:complexType name="t_lib">
  24.        
  25.            
  26.  
  27.             <xsd:sequence>
  28.  
  29.                 <xsd:element name="titulo" type="t_tit"/><!--simple*-->
  30.                 <xsd:element name="autor" type="xsd:string" minOccurs="1" maxOccurs="2"/><!--estandard*-->
  31.                 <xsd:element name="editorial" type="xsd:string"/><!--estandard*-->
  32.                 <xsd:element name="isbn" type="t_is"/><!--simple*-->
  33.                
  34.  
  35.             </xsd:sequence>
  36.        
  37.     <xsd:attribute name="categoria" type="t_cat" use="required"/>
  38.     </xsd:complexType>
  39.    
  40.    
  41. <!--definimos el elemento simple titulo. Es simple porque tiene restrcciones, entonces hay q darle un tipo-->
  42.     <xsd:simpleType name="t_tit">
  43.  
  44.         <xsd:restriction base="xsd:string">
  45.  
  46.             <xsd:maxLength value="32"/>
  47.  
  48.  
  49.         </xsd:restriction>
  50.     </xsd:simpleType>
  51.  
  52. <!--definimos el elemento simple isbn-->
  53.  
  54.     <xsd:simpleType name="t_is">
  55.  
  56.         <xsd:restriction base="xsd:string">
  57.             <xsd:length value = "13"/>
  58.             <xsd:pattern value = "dd-ddd-dddd-d"/>
  59.         </xsd:restriction>
  60.     </xsd:simpleType>
  61.  
  62.    
  63.     <xsd:simpleType name="t_cat">
  64.        
  65.         <xsd:restriction base="xsd:string">
  66.             <xsd:enumeration value="biografia"/>
  67.             <xsd:enumeration value="ensayo"/>
  68.             <xsd:enumeration value="ficcion"/>
  69.         </xsd:restriction>
  70.  
  71.     </xsd:simpleType>
  72.    
  73.  
  74. </xsd:schema>

El XML está bien formado, el XSD es válido, pero al validar el XML con el SXD, me dice lo siguiente:
Código XML:
Ver original
  1. Datatype error: Type:InvalidDatatypeValueException, Message:Value '48-239-4152-9' does not match regular expression facet 'dd-ddd-dddd-d'.
  2.  
  3. The XML document libreria.xml is NOT valid (1 errors)

Es decir, la máscara da algún error, pero no entiendo por qué.

Muchas gracias a todos.

Última edición por BramSt; 07/03/2016 a las 09:04
  #2 (permalink)  
Antiguo 07/03/2016, 12:19
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: Máscara de un XSD que me da error

Buenas,

En la restriccion Pattern no tienes que meter una 'mascara', sino una expresion regular.

Deberia servirte algo como:

Código XML:
Ver original
  1. <xsd:pattern value = "[0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9]{1}"/>

http://www.w3schools.com/xml/schema_facets.asp

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 07/03/2016, 14:59
Avatar de BramSt  
Fecha de Ingreso: abril-2015
Mensajes: 117
Antigüedad: 9 años, 7 meses
Puntos: 5
Respuesta: Máscara de un XSD que me da error

Cita:
Iniciado por Profesor_Falken Ver Mensaje
Buenas,

En la restriccion Pattern no tienes que meter una 'mascara', sino una expresion regular.

Deberia servirte algo como:

Código XML:
Ver original
  1. <xsd:pattern value = "[0-9]{2}-[0-9]{3}-[0-9]{4}-[0-9]{1}"/>

http://www.w3schools.com/xml/schema_facets.asp

Un saludo
Mucchas gracias. En clase me han dado las dos opciones, la que tú dices y \d{2}-\d{3}...

Gracias por el enlace.

Etiquetas: erro, xsd
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:00.