Aserciones

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 > Atributos, aserciones y restricciones de identidad >

Aserciones

Las aserciones descritas en este apartado son aserciones de tipos complejos. Dicha aserción se define en un elemento xs:assert y sirve de restricción de validez del tipo complejo. (El otro tipo de aserción es una aserción de un tipo simple, que se define en un elemento xs:assertion y se crea y edita en el ayudante de entrada Facetas de un tipo simple.)

 

En la vista Esquema las aserciones de tipos complejos se pueden crear y editar de varias formas:

 

En la vista general del esquema: en la pestaña Aserciones del panel Atributos/Aserciones/Restricciones de identidad (AARID) (imagen siguiente).

AssertAAIC01

En la vista del modelo de contenido: las aserciones se pueden editar en la pestaña Aserciones (imagen anterior) o en el diagrama del modelo (imagen siguiente). Para elegir la opción que más le convenga, haga clic en el icono Mostrar aserciones en diagrama de la barra de herramientas Diseño de esquemas. En el diagrama del modelo, seleccione el recuadro aserciones del tipo complejo o del elemento de contenido complejo. Después escriba o edite la definición de la aserción en el ayudante de entrada Detalles.

AssertEHDetails01

icAssertionsToggle

Mostrar aserciones en diagrama: disponible en la vista del modelo de contenido solamente. Habilita/deshabilita la representación de las aserciones en el diagrama, en lugar de en el panel AARID.

 

Nota:los elementos assert son una característica de la especificación XSD 1.1. Esto significa que las funciones de edición de aserciones solamente están disponibles en el modo XSD 1.1.

 

Ámbito de la aserción

La expresión XPath utilizada para definir la restricción de la aserción debe estar dentro del ámbito del tipo complejo en el que se define el elemento assert. De modo que, si la expresión XPath necesita acceder a un nodo, el elemento assert debe definirse en un nodo antecesor de dicho nodo.

 

Añadir y eliminar aserciones

Un tipo complejo puede tener varias aserciones. La expresión XPath de cada aserción debe dar como resultado el valor booleano true para que el elemento del documento de instancia sea válido. Siga estos pasos para añadir una aserción a un tipo complejo:

 

En la vista general del esquema: seleccione el tipo complejo. En la pestaña Aserciones del panel AARID (primera imagen de este subapartado), haga clic en el icono Agregar o Insertar de la parte superior izquierda. Puede agregar varias aserciones si quiere. Para eliminar una aserción, selecciónela y haga clic en el icono Eliminar de la parte superior derecha.
En la vista del modelo de contenido (imagen anterior): haga clic con el botón derecho en el tipo complejo y seleccione Agregar secundario | Aserción. También puede hacer clic con el botón derecho en una de las aserciones ya existentes del diagrama del tipo complejo y seleccionar Anexar | Aserción o Insertar | Aserción. Puede añadir varias aserciones si quiere. Para eliminar una aserción, selecciónela y pulse la tecla Suprimir.

 

Definir la expresión XPath de la aserción

La expresión XPath de una aserción de tipo complejo define la restricción de validez que se debe aplicar al elemento de tipo complejo en el documento de instancia. Por ejemplo, en las imágenes anteriores, la aserción está en el elemento de tipo complejo team y la expresión XPath de la aserción es: @region="US". En el documento de esquema XML la aserción aparece así:

 

 <xs:assert test='@region="US"'/>

 

La aserción indica que, en el documento de instancia, el elemento team debe tener un atributo region cuyo valor es US. Si no es así, el documento no es válido.

 

Tenga en cuenta que:

 

Las expresiones XPath deben estar escritas en XPath 2.0
Los nodos probados en la expresión XPath deben estar dentro del ámbito de la aserción (véase más arriba)
Si una expresión no da como resultado el valor booleano true/false, el valor devuelto se convierte en un valor booleano. Las secuencias no vacías se convierten en true y las secuencias vacías se convierten en false.
Si la expresión tiene un error de sintaxis, la expresión aparece en color rojo. Los errores de contexto no se señalizan. Por ejemplo, si la expresión XPath prueba un atributo y el atributo no está definido en el esquema, no se emite ningún error.

 

El mensaje de la aserción

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.

 

Uso del atributo xpathDefaultNamespace

El espacio de nombres predeterminado declarado en el documento de esquema es el espacio de nombres predeterminado del documento de esquema. Afecta a los nombres de elemento sin prefijo del documento pero no a los nombres de elemento sin prefijo de las expresiones XPath del documento de esquema.

 

El atributo xpathDefaultNamespace es una característica nueva de la especificación XSD 1.1 y es el mecanismo utilizado para especificar el espacio de nombres al que pertenecen los nombres de elemento sin prefijo de las expresiones XPath.

 

El ámbito de los atributos xpathDefaultNamespace son los elementos del esquema XML en los que se decararon. El atributo xpathDefaultNamespace puede aparecer en estos elementos de XML Schema 1.1:

 

xs:schema
xs:assert y xs:assertion
xs:alternative
xs:selector y xs:field (en restricciones de identidad)

 

El atributo xpathDefaultNamespace de xs:schema se configura (en el modo XSD 1.1) en el cuadro de diálogo "Configuración del esquema" (Diseño de esquemas | Configuración del esquema). El atributo xpathDefaultNamespace de los demás elementos se configura en el ayudante de entrada Detalles de cada elemento (imagen siguiente).

AssertEHDetails02XPDNS

Al declararse el espacio de nombres predeterminado de la XPath en xs:schema, se declara el espacio de nombres predeterminado de la XPath para el ámbito de todo el esquema. Puede invalidar esta declaración en los elementos en los que se permite el atributo xpathDefaultNamespace (véase la lista anterior).

 

En lugar de incluir un espacio de nombres real, el atributo xpathDefaultNamespace incluye una de estas tres palabras clave:

 

##targetNamespace: el espacio de nombres predeterminado de la XPath será el mismo que el espacio de nombres de destino del esquema
##defaultNamespace: el espacio de nombres predeterminado de la XPath será el mismo que el espacio de nombres predeterminado del esquema
##local: sin espacio de nombres predeterminado de XPath

 

Si en el documento no se declara ningún espacio de nombres predeterminado de XPath, los elementos sin prefijo de las expresiones XPath no estarán en ningún espacio de nombres.

 

Nota:la declaración de espacio de nombres predeterminado de XPath no afecta a los atributos.

 

Para las expresiones XPath de las aserciones también puede especificar el espacio de nombres predeterminado de la XPath en la definición de la aserción. En la pestaña Aserciones del panel AARID (imagen siguiente) seleccione una opción de la lista desplegable del campo XPathDefaultNS.

AssertAAIC02XPDNS

El espacio de nombres seleccionado estará en el ámbito de la aserción.

 


© 2019 Altova GmbH