Facetas

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Guía y referencia del usuario > Vistas de edición > Vista Esquema > Ayudantes de entrada de la vista Esquema >

Facetas

Para crear un tipo simple (con nombre o anónimo) se restringe el tipo base del tipo simple (que es un tipo simple ya existente). Dicha restricción se lleva a cabo añadiendo facetas para restringir los valores del tipo base. El ayudante de entrada Facetas de la vista Esquema permite editar las facetas de un tipo simple de forma gráfica y sencilla. Por cada tipo de faceta disponible el ayudante de entrada incluye una pestaña diferente:

 

Pestaña

Facetas disponibles

Facetas

minInclusive, maxInclusive, minExclusive, maxExclusive, length, minLength, maxLength, totalDigits, fractionDigits, whiteSpace, explicitTimezone

Patrones

pattern

Enumeraciones

enumeration

Aserciones

assertion

Muestras

altova:exampleValues es una anotación, no una faceta. Esta anotación se usa para generar valores de muestra en el documento XML de instancia que XMLSpy genera a partir del esquema XML.

 

A continuación describimos todas estas pestañas.

 

Cómo seleccionar el tipo simple en el diseño

Puede seleccionar el tipo simple (con nombre o anónimo) en dos entornos diferentes:

 

En la vista general del esquema (bien en la lista de componentes globales, o bien en la pestaña Atributos del panel inferior) o
En la vista del modelo de contenido (bien en el diagrama, o bien en la pestaña Atributos del panel inferior)

 

Cuando seleccione un tipo simple en el diseño (en uno de los dos entornos mencionados anteriormente), las facetas pertinentes se habilitan en el ayudante de entrada Facetas y se pueden editar.

 

Pestaña Facetas

En la pestaña Facetas solamente aparecen las facetas apropiadas para el tipo seleccionado en el diseño. Por ejemplo, si desea restringir el tipo xs:string, las facetas como totalDigits no aparecen en el ayudante de entrada porque no se le pueden aplicar al tipo seleccionado.

 

Las cuatro facetas de límite (minInclusive, maxInclusive, minExclusive, maxExclusive) solamente se pueden aplicar a tipos numéricos y de fecha/hora y a tipos derivados de ellos.
Las tres facetas de longitud (length, minLength, maxLength) solamente se pueden aplicar a tipos basados en cadenas, a los tipos binarios y a anyURI.
La faceta totalDigits se puede aplicar a xs:decimal y a tipos enteros y a los tipos derivados de ellos. La faceta fractionDigits solamente se puede aplicar a xs:decimal.

EHFacetsFacetsEP

Para introducir un valor, seleccione un valor de la lista desplegable del cuadro combinado (si lo hay) o haga doble clic en el campo del valor y escriba el valor nuevo. Si introduce un valor no válido, los conflictos resultantes se señalan en color rojo. Los valores válidos aparecen en azul. Por ejemplo, no se pueden usar al mismo tiempo las facetas minInclusive y maxInclusive. Por eso, si escribe un valor en estas dos facetas, los valores aparecen en rojo.

 

Para especificar una faceta fija (dándole a la faceta un valor de atributo fixed="true"), haga clic en el símbolo en forma de candado que aparece a la derecha de la faceta para cerrar el candado. En la imagen anterior, por ejemplo, la faceta totalDigits se configuró como faceta fija. Puede haber más de una faceta fija. Para revertir la faceta a un estado no fijo, haga clic otra vez en el símbolo en forma de candado.

 

Pestaña Patrones

En la pestaña Patrones (imagen siguiente) puede añadir facetas pattern a una restricción. El patrón (de una faceta pattern) se especifica con una expresión regular. El patrón de la imagen siguiente, por ejemplo, especifica el patrón de las direcciones de correo electrónico.

EHFacetsPatternsEP

Si se especifican varias facetas pattern, entonces el valor de la instancia XML debe coincidir con uno de ellos. Por ejemplo, si creamos un patrón para restringir los códigos postales, el patrón podría tener dos facetas pattern, una para los códigos postales de EE UU y otra para los códigos postales europeos. El valor de la instancia XML debe coincidir con uno de estos dos patrones. De lo contrario el valor no es válido.

 

Para añadir una faceta pattern haga clic en el icono Anexar o Insertar de la esquina superior izquierda y escriba una expresión regular que defina el patrón. Para eliminar una faceta pattern, selecciónela y haga clic en el icono Eliminar de la esquina superior derecha.

 

Pestaña Enumeraciones

En la pestaña Enumeraciones (imagen siguiente) puede añadir facetas enumeration a una restricción. Cada faceta enumeration especifica un valor válido para el tipo. Un grupo de facetas enumeration especifica un rango de valores permitidos. En la imagen siguiente, por ejemplo, las facetas enumeration especifican el rango permitido de valores para la restricción.

EHFacetsEnumerationsEP

Para añadir una faceta enumeration haga clic en el icono Anexar o Insertar de la esquina superior izquierda y escriba su valor. Para eliminar una faceta enumeration, selecciónela y haga clic en el icono Eliminar de la esquina superior derecha.

 

Pestaña Aserciones

