Definir un conjunto de reglas

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

Inicio >  Guía y referencia del usuario > DTD y esquemas XML > Reglas de esquema >

Definir un conjunto de reglas

Los conjuntos de reglas se pueden abrir y editar en el editor de reglas de esquema (ver imagen siguiente). En el editor puede crear, editar y eliminar reglas de esquemas en el archivo de conjunto de reglas de esquema. Para abrir un conjunto de reglas en el editor de reglas de esquema, siga estos pasos:

 

1.Seleccione el conjunto de reglas de la lista de conjuntos de reglas de la ventana Información.
2.Haga clic en el botón ContextMenuButton del conjunto de reglas.
3.En el menú contextual que aparece seleccione la opción Editar conjunto de reglas.

SchemaRuleEditorOview

A continuación aparece el cuadro de diálogo del editor de reglas de esquema, que se divide en dos paneles:

 

El panel "Reglas" (situado en la mitad superior del editor), donde puede añadir y eliminar reglas. Para anexar o insertar una regla nueva, haga clic en el botón correspondiente (Anexar o Insertar), situados en la esquina superior izquierda del panel. Para eliminar una regla, seleccione la regla que desea eliminar y haga clic en el botón Eliminar, situado en la esquina superior derecha del panel. Cada regla de este panel tiene un nombre, un mensaje descriptivo y un nivel de gravedad (si la regla no se cumple, el validador puede devolver un mensaje de error o de advertencia).
El panel "Regla" (situado en la mitad inferior del editor), donde aparecen los detalles de la regla seleccionada en el panel Reglas. En este panel se pueden editar los detalles de las reglas. Para más información, consulte el apartado Definir una regla que aparece a continuación.

 

Cuando termine de editar el archivo de conjunto de reglas, haga clic en Guardar para guardar las reglas en el archivo de conjunto de reglas.

 

Definir una regla

Seleccione la regla del panel superior "Reglas" que desea definir o editar. En el panel inferior "Regla" puede editar la definición de la regla. La imagen siguiente muestra una regla que se podría definir de la siguiente manera: Si un complexType es una extensión de un simpleType, entonces debe tener un elemento secundario de clase AttributeGroup.

SchemaRuleEditorDefinition

Condiciones de tipo "Validar" y condiciones de tipo "Filtro"

 

Cada regla tiene un conjunto de condiciones de tipo "Validar" y un conjunto de condiciones de tipo "Filtro" (ver la primera columna de la imagen anterior).
El conjunto de condiciones "Filtro" debe dar un valor de verdadero para que se puede evaluar la condición "Validar".
Cada conjunto de condiciones (de tipo "Validar" o de tipo "Filtro") está formado por grupos de condiciones. Cada grupo contiene como mínimo una condición. En la imagen anterior, el conjunto de condiciones de tipo "Validar" contiene un grupo de condiciones formado por una sola condición. Por su parte, el conjunto de condiciones de tipo "Filtro" contiene tres grupos de condiciones, cada uno con una sola condición. En la imagen siguiente, el conjunto de condiciones de tipo "Filtro" contiene tres grupos de condiciones: el primero tiene dos condiciones, el segundo tiene tres y el tercero solo una.

SchemaRuleEdCondGrps1

Para negar una condición, marque la casilla Not de la condición (situada a la izquierda de la condición).
Dentro de cada grupo de condiciones, los conectores lógicos and y or indican respectivamente si todas las condiciones del grupo o solo una deben dar un valor de verdadero para que el grupo entero dé un valor de verdadero. En la interfaz gráfica, estos operadores lógicos son los situados más a la derecha (en la tercera columna empezando por la izquierda).
Para negar un grupo de condiciones, marque la casilla Not del grupo de condición (situada a la izquierda del operador lógico del grupo de condiciones).
Los conectores lógicos and y or situados más a la izquierda (junto al borde del cuadro de diálogo) indican respectivamente si todos los grupos de condiciones del conjunto o solo un grupo deben dar un valor de verdadero para que el conjunto entero (el conjunto "Filtro" por ejemplo) dé un valor de verdadero.
Para cambiar los conectores lógicos seleccione la opción pertinente en el cuadro combinado situado más a la izquierda (el conector del grupo de condiciones). El valor de los conectores lógicos situados más a la derecha (los conectores de las condiciones del grupo de condiciones) recibirán el valor opuesto al del conector lógico situado más a la izquierda (el conector de todo el grupo de condiciones).
Para anexar o insertar un grupo de condiciones o una condición en relación a otro grupo o a otra condición, seleccione el grupo o la condición pertinente y haga clic en el botón Anexar o Insertar (en la esquina superior izquierda del panel). Aparece un menú contextual con dos opciones (ver imagen siguiente).

