Usar condiciones

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

Inicio >  Tutorial de introducción rápida >

Usar condiciones

Si abre el archivo QuickStart.xml, observará que cada elemento newsitem tiene un elemento secundario llamado metainfo, que a su vez contiene elementos secundarios llamados relevance. Cada nodo relevance contiene un encabezado bajo el que se indexa la relevancia de los elementos newsitem. Además hay un nodo /presswatch/selection/byrelevance que contiene uno de los encabezados de relevancia y determina qué elemento newsitem aparece en la vista. Por ejemplo, si el contenido del nodo byrelevance es NanoPower, entonces aparecen todos los elementos newsitem que tienen un nodo relevance cuyo contenido sea NanoPower. Puede usar una condición para probar cuál es el contenido del nodo relevance (buscando el nodo) y aportar el procesamiento adecuado (opción de presentación) en la plantilla condicional.

 

En este apartado del tutorial aprenderá a crear una plantilla condicional que muestre los elementos newsitem cuyo elemento relevance coincida con el contenido del nodo byrelevance.

 

El proceso sería el siguiente:

 

1.Se crea un cuadro combinado que muestra el valor del nodo byrelevance. Los valores de la lista desplegable del cuadro combinado se obtienen con ayuda de una expresión XPath, que compila dinámicamente los valores del nodo relevance.
2.Se inserta una condición alrededor del elemento newsitem. Esta condición selecciona todos los elementos newsitem que tengan un elemento relevance cuyo contenido coincida con el contenido del nodo byrelevance. El contenido rodeado por la rama de una condición se conoce como plantilla condicional.
3.Dentro de la plantilla condicional, se enumeran todos los nodos relevance del elemento newsitem.
4.Se resalta el elemento relevance (en la lista de elementos relevance) que coincide con el elemento byrelevance. Para ello se crea una condición que permita seleccionar dichos elementos relevance y después se aplica formato especial a la plantilla condicional.
5.En la condición para el elemento newsitem, se inserta una rama que selecciona todos los elementos newsitem.

 

Primer paso: crear el cuadro combinado para seleccionar los diferentes valores del nodo

En el documento XML el nodo que contiene las opciones que el usuario puede seleccionar es el nodo /presswatch/selection/byrelevance. Cree un cuadro combinado a partir de este nodo. Esto se hace así:

 

1.Inserte el texto estático "Select by relevance: " (seleccionar por relevancia) justo después del segundo cálculo automático (imagen siguiente).

 

TutQS_DesView_ComboBoxLoc

 

2.Arrastre el nodo byrelevance desde la ventana Estructura del esquema (imagen siguiente) y suéltelo justo después del texto estático que escribió en el paso anterior.

 

TutQS_SchemaSrc_ByRelevance

 

3.En el menú contextual que aparece seleccione el comando Crear cuadro combinado. Se abre el cuadro de diálogo "Editar el cuadro combinado":

 

TutQS_EditComboBox_ByRelevance

 

