Академический Документы
Профессиональный Документы
Культура Документы
El documento XML no tiene su propio espacio de nombres ................................................... 2 El documento XML tiene su propio espacio de nombres....................................................... 3
Componentes principales de un esquema .................................................................................................... 4
Schema.docx
Como el documento XML no tiene su propio espacio de nombres, se enlazara a su esquema a travs del atributo xsi:noNamespaceSchemaLocation. Para tener acceso a este atributo, creamos anteriormente el prefijo xsi: (xml schema instance) que se refiere al espacio de nombres especificado en la etiqueta raz. DOCUMENTO.XML
Schema.docx
Ejemplo: ESQUEMACURSOS.XSD <?xml version="1.0" ... ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="cursosEmpresa" type="xs:string"/> . </xs:schema>
Y en el documento crearemos y utilizaremos en los elementos un prefijo para el espacio de nombres. DOCUMENTO.XML <?xml version="1.0" ... ?> <pref:elementoRaz xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pref=" URIdelEspacioDeNombres " xsi:schemaLocation=" URIdelEspacioDeNombresesquema.xsd"> ... </pref:elementoRaz>
Schema.docx
Ejemplo:
ESQUEMACURSOS.XSD <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> targetNamespace="http://www.xunta.es/cursos"> <xs:element name="cursosEmpresa" type="xs:string"/> </xs:schema>
Tipos simples predefinidos A continuacin podemos ver algunos de los tipos incorporados (primitivos y derivados) ms utilizados. Categora texto nmeros Tipos xs:string, xs:anyURI, xs:normalizedString xs:byte, xs:decimal, xs:double, xs:float, xs:int, xs:integer, xs:long, xs:negativeInteger (<0), xs:nonNegativeInteger (>=0), xs:positiveInteger (>0), xs:nonPositiveInteger (<=0), xs:short, xs:unsignedByte, xs:unsignedInt, xs:unsignedLong, xs:unsignedShort xs:date, xs:dateTime, xs:duration, xs:gDay, xs:gMonth,
fecha/hora
Schema.docx
lgicos
Cuando especifiquemos un contenido deber seguir el formato adecuado al tipo de dato elegido. Por ejemplo, con un nmero real utilizaremos el punto como separador decimal, con una fecha utilizaremos el formato "AAAA-MM-DD", y con una hora utilizaremos el formato "hh:mm:ss". El tipo boolean permite introducir true o 1, y false o 0, indistintamente.
Declaracin de elementos La declaracin de un elemento XML utiliza, en la definicin del esquema, la etiqueta <xs:element ...>. Dependiendo de la utilizacin del elemento en el documento, se puede declarar de alguna de las siguientes maneras. Declaracin de elementos basados en un tipo predefinido Los elementos basados en un tipo simple predefinido slo pueden contener texto que cumpla las restricciones del tipo en el que se basa. No se permiten ni (sub)elementos ni atributos. <xs:element name="nombreElemento" type="tipoPredefinido" /> Ejemplo: La siguiente definicin: <xs:element name="nombreCurso" type="xs:string"/> <xs:element name="numeroAsistentes" type="xs:nonNegativeInteger"/> Permitira incluir en un documento los elementos: <nombreCurso>Programacin en C#</nombreCurso> <numeroAsistentes>15</numeroAsistentes> Basados en un Tipo Simple definido por el usuario Los elementos basados en un tipo simple slo pueden contener texto que cumpla las restricciones impuestas por el tipo simple definido por el usuario. No se permiten ni (sub)elementos ni atributos. Es igual que en el caso de los tipos predefinidos (que se consideran tipos simples), pero especificando a mayores las condiciones que deben cumplir los datos. La definicin del tipo simple se puede realizar en el interior de la declaracin del elemento, por lo que quedara oculta al resto del esquema: <xs:element name="nombreElemento"> <xs:simpleType> ... </xs:simpleType> </xs:element> o fuera, para poderla utilizar en varias declaraciones:
Schema.docx
<xs:simpleType name="nombreDelTipoSimple"> ... </xs:simpleType> <xs:element name="nombreElemento" type="nombreDelTipoSimple"/> Basados en un Tipo Complejo definido por el usuario Cuando un elemento contenga atributos y/o sub-elementos en su contenido, entonces ser necesario crear un tipo complejo. La declaracin de un elemento basado en un tipo complejo es exactamente igual a la de un tipo simple, cambiando <xs:simpleType> por <xs:complexType>. La diferencia es, evidentemente, la propia declaracin de estos tipos, que veremos ms adelante.
Declaracin de atributos En la declaracin de un elemento <xs:element ... > podemos especificar diversos atributos que nos permitirn configurarlo de manera adecuada: name: el nombre del elemento, el que se usar en los documentos XML encerrado entre los smbolos <>. type: el nombre del tipo de datos del contenido del elemento. (puede ser un tipo predefinido, un tipo simple o un tipo complejo). maxOccurs: nmero mximo de veces que el elemento puede aparecer dentro del elemento que a su vez lo contiene. Su valor debe ser de tipo nonNegativeInteger o bien la cadena unbounded para que no tenga lmite. Por defecto es 1. minOccurs: nmero mnimo de veces que el elemento debe aparecer dentro del elemento que a su vez lo contiene. Su valor debe ser de tipo nonNegativeInteger. Si especificamos el valor 0 se convierte en un elemento opcional. Por defecto es 1. default: es el valor predeterminado para el contenido del elemento, si no se le da valor en el documento (no compatible con fixed). fixed: su valor es automticamente asignado al contenido del elemento, sin poder cambiarse en el documento (no compatible con default). ref: su valor es el nombre de otro elemento definido en el esquema (o en otro esquema especificando su espacio de nombres). Si especificamos este atributo, la definicin del elemento (donde se pone ref) no puede contener adems los atributos default, fixed o type (entre otros), ni contener los elementos <simpleType> o <complexType>. Ejemplos del uso de estos atributos: <xs:element name="fechaDeNacimiento" type="xs:date" minOccurs="0"/> <xs:element name="linea" type="xs:string" maxOccurs="unbounded"/> <xs:element name="numeroDeCopias" type="xs:positiveInteger" default="1"/> <xs:element name=ejemplo ref="nombreDelElementoReferenciado" />
Schema.docx
Restricciones Al definir un tipo simple podemos especificar: el tipo de dato que se espera en el contenido de los elementos y los atributos, y tambin una gran variedad de restricciones que nos permiten leer con tranquilidad el documento sabiendo que todas esas condiciones fueron previamente validadas. Las restricciones siempre se aplican sobre un tipo existente (denominado tipo base), y permiten restringir el conjunto de sus posibles valores. Sintaxis: <xs:simpleType name="nombreDelTipoSimple"> <xs:restriction base="nombreDelTipoBase"> ... </xs:restriction> </xs:simpleType> Las posibles restricciones sobre un tipo base son: length: longitud de la cadena o nmero de elementos de la lista. minLength: longitud mnima. maxLength: longitud mxima. pattern: encajar con una expresin regular. (anexo) enumeration: los valores del tipo solo pueden ser los especificados. whiteSpace: controla la normalizacin de los espacios blancos (tabs, etc.). maxInclusive: valor superior incluido. maxExclusive: valor superior excluido. minInclusive: valor inferior incluido. minExclusive: valor inferior excluido. totalDigits: mximo nmero de dgitos (en los tipos numricos) fractionDigits: mximo nmero de dgitos decimales. Dependiendo del tipo base se podr aplicar un posible conjunto de restricciones. Por ejemplo: Restricciones sobre un tipo string son: length, minLength, maxLength, pattern, enumeration y whitespace. Restricciones sobre un tipo de datos integer son: totalDigits, pattern, whitespace, enumeration, maxInclusive, maxExclusive, minInclusive y minExclusive. Ejemplo1: Un nmero entero entre 1 y 10 ambos incluidos.
Schema.docx
valores.xml <?xml version="1.0" encoding="UTF-8"?> <nivel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="valores.xsd">medio</nivel> valores.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="nivel" type="tipoDeNivel"/> <xs:simpleType name="tipoDeNivel"> <xs:restriction base="xs:string"> <xs:enumeration value="baixo"/> <xs:enumeration value="medio"/> Schema.docx 8
Ejemplo 2: El elemento matrcula tiene 4 nmeros y 3 letras maysculas. <xs:element name="matricula"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element> matricula.xml <?xml version="1.0" encoding="UTF-8"?> <matricula xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="matricula.xsd">2258ASD</matricula> matricula.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="matricula"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[0-9][0-9][0-9][0-9][A-Z][A-Z][A-Z]"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:schema> Tambin podra ser: <xs:pattern value="\d\d\d\d[A-Z][A-Z][A-Z]"/> O bien: <xs:pattern value="\d{4}[A-Z]{3}"/> Ejemplo 4: El codigo de cliente de 8 caracteres <xs:element name="codCliente"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/><!-- exactamente 8 carcteres --> </xs:restriction> </xs:simpleType> </xs:element>
Ejemplo 5: El codigo de cliente de 8 caracteres que sean letras minsculas, maysculas y nmeros. <xs:element name="codCliente"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="[a-zA-Z0-9]{8}"/> </xs:restriction> </xs:simpleType> Schema.docx 9
</xs:element>
Ejemplo 6: nombre de usuario entre 6 y 15 caracteres. <xs:element name="nombreDeUsuario"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="6"/> <xs:maxLength value="15"/> </xs:restriction> </xs:simpleType> </xs:element> Listas Una lista consiste en una secuencia de valores de un cierto tipo, separada por espacios. Sintaxis: <xs:simpleType name="nombreDelTipoLista"> <xs:list itemType="tipoDeLosValores"/> </xs:simpleType>
Por ejemplo: <xs:simpleType name="tipoTemperaturas"> <xs:list itemType="xs:integer"/> </xs:simpleType> <xs:element name="temperaturas" type="tipoTemperaturas"/> Permitira el siguinte contenido en el documento XML: <temperaturas>9 13 15 21 17 12</temperaturas> Las listas no siempre son un buen recurso debido a que se pierden las ventajas del formato XML. Es mejor idea incrementar el nmero de marcas de la siguiente manera: <temperaturas> <temperatura>9</temperatura> <temperatura>13</temperatura> <temperatura>15</temperatura> <temperatura>21</temperatura> <temperatura>17</temperatura> <temperatura>12</temperatura> </temperaturas> (Se ver ms adelante)
Schema.docx
10
Uniones Una unin es una estructura que nos permite unir en un nico tipo, valores con distintos tipos de datos. (Un valor puede ser del tipo1, o del tipo2, .) Sintaxis: <xs:simpleType name="nombreTipoUnion"> <xs:union> <xs:simpleType> ...</xs:simpleType> <xs:simpleType> ...</xs:simpleType> ... </xs:union> </xs:simpleType> o bien: <xs:simpleType name="nombreTipoUnion"> <xs:union memberTypes="tipo1 tipo2 ..." /> </xs:simpleType> Ejemplo: Una nota en la que podamos poner un nmero entre 1 y 10, o bien No presentado. Formato1: <xs:element name="nota" type="tipoNota"/> <xs:simpleType name="tipoNota"> <xs:union> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/> <xs:maxInclusive value="10"/> </xs:restriction> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="No presentado"/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType>
Formato2: <xs:element name="nota" type="tipoNota"/> <xs:simpleType name="tipoNota"> <xs:union memberTypes="notaNumero notaLetra" /> </xs:simpleType> <xs:simpleType name="notaNumero"> <xs:restriction base="xs:integer"> <xs:minInclusive value="1"/>
Schema.docx
11
<xs:maxInclusive value="10"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="notaLetra"> <xs:restriction base="xs:string"> <xs:enumeration value="No presentado"/> </xs:restriction> </xs:simpleType>
Tipos complejos <xs:complexType> Son aquellos elementos XML que, adems de poder tener atributos, su contenido puede tener otros elementos y/o contenido textual. Sintaxis: <xs:complexType name="nombreDoTipoComplexo"> ... </xs:complexType> Declaracin de los atributos de un elemento En el caso de que un elemento tenga atributos, la declaracin de estos se realiza en el interior de la definicin del tipo complejo. Debido a que los atributos slo se pueden igualar a valores de tipo simple, su definicin se podr hacer de las siguientes maneras: <xs:complexType name="nombreTipo"> <xs:attribute name="nombreAtributo" type="tipoDoAtributo" [default="valorPorDefecto" | fixed="valorFijo"] [use="required"] /> </xs:complexType>
o bien: <xs:attribute name="nombreAtributo" [default="valorPorDefecto" | fixed="valorFijo"] [use="required"] > <xs:simpleType> <xs:restriction type="tipoSimple"> ... </xs:restriction> </xs:simpleType> </xs:attribute> El atributo use="required" obliga a introducir el atributo con su elemento, pues por defecto son opcionales (use="optional"). Ejemplo 1: <xs:complexType name="tipoPgina"> <xs:attribute name="numDeCopias" type="xs:positiveInteger" use="required"/> </xs:complexType>
Schema.docx
12
<xs:element name="pgina" type="tipoPgina"/> o bien: <xs:element name="pgina"> <xs:complexType> .. <xs:attribute name="numDeCopias" type="xs:positiveInteger" use="required"/> </xs:complexType> </xs:element> que permitira un documento XML con el siguiente elemento: <pgina numDeCopias="3"> ... </pgina> Exemplo 2: <xs:element name="cliente"> <xs:complexType> <xs:attribute name="idCliente" type="xs:integer"/> </xs:complexType> </xs:element> permitira un documento XML con el siguiente elemento: <cliente idCliente="255"/> Elementos con sub-elementos Un elemento puede contener a su vez otros elementos. Para especificar sus caractersticas podemos utilizar alguna de las siguientes estructuras: <xs:sequence>, <xs:all>, <xs:choice> y <xs:any>. (Aunque contenga un solo elemento hay que poner una de estas estructuras) o Secuencia ordenada: la estructura <xs:sequence> Todos los elementos que contenga la estructura tendrn que ir en el documento en el orden indicado. Ejemplo: Una persona con nombre, apellido1, apellido2 y correo (0 o varios) <xs:element name="persoa"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellido1" type="xs:string"/> <xs:element name="apellido2" type="xs:string"/> <xs:element name="correo" type="xs:string" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> o Secuencia desordenada: la estructura <xs:all> Similar al anterior pero donde todos los elementos que contenga la estructura tendrn que aparecer, aunque no importa el orden. A diferencia de la estructura anterior, los elementos deben aparecer como mximo una vez, es decir, el atributo minOccurs de los elementos slo puede estar a 0 o a 1 y maxOccurs slo puede estar a 1 (si se especifica).
Schema.docx
13
Ejemplo: Una persona con nombre, apellido1, apellido2 y correo (0 o 1 vez) y que aparezcan en cualquier orden. valores.xsd <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="persoa"> <xs:complexType> <xs:all> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellido1" type="xs:string"/> <xs:element name="apellido2" type="xs:string"/> <xs:element name="correo" type="xs:string" minOccurs="0" /> </xs:all> </xs:complexType> </xs:element> </xs:schema> valores.xml <?xml version="1.0" encoding="UTF-8"?> <persoa xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="valores.xsd"> <apellido2>Prez</apellido2> <nombre>Pepe</nombre> <apellido1>Lpez</apellido1> </persoa> o Eleccin: la estructura <xs:choice> Se elige slo uno de los elementos indicados dentro de la estructura. Ejemplo: <xs:element name="persoa"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellido1" type="xs:string"/> <xs:element name="apellido2" type="xs:string"/> <xs:choice> <xs:element name="NIF" type="xs:string"/> <xs:element name="NumTarxetaResidencia" type="xs:string"/> </xs:choice> </xs:sequence> </xs:complexType> </xs:element> Valores vlidos: <nombre>pepe</nombre> <apellido1>Lpez</apellido1> <apellido2>Prez</apellido2> <NumTarxetaResidencia>33333</NumTarxetaResidencia> <nombre>pepe</nombre> Schema.docx 14
<apellido1>Lpez</apellido1> <apellido2>Prez</apellido2> <NIF>33333</NIF> o Cualquier elemento: la estructura <xs:any> La estructura <xs:any> permite que el esquema acepte en ese lugar cualquier elemento y su contenido. Elementos con sub-elementos y texto Son aquellos que, en su contenido, permiten mezclar texto libre junto con otros elementos. Se declara especificando el atributo mixed="true" de la etiqueta <xs:complexType>. Ejemplo: Mostramos a continuacin parte de un documento XML y su correspondiente esquema: <mensaxeErro> A pxina <sitioWeb>www.larompiente.com</sitioWeb>xerou o erro nmero <numErro>404</numErro>:<descErro>Pxina 'estadoDoMar.html' non atopada</descErro>s <hora>23:12:45</hora> </mensaxeErro> <xs:element name="mensaxeErro"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="sitioWeb" type="xs:string"/> <xs:element name="numErro" type="xs:integer"/> <xs:element name="descErro" type="xs:string"/> <xs:element name="hora" type="xs:time"/> </xs:sequence> </xs:complexType> </xs:element> Contenido simple y contenido complejo <xs:simpleContent> <xs:complexContent> Dependiendo del contenido de un elemento de tipo complexo, podemos describirlos usando dos tipos de contenidos: simple y complejo. Adems nos sirve para crear nuevos tipos complejos derivando de tipos existentes, facilitando la reusabilidad. contenido simple (<xs:simpleContent>): texto y atributos, sin elementos. contenido complejo (<xs:complexContent [mixed=true]>): texto, elementos y atributos
Por defecto, si no se especifica el tipo de contenido en un tipo complejo (complexType), se asume contenido complejo (complexContent).
Schema.docx
15
En el interior del contenido (simple o complejo) indicaremos si queremos extender o restringir el tipo base. Para eso utilizaremos las siguientes etiquetas: <xs:restriction base="tipoBaseRestrinxido"> <xs:extension base="tipoBaseExtendido"> Ejemplo 1: Elemento no vaco con atributos. <distancia unidad="cm">75</distancia> (Nos llega un simpleContent.) Necesitara un esquema como el siguiente: <xs:element name="distancia" type="distanciaConUnidades"/> <xs:complexType name="distanciaConUnidades"> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="unidad" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> Ejemplo 2: <!-- Tipo de datos llamado peces, un string que slo puede tomar esos tres valores--> <!--simpleType: no tiene ni subelementos, ni atributos, slo restriction--> <xs:simpleType name="peces"> <xs:restriction base="xs:string"> <xs:enumeration value="robaliza"/> <xs:enumeration value="sargo"/> <xs:enumeration value="trucha"/> <xs:enumeration value="salmn"/> </xs:restriction> </xs:simpleType> <!-- Tipo de datos llamado pezCapturado: aadimos al tipo peces un atributo:peso tipo decimal obligatorio--> <!--complexType: tiene atributos --> <!--simpleContent: no tiene subelementos, tiene atributos --> <xs:complexType name="pezCapturado"> <xs:simpleContent> <xs:extension base="peces"> <xs:attribute name="peso" type="xs:decimal" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> <!-- Tipo de datos llamado capturasDeRo: son de tipo pezCapturado, pero slo pueden ser los valores trucha y salmn--> <xs:complexType name="capturasDeRo"> <xs:simpleContent> <xs:restriction base="pezCapturado" > <xs:enumeration value="trucha"/> <xs:enumeration value="salmn"/> </xs:restriction> </xs:simpleContent> </xs:complexType>
Schema.docx
16
Ejemplo 3: Creamos un tipo direccin con calle y poblacin. Creamos otro tipo direccionEspaa al que le aadimos codPostal y provincia. <xs:complexType name="direccion"> <xs:sequence> <xs:element name="calle" type="xs:string"/> <xs:element name="poblacion" type="xs:string"/> </xs:sequence> </xs:complexType>
<xs:complexType name="direccionEspaa"> <xs:complexContent> <xs:extension base="direccion"> <xs:sequence> <xs:element name="codigoPostal" type="xs:string"/> <xs:element name="provincia" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
<dir> <calle>mayor</calle> <poblacion>lugo</poblacion> </dir> <dir> <calle>mayor</calle> <poblacion>lugo</poblacion> <codigoPostal>15000</codigoPostal> <provincia>lugo</provincia> </dir>
Schema.docx
17
Para referenciar el grupo creado antes: <xs:group ref="nombreGrupo"/> Ejemplo: <!-- grupo: nombreCompleto formado por nombre y apellidos --> <xs:group name="nombreCompleto"> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/> </xs:sequence> </xs:group> <!-- grupo: direccion formado por calle, numero y piso --> <xs:group name="direccion"> <xs:sequence> <xs:element name="calle" type="xs:string"/> <xs:element name="numero" type="xs:integer"/> <xs:element name="piso" type="xs:string"/> </xs:sequence> </xs:group> <!-- tipo: tipoPersona formado por nombreCompleto(nombre direccin(calle, numero y piso) y provincia. --> <xs:complexType name="tipoPersona"> <xs:sequence> <xs:group ref="nombreCompleto"/> <xs:group ref="direccion"/> <xs:element name="provincia" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="persona" type="tipoPersona"/> Grupos de atributos <xs:attributeGroup> Permiten agrupar atributos con <xs:attributeGroup> para utilizarlos posteriormente en otros elementos. Sintaxis: Para crear el grupo: <xs: attributeGroup name="nombreGrupo" /> Para referenciar el grupo creado antes: <xs: attributeGroup ref="nombreGrupo"/> Ejemplo:
<xs:attributeGroup name="atributosPersona"> <xs:attribute name="nome" type="xs:string"/> <xs:attribute name="apelidos" type="xs:string"/> <xs:attribute name="dataNacemento" type="xs:date"/> </xs:attributeGroup> <xs:element name="persona"> <xs:complexType>
apellidos),
Schema.docx
18
Gua de referencia y sintaxis de las expresiones regulares Las expresiones regulares se utilizan para buscar, editar o manipular texto. La siguiente tabla muestra la sintaxis de las expresiones regulares.
Expresin
Capitulo\d Apndice\D Capitulo\s\d Apndice\s\w a *x a ?x a +x
Coincidencias
Capitulo0, Capitulo1, Capitulo2 .... ApndiceA, ApndiceB, ApndiceC ... Capitulo 0, Capitulo 1, Capitulo 2 .... Apndice A, Apndice B, Apndice C ... x, ax, aax, aaax .... ax, x ax, aax, aaax .... ax, bx, aax, abx, bax, bbx, aaax, aabx, abax, abbx, baax, babx, bbax, bbbx ... ax, bx, cx, dx, ex ax, bx, cx, dx, ex -x, ax, ex ax, ex, -x ax, Bx ... ax, Bx ... ax, Bx, 2x... 1x2abc, abc1x2, z3456abchooray .... abbx abbx, abbbx, abbbbx abbx, abbbx, abbbbx .... ababx
Significado
\d representa cualquier dgito, es decir 0, 1, 2, 3, 4 , 5, 6, 7, 8, 9 \D representa cualquier valor no dgito \s representa espacio en blanco, retorno de carro, nueva lnea o intro \w representa a cualquier carcter * indica que el carcter al que sigue puede aparecer cero, una, o ms veces ? indica que el carcter al que sigue puede aparecer como mucho una vez + indica que el carcter al que sigue debe aparecer al menos una vez (|) cualquier combinacin de los caracteres incluidos en el grupo [abcde] slo un carcter de la lista [a-e] slo un carcter en el intervalos de la a hasta la e [-ae] slo un carcter de la lista [ae-] slo un carcter de la lista [^0-9]cualquier carcter no-dgito \D cualquier carcter no-dgito . cualquier carcter .* caulquier carcter puede aparecer cero, una, o ms veces {n} el valor anterior se repite n veces {n,m} por lo menos n veces pero no mas de m veces {n,} por lo menos n veces (ab){n} el grupo ab aparece n veces
(ab){2}x
Ejemplos: Restringir el texto de un nmero de telfono con este aspecto 93 209-58-45 en un XML Schema. <xs:element name="numeroTelefono"> <xs:simpleType> <xs:restriction base="xsd:string"> <xs:pattern value="\d{2}\s\d{3}-\d{2}-\d{2}"/> </xs:restriction> </xs:simpleType> </xs:element>
Schema.docx
19