SchemaRuleEditorAppendInsert

 

Clases de condiciones

Hay tres tipos de condiciones (véase también la imagen que aparece más abajo):

 

Condición basada en la clase de componente (las condiciones de la lista desplegable que empiezan con la palabra "Componente". Ver imagen siguiente)
Condición basada en la clase de propiedad (valor de la propiedad)
Condición basada en la clase de componente y de propiedad (las condiciones de la lista cuyo nombre incluye las palabras "Propiedad" y "Componente")

SchemaRuleEditorSubConditionsKind

Para seleccionar el tipo de condición, haga clic en la punta de flecha de la columna Condición y seleccione una condición de la lista desplegable (ver imagen anterior). A continuación describimos los tres tipos de condiciones.

 

Condiciones basadas en la clase de componente

En las condiciones basadas en la clase de componente (las condiciones de la lista que empiezan con la palabra "Componente"), es obligatorio indicar la clase de componente en la columna adyacente Componente (ver imagen siguiente). El componente se selecciona en la lista desplegable de la columna Componente. Puesto que en las condiciones de este tipo no es necesario definir más campos (Propiedad, Comparador, Valor) el resto de los campos de la condición aparecen atenuados.

SchemaRuleEditorSubCondComp

En la imagen anterior la condición de tipo "Filtro" especifica que la regla sólo afecta a componentes de clase Element. Si además la condición de tipo "Validar" especifica que el componente debe tener un secundario de clase Notation, entonces la regla completa se podría enunciar de la manera siguiente: "Los componentes Element deben tener un secundario de clase Notation". Si en la condición de tipo "Validar" se marcase la casilla NOT, entonces la regla se podría enunciar así: "Los componentes Element no pueden tener un secundario de clase Notation".

 

Condiciones basadas en la clase de propiedad

La condición basada en la clase de propiedad es la condición ValorDePropiedad (ver imagen siguiente). Este tipo de condición especifica la naturaleza de una propiedad. Por tanto, es obligatorio rellenar las columnas Propiedad y Comparador y, de forma opcional, la columna Valor. No es necesario rellenar la columna Componente, que aparece atenuada. La lista desplegable de la columna Propiedad no sólo incluye atributos XML (como default y maxOccurs) sino también propiedades lógicas de los componentes (como derivedBy).

SchemaRuleEditorSubCondProp

La imagen anterior muestra una regla en la que la propiedad model tiene un valor igual a All y está negada (porque está marcada la casilla Not). En combinación con la condición de filtro del componente de clase Model group, esta regla se podría resumir en este enunciado: "El esquema XML no puede contener elementos xsd:all".

 

Nota:Es importante tener en cuenta estos aspectos:

 

Cuando use el comparador EsQNameIgualA, el valor para este comparador se debe escribir de esta manera: {URI}nombreLocal. Un ejemplo sería: {http://www.w3.org/2001/XMLSchema}NOTATION
La propiedad default puede estar presente y estar vacía (<element name default=""/>) o puede faltar (<element name/>).

 

Condiciones basadas en la clase de componente y de propiedad

Las condiciones que combinan la clase de componente y de propiedad son:

 

ComponenteTieneSecundarioDeClaseConValorDePropiedad: especifica la clase de componente de un elemento secundario y el valor de la propiedad.
PropiedadResuelveComponenteDeClase: se especifica una propiedad que se resuelve como una clase de componente. Las columnas Comparador y Valor se dejan vacías.

 

Negar una condición

Para negar una condición basta con marcar la casilla Not situada justo a la izquierda de la condición (es decir, la casilla Not que está más a la derecha). Para negar un grupo de condiciones es necesario marcar la casilla Not situada a la izquierda del conector lógico de las condiciones del grupo de condiciones.

 


© 2019 Altova GmbH