4.Seleccione el botón de opción Utilizar expresión XPath y después la opción Utilizar la misma XPath para los valores XML y las entradas visibles. En el cuadro de edición XPath para los valores XML y entradas visibles escriba esta expresión XPath: distinct-values(//relevance). Esta expresión XPath selecciona los valores únicos de todos los elementos relevance del documento XML. No olvide que, aunque en el cuadro combinado HTML aparecerán todos los valores de los nodos relevance, cuando seleccione un valor en la vista previa HTML no se producirá cambio alguno en el contenido del nodo en el documento XML. El documento HTML es el resultado que se obtiene al transformar el documento XML pero no acepta entrada de datos. El cuadro combinado se utiliza para mostrar la variedad de opciones a la hora de presentar contenidos.
5.Para terminar haga clic en Aceptar. El cuadro combinado se inserta y el diseño tiene este aspecto:

 

TutQS_DesView_ComboBoxByRelevance

 

6.Cambie a la vista previa HTML. Haga clic en la flecha del cuadro combinado y observe que la lista desplegable contiene los valores únicos de todos los nodos relevance (imagen siguiente). Compare la lista con el documento XML. Se trata de una lista dinámica que crecerá a medida que se añadan nuevos valores a los elementos relevance del documento XML.

 

TutQS_AuthView_ComboBoxByRel

 

Segundo paso: insertar una condición para mostrar las noticias de la relevancia seleccionada

La condición selecciona los elementos newsitem cuyo elemento metainfo/relevance tenga el mismo valor que el elemento /presswatch/selection/byrelevance. Siga estos pasos para insertar la condición:

 

1.Seleccione el contenido de la parte newsitem del diseño que debe formar parte de la condición (imagen siguiente).

 

TutQS_DesView_Condition_selection

 

2.Seleccione el comando de menú (o el comando del menú contextual) Incluir en | Condición. Se abre el cuadro de diálogo Editar expresión XPath.
3.Introduzca la expresión metainfo/relevance=/presswatch/selection/byrelevance. Esta expresión devuelve el resultado true si el valor del descendiente metainfo/relevance del elemento newsitem actual coincide con el valor del elemento /presswatch/selection/byrelevance (el valor seleccionado por el usuario).
4.Haga clic en Aceptar. La condición se crea alrededor del contenido del elemento newsitem (imagen siguiente).

 

TutQS_DesView_Condition

 

Observe que en esta condición solamente hay una rama. El documento de salida incluirá solamente las noticias (elementos newsitem) para las cuales la condición obtenga el resultado true. Por tanto, en este caso la condición funciona como un filtro. Más adelante aprenderá a añadir otra rama a la condición.

 

Insertar una lista a partir del nodo relevance

Para mostrar los nodos relevance de cada elemento newsitem, siga esta instrucciones:

 

1.Cree un poco de espacio vertical debajo del componente div que rodea al elemento source y también dentro de la etiqueta final de la plantilla condicional.
2.Escriba el texto estático "Relevance:" (Relevancia) y cree a su alrededor un formato predefinido div (resalte el texto estático e inserte el formato predefinido).
3.Arrastre el elemento relevance desde el nodo Elementos raíz de la ventana Estructura del esuqema y suéltelo en el diseño, justo debajo del texto estático Relevance:.
4.En el menú contextual que aparece al soltar el nodo en el diseño seleccione la opción Numeración y viñetas para crear una lista a partir del nodo. Después seleccione el formato de lista que desea usar.
5.Aplique el formato y el estilo que prefiera al contenido de la lista. Cuando termine, el diseño debería tener este aspecto:

 

TutQS_DesView_RelevanceList

 

Ahora, en la vista previa HTML, compruebe qué ocurre si selecciona diferentes valores de relevance Para ello: (i) cambie el valor del nodo byrelevance en el documento XML; (ii) guarde el documento XML (iii) y vuelva a cargar el diseño SPS en StyleVision.

 

Poner el elemento relevance seleccionado en negrita

Algunos elementos newsitem tienen más de un elemento relevance. En estos casos podemos optimizar el diseño para resaltar el elemento relevance que coincide con la opción seleccionada por el usuario.

 

1.Seleccione el elemento relevance en la vista Diseño.
2.Inserte una condición formada por la expresión XPath .=/presswatch/selection/byrelevance. Esto crea una condición con una sola rama (imagen siguiente) que selecciona los elementos relevance que coinciden con el elemento byrelevance.

 

TutQS_DesView_ConditionRel1

 

3.Seleccione el marcador de posición (contenido) y asígnele el formato local bold (en la ventana Estilos, en el grupo de propiedades fuente) y el formato local background-color:yellow (en el grupo color).
4.Haga clic con el botón derecho en la condición y seleccione Copiar rama en el menú contextual.
5.Aparece el cuadro de diálogo Editar expresión XPath. Marque la casilla Otherwise que aparece en la esquina superior derecha del cuadro de diálogo.
6.Haga clic en Aceptar y se crea la nueva rama (Otherwise). Esta rama de la condición selecciona todos los elementos relevance que no coinciden con el elemento byrelevance.

 

TutQS_DesView_ConditionRelOtherw

 

7.Observe que el contenido de la rama Otherwise es una copia de la primera rama, pero el marcador de posición (contenido) aparece en negrita y el color de fondo es amarillo. Quite este formato del marcador de posición (contenido).

 

Llegados a este punto, el diseño contiene una condición con dos ramas (cada una con su plantilla condicional) que lleva a cabo esta prueba en todos los elementos relevance del documento XML:

 

Si el contenido del elemento relevance es idéntico al contenido del elemento /presswatch/selection/byrelevance, entonces el contenido de relevance aparece en negrita y con color de fondo amarillo.
De lo contrario (otherwise), el contenido de relevance aparece con el formato normal.

 

Pruebe un poco estas condiciones en la


© 2019 Altova GmbH