Las aserciones son una característica de la especificación XSD 1.1. Esto significa que la pestaña Aserciones se habilita solamente en el modo XSD 1.1. Las facetas de aserción que se definen en la pestaña Aserciones del ayudante de entrada Facetas son aserciones para tipos simples (en lugar de aserciones para tipos complejos, que se definen y editan en la vista general del esquema o en la vista del modelo de contenido, no en el ayudante de entrada Facetas).

 

Cuando seleccione un tipo simple en el diseño (un elemento o atributo de contenido simple), puede asignarle una aserción haciendo clic en la pestaña Aserciones (imagen siguiente) y después en el icono Anexar o Insertar de la barra superior. Aparece una fila donde puede escribir la expresión XPath 2.0 que se usará para definir el elemento assertion. Para que la expresión XPath conserve el valor del tipo simple es necesario usar una variable especial llamada $value. (Recuerde que, al no haber descendientes con los que realizar pruebas sino solamente un valor, el paso normal self::node() (o la abreviatura "." de este paso) no se puede usar en la expresión XPath.)

 

En la imagen siguiente, por ejemplo, la expresión XPath string-length($value) = 6 prueba si el valor del tipo simple tiene seis caracteres. Si tiene seis caracteres, el elemento o atributo del documento de instancia es válido de acuerdo con la aserción.

EHFacetsAssertionsEP

Nota:si hay un error sintáctico, la expresión XPath se vuelve de color rojo. No obstante, recuerde que el tipo de datos se establece en tiempo de ejecución y, por tanto, los errores de tipo no se detectan mientras se teclea la expresión XPath. Por ello debe prestar atención a la hora de construir los tipos. Para ver un ejemplo de construcción de tipo, consulte la tercera expresión XPath de la imagen anterior, que convierte un valor de cadena (siempre que la aserción esté definida en un tipo simple xs:string) en un número antes de hacer una comparación numérica.

 

En un tipo simple puede especificar varias aserciones, igual que en la imagen anterior. Si usa varias aserciones, el elemento o atributo del documento de instancia debe cumplir con todas ellas. De lo contrario, el elemento o atributo no es válido. Las aserciones de la imagen anterior especifican que el valor del documento de instancia debe ser una cadena de seis caracteres que empiece por los caracteres EU y cuyos cuatro últimos caracteres sean caracteres numéricos con un valor comprendido entre 0000 y 4999. Para editar sus detalles, haga clic con el botón derecho en la aserción en el ayudante de entrada Facetas y después elija Detalles... en el menú contextual. Esto abre la ventana modal "Detalles de la aserción" (imagen siguiente).

AssertionMessageXSD

Lo más útil es aportar una explicación de la aserción junto con su definición, para que en caso de que la aserción no se cumpla cuando se valide el documento de instancia XML, la aplicación pueda emitir el mensaje adecuado. Como la especificación XML Schema no prevé ese tipo de mensajes, XMLSpy permite suministrar un mensaje en el espacio de nombres xml-schema-extensions de Altova http://www.altova.com/es/xml-schema-extensions (o en cualquier otro espacio de nombres) junto con la definición de la aserción y usarla en la validación del documento XML de instancia. Por ejemplo:

 

<xs:assert test="count(//MiNodo) ge 1altova:message="Se necesita un elemento MiNodo como mínimo"/> o

<xs:assertion test="count(//MiNodo) ge 1altova:message="Se necesita un elemento MiNodo como mínimo"/>

 

Si la restricción especificada por la aserción no se cumple, además del mensaje de error de validación el motor de validación de XMLSpy emitirá un mensaje sobre la aserción a modo de sugerencia. El validador informará del valor de un atributo assert/@message o assertion/@message independientemente del espacio de nombres en el que esté el atributo message. No obstante, recuerde que en la vista Esquema solamente podrá editar atributos message que estén en el espacio de nombres xml-schema-extensions de Altova. Para editar atributos message de otros espacios de nombres debe usar la vista Texto.

 

 

Para más información consulte el apartado Mensajes de aserción.

 

Nota:si puede, siempre es recomendable usar otras facetas en lugar de aserciones. Por ejemplo, la restricción especificada por la primera aserción de la imagen anterior se podría especificar con la faceta length (en la pestaña Facetas).

 

Pestaña Muestras

En la pestaña Muestras (imagen siguiente) puede especificar valores de muestra para generar un archivo XML a partir del esquema XML (con el comando de menú DTD/Esquema | Generar archivo XML de muestra). Si uno de los valores de muestra introducidos no es válido, el valor aparece en naranja. En la imagen siguiente, por ejemplo, el primer valor no es válido porque no coincide con la faceta pattern definida para las direcciones de correo eletrónico (véase la descripción de la pestaña Patrones más arriba).

EHFacetsSamplesEP

Los valores de muestra se colocan en un elemento de anotación altova:example que está en el espacio de nombres http://www.altova.com/es/xml-schema-extensions. Añada una anotación altova:ejemplo haciendo clic en el icono Anexar o Insertar de la esquina superior izquierda y escriba el valor de altova:ejemplo. Para eliminar una anotación altova:ejemplo, selecciónela y haga clic en el icono Eliminar de la esquina superior derecha.

 


© 2019 Altova GmbH