XSD 限定 / Facets
- Página anterior Atributos de XSD
- Página siguiente Elementos de XSD
La restricción (restriction) se utiliza para definir los valores aceptados para un elemento o atributo XML. La restricción para un elemento XML se llama faceta.
Restricción de valores
El siguiente ejemplo define un elemento nombrado "age" con restricción. El valor de "age" no puede ser inferior a 0 ni superior a 120:
<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>
Restricción de un grupo de valores
Para limitar el contenido de un elemento XML a un grupo de valores aceptados, debemos usar restricciones de enumeración (enumeration constraint).
El siguiente ejemplo define un elemento nombrado "car" con restricción. Los valores aceptados son solo Audi, Golf, BMW:
<xs:element name="car"> <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>
El siguiente ejemplo también puede escribirse como:
<xs:element name="car"> type="carType"/> <xs:simpleType name="carType"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>
Notas:En este caso, el tipo "carType" puede ser utilizado por otros elementos, ya que no es parte del elemento "car".
Restricción de una serie de valores
Para limitar el contenido de un elemento XML a una serie de números o letras permitidos, debemos usar restricciones de patrones (pattern constraint).
El siguiente ejemplo define un elemento nombrado "letter" con restricción. Los valores aceptados son solo una letra minúscula a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento nombrado "initials" con restricción. Los valores aceptados son las letras mayúsculas A - Z, tres de ellas:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo también define un elemento nombrado "initials" con restricción. Los valores aceptados son las letras mayúsculas o minúsculas a - z, tres de ellas:
<xs:element name="initials"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento llamado "choice" con una limitación. Los valores aceptados son una de las letras x, y o z:
<xs:element name="choice"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[xyz]"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento llamado "prodid" con una limitación. Los valores aceptados son una secuencia de cinco dígitos árabes, y cada dígito está en el rango de 0-9:
<xs:element name="prodid"> <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>
Otras limitaciones para una serie de valores
El siguiente ejemplo define un elemento llamado "letter" con una limitación. Los valores aceptados son cero o más letras de a - z:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z])*"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento llamado "letter" con una limitación. Los valores aceptados son uno o más pares de letras, cada par compuesto por una letra minúscula seguida de una letra mayúscula. Por ejemplo, "sToP" pasará la validación de este patrón, pero "Stop", "STOP" o "stop" no lo harán:
<xs:element name="letter"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][A-Z])+"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento llamado "gender" con una limitación. Los valores aceptados son male o female:
<xs:element name="gender"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="male|female"/> </xs:restriction> </xs:simpleType> </xs:element>
El siguiente ejemplo define un elemento llamado "password" con una limitación. Los valores aceptados son una línea de caracteres de 8 caracteres, que deben ser letras mayúsculas o minúsculas a - z o dígitos 0 - 9:
<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>
Limitación de caracteres de espacio en blanco
Para especificar el modo de tratamiento de los caracteres de espacio en blanco (whitespace characters), necesitamos usar la limitación de whiteSpace.
El siguiente ejemplo define un elemento llamado "address" con una limitación. La limitación de whiteSpace se establece en "preserve", lo que significa que el procesador XML no eliminará ningún carácter de espacio en blanco:
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction> </xs:simpleType> </xs:element>
Este ejemplo también define un elemento llamado "address" con un límite. Esta restricción whiteSpace se ha configurado como "replace", lo que significa que el procesador XML eliminará todos los caracteres de espacio en blanco (saltos de línea, retornos de carro, espacios y tabuladores):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction> </xs:simpleType> </xs:element>
Este ejemplo también define un elemento llamado "address" con un límite. Esta restricción whiteSpace se ha configurado como "collapse", lo que significa que el procesador XML eliminará todos los caracteres de espacio en blanco (saltos de línea, retornos de carro, espacios y tabuladores se reemplazarán por un espacio, los espacios al inicio y al final se eliminarán, y los espacios en blanco consecutivos se reducirán a un solo espacio):
<xs:element name="address"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction> </xs:simpleType> </xs:element>
Límite de longitud
Para limitar la longitud de los valores de un elemento, debemos usar los límites length, maxLength y minLength.
Este ejemplo define un elemento llamado "password" con un límite. Su valor debe ser exactamente de 8 caracteres:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Este ejemplo también define un elemento llamado "password" con un límite. Su valor debe tener entre 5 y 8 caracteres:
<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element>
Límite del tipo de datos
Límite | Descripción |
---|---|
enumeration | Define una lista de valores aceptables |
fractionDigits | Define el número máximo de dígitos decimales permitidos. Debe ser mayor o igual a 0. |
length | Define el número exacto de caracteres permitidos o el número de elementos en una lista. Debe ser mayor o igual a 0. |
maxExclusive | Define el límite superior de un valor numérico. Los valores permitidos deben ser menores que este valor. |
maxInclusive | Definir el límite superior del número. Los valores permitidos deben ser menores o iguales a este valor. |
maxLength | Definir el número máximo permitido de caracteres o elementos de lista. Debe ser mayor o igual que 0. |
minExclusive | Definir el límite inferior del número. Los valores permitidos deben ser mayores que este valor. |
minInclusive | Definir el límite inferior del número. Los valores permitidos deben ser mayores o iguales a este valor. |
minLength | Definir el número mínimo permitido de caracteres o elementos de lista. Debe ser mayor o igual que 0. |
pattern | Definir la secuencia de caracteres aceptables con precisión. |
totalDigits | Definir la precisión de los dígitos decimales permitidos. Debe ser mayor que 0. |
whiteSpace | Definir el tratamiento de los caracteres de espacio en blanco (salto de línea, retorno de carro, espacio y tabulador). |
- Página anterior Atributos de XSD
- Página siguiente Elementos de XSD