<xs:restriction>
Es un componente que define las restricciones en un valor de tipo.
Atributos obligatorios:
base:nombre de tipo básico; a través del cual se construirá el nuevo, predefinido y construido.
Atributos principales opcionales:
id:El único identificador para el componente.
Ejemplo:
Se declara un tipo único, que se utilizará para los elementos que son una contraseña. xs: será un tipo base de cadena, con un tamaño mínimo de 6 y un tamaño máximo de 12 (que se discutirá más adelante).
<xs:simpleType name="TipoPass"> <xs:restriction base="xs:string">❶ <xs:minLength value="6" />❷ <xs:maxLength value="12" />❸ </xs:restriction> </xs:simpleType>
❶Se está construyendo un nuevo tipo, reduciendo la cantidad de espacio permitido en el tipo base.
❷El nuevo tipo se ve obligado a tener al menos 6 carácteres de largo.
❸El nuevo tipo se ve obligado a ser una cadena de hasta 12 carácteres.
.
<clave> La declaración de un artículo denominado como tipo recién creado sería:
<xs:element name="clave" type="TipoPass">
Aquí hay un par de ejemplos de uso, uno válido y otro no válido, en un documento de instancia XML:
<clave>claveValida!</clave> ✓
<clave>mala</clave> ✗
Limitaremos los posibles valores de los elementos y atributos.
<xs:element name="xxxxx">
<xs:simpleType>
<xs:restriction base="yyyyyy">
.......
.......
</xs:restriction>
</xs:simpleType>
</xs:element>
En el ejemplo siguiente, el valor del elemento "edad" solo acepta valores de 0 a 120 (el valor de la edad no puede ser mayor que 0 o mayor que 120):
<xs:element name="edad">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
El elemento "coche". Solo se aceptarán los siguientes valores: Audi, Golf, BMW:
<xs:element name="coche">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Beste era batean adierazita:
<xs:element name="coche" type="tipoCoche"/>
<xs:simpleType name="tipoCoche">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
Limitaciones de valor
"carta" con restricciones. Solo se aceptará un carácter de a a z:
<xs:element name="cart">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Solo tres caracteres con minusculas:
<xs:element name="iniciales">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Tres caracteres en minúscula y mayúscula
<xs:element name="iniciales">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z]{3}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
x, y, o z:
<xs:element name="opcion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[xyz]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
De 0 a 9, cinco cifras
<xs:element name="codigo">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
dni:
<xs:element name="dni">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{8}[A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
.
<xs:pattern>
Esta etiqueta representa un patrón o expresión regular que la cadena de texto que se aplica a este.
Ejemplo:
xs:string-
Se pretende definir un tipo de datos basado en el hecho de que se distingue por la existencia de tres cadenas estáticas.
<xs:simpleType name="TresLetrasMay">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
La sintaxis utilizada para estos clientes se basa en expresiones regulares. Estas son las más utilizadas:
Como hemos visto en los patrones anteriores, los factores utilizados en las partes (como se ve en las DTD).
Algunos personajes tienen sus propios significados en expresiones regulares: {, }, [, ], (,), ?, *, +, -, |,^,.,\
En una expresión regular, una de las siguientes expresiones, literalmente, aparece antes del carácter de escape (\).
Ejemplo:
Esta sería una expresión regular para a o b letras o una cadena de caracteres:
[ab\+]
Ejemplo:
Si desea calcular un número de teléfono de esta manera: 3 dígitos, un punto, 3 dígitos, un punto, tres dígitos y un punto. Por ejemplo, 912.345.678
:
<xs:simpleType name="TelefonoConPuntos">
<xs:restriction base="xs:string">
<xs:pattern value="\d{3}\.\d{3}\.\d{3}"/>
</xs:restriction>
</xs:simpleType>
:
<xs:element name="carta">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z])*"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"sToP" es valido pero no "Stop" , "STOP" edo "stop":
<xs:element name="carta">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="([a-z][A-Z])+"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"genero".Los únicos valores posibles son hombres o mujeres.:
<xs:element name="generoa">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="hombre|mujer"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"password" Solo aceptaremos ocho elementos, seguidos de mayúsculas, minúsculas o números.
<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Za-z0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Usaremos whiteSpace para determinar cómo debemos actuar con caracteres blancos.
Cómo tratar espacios
"preserve",No eliminará los espacios en blanco, los mantendrá:
<xs:element name="direccio">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"replace", Reemplazará los procesadores XML por caracteres de espacio en blanco (líneas, tabulaciones, espacios y retornos de carro):
<xs:element name="direccion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="replace"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"collapse", Eliminará los caracteres del espacio en blanco (líneas de alimentación, pestañas, espacios, retornos de carro) y los reemplazará con espacios en blanco, los espacios en blanco repetidos serán reemplazados por una sola:
<xs:element name="direccion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="contra">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
"pasahitza" entre 5 y 8 caracteres
<xs:element name="contra">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Más información sobre la difusión de tipos simples: fusiones y listas
Otra forma de traducir un tipo de datos es definir los tipos de tipos de datos y listas:
Union:Es un tipo de datos creados a partir de un conjunto de tipos de datos básicos. Un valor válido es para una fusión de tipo de datos, si es válida para al menos uno de estos tipos de conversor de datos. Está construido con el componente <xs: union>.
Ejemplo:
El tamaño de la ropa está indicado por números (28, 40, 42) o letras (S, M, L) (que son las primeras letras de las palabras en inglés).
<xs:element name="tamano">
<xs:simpleType>
<xs:union memberTypes="TipoNumero TipoMayus" />
</xs:simpleType>
</xs:element>
<xs:simpleType name="TipoNumero">
<xs:restriction base="xs:positiveInteger">
<xs:enumeration value="38"/>
<xs:enumeration value="40"/>
<xs:enumeration value="42"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="TipoMayus">
<xs:restriction base="xs:string">
<xs:enumeration value="S"/>
<xs:enumeration value="M"/>
<xs:enumeration value="L"/>
</xs:restriction>
</xs:simpleType>
Cualquiera de estas dos partes XML es válida:
<tamano>42</tamano>
<tamano>M</tamano>
Lista:Es un tipo de tipo de datos que consiste en una lista de valores de un tipo de datos básico. La lista de bolas debe estar separada por espacios. Está construida con el componente <xs: list>.
Ejemplo:
ListaDeBingo La lista de valores de tipo se define como una lista muy positiva, que termina en 1 y termina en 90.
<xs:simpleType name="ListaDeBingo">
<xs:list>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="90"/>
</xs:restriction>
</xs:list>
</xs:simpleType>
<xs:element name="numeroGanador"type="ListaDeBingo"/>
Aquí hay una parte de XML que sería válida para la definición anterior:
<numeroGanador>1 7 19 34 42 60 63 73</numeroGanador>