Facetas
Para crear un tipo simple nuevo (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. En la vista Esquema, el ayudante de entrada Facetas (imágenes siguientes) permite editar de forma gráfica y sencilla las facetas de un tipo simple. Por cada tipo de faceta disponible el ayudante de entrada incluye una pestaña diferente:
Pestaña | Facetas disponibles |
minInclusive, maxInclusive, minExclusive, maxExclusive, length, minLength, maxLength, totalDigits, fractionDigits, whiteSpace, explicitTimezone | |
pattern | |
enumeration | |
assertion | |
altova:exampleValues es una anotación no una faceta. Esta anotación se utiliza para generar valores de muestra en el documento XML de instancia generado por XMLSpy 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 de diseño diferentes:
•En la Vista general del esquema (ya sea en la lista de componentes globales o en la pestaña Atributos debajo de la lista de componentes globales), 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, solo se mostrarán las facetas que corresponden al tipo seleccionado en el diseño. Por ejemplo, si se restringe el tipo xs:string, no se mostrarán facetas no aplicables como totalDigits.
•Las cuatro facetas de límite (minInclusive, maxInclusive, minExclusive, maxExclusive) solo se pueden aplicar a los tipos numéricos y de fecha/hora, así como a los tipos derivados de estos.
•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 solo se puede aplicar a xs:decimal.

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, una faceta minInclusive y una faceta minExclusive no pueden coexistir. Por lo tanto, si se introducen valores para ambas facetas, ambos valores se mostrarán 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 una o varias 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.

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.
Añada una faceta pattern haciendo clic en el icono Anexar o Insertar situado en la parte superior izquierda y, a continuación, introduzca una expresión regular para definir el patrón necesario. Para eliminar una faceta pattern, selecciónela y haga clic en el icono Eliminar de la parte superior derecha.
Pestaña Enumeraciones
En la pestaña Enumeraciones (imagen siguiente), puede añadir una o varias 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.

Añada una faceta enumeration haciendo clic en el icono Anexar o Insertar situado en la parte superior izquierda y, a continuación, introduzca el valor de enumeration. Para eliminar una faceta enumeration, selecciónela y haga clic en el icono Eliminar de la parte 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 solamente está disponibles en el modo XSD 1.1. Las facetas de aserción definidas en la pestaña Aserciones del ayudante de entrada Facetas son aserciones para tipos simples, a diferencia de las aserciones para tipos complejos (que se pueden definir y editar en la Vista general del esquema o en la vista Modelo de contenido, no en el ayudante de entrada Facetas).
Cuando se selecciona un tipo simple (elemento o atributo de contenido simple) en el diseño, se puede especificar una aserción para él cambiando a la pestaña Aserciones (imagen siguiente), haciendo clic en el icono Anexar o Insertar situado en la parte superior izquierda y, a continuación, introduciendo la expresión XPath 2.0 que se utilizará para definir la aserción. 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, en la expresión XPath no se puede usar el paso de ruta normal self::node() (ni la abreviatura "." de este paso).
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 el elemento o atributo del documento de instancia tiene seis caracteres, entonces es válido según la aserción.

Nota: Los errores de sintaxis de la expresión XPath se marcarán con el color rojo. Sin embargo, dado que el tipo de datos se determina en tiempo de ejecución, los errores de tipo no se señalarán al introducir la expresión XPath. Preste atención a la hora de construir los tipos. Como ejemplo de construcción de tipos, vea la tercera expresión XPath de la imagen anterior, que convierte un valor de cadena (suponiendo que la aserción se define en un tipo simple xs:string) en un número antes de realizar una comparación numérica.
En un tipo simple puede especificar varias aserciones, igual que en la imagen anterior. Si se especifican varias aserciones en un tipo simple, todas ellas deben cumplirse para que el elemento o atributo del documento de instancia sea válido. Las aserciones de la imagen anterior especifican que el valor del documento de instancia debe ser una cadena de seis caracteres que comience por EU y tenga caracteres numéricos con un valor numérico de 0000 a 4999 como últimos cuatro caracteres. Para editar los detalles de una aserción, haga clic con el botón derecho en la aserción en el ayudante de entrada Facetas y luego haga clic en Detalles en el menú contextual. Esto abre la ventana Detalles de la aserción (imagen siguiente).

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 Altovahttps://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 1" altova:message="Se necesita un elemento MiNodo como mínimo"/> o
<xs:assertion test="count(//MiNodo) ge 1" altova: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: Siempre que sea posible, se recomienda usar otras facetas en lugar de las aserciones. Por ejemplo, la restricción especificada por la primera afirmación en la imagen anterior se especificaría mejor mediante la faceta length (en la pestaña Facetas).
Pestaña Muestras
En la pestaña Muestras (imagen siguiente), puede especificar valores de muestra que se pueden utilizar al generar un archivo XML a partir del esquema XML (con el comando de menú DTD/Esquema | Generar archivo XML de muestra). Si un valor de muestra no es válido, se muestra una advertencia y el valor de muestra se marca en color naranja. En la imagen siguiente, el primer valor no es válido porque no coincide con la faceta pattern especificada para correos electrónicos (ver pestaña Patrones más arriba).

Nota: Haga clic en el icono
(Mostrar advertencias de validación) de la barra de herramientas para activar la visualización de advertencias sobre valores de muestra no válidos. Un valor de muestra no válido no invalida el archivo XSD si el archivo es válido en otros aspectos.
Los valores de muestra se colocan en un elemento de anotación altova:example que se encuentra en el espacio de nombres https://www.altova.com/es/xml-schema-extensions. Añada una anotación altova:example haciendo clic en el icono Anexar o Insertar situado en la parte superior izquierda y, a continuación, introduzca el valor altova:example. Para eliminar una anotación altova:example, selecciónela y haga clic en el icono Eliminar de la parte superior derecha.