Altova StyleVision 2023 Enterprise Edition

En StyleVision puede usar expresiones XPath para asignar estilos a los componentes del diseño SPS. Esto permite tomar los valores de las propiedades de estilo de los datos XML o de la expresión XPath misma. Además, gracias a la función doc()de XPath 2.0/3.0, puede apuntar también a los nodos de todos los documentos XML a los que tiene acceso. Gracias a esta característica de StyleVision no solo puede recuperar definiciones de estilo de los datos XML. También puede elegir estilos diferentes dependiendo de si se cumple o no una condición basada en la estructura o en el contenido de los datos XML. Por ejemplo, con la instrucción if...else de XPath 2.0/3.0, puede seleccionar dos colores de fondo distintos dependiendo de la posición de un elemento en la secuencia. Así, cuando estos elementos se presenten como filas de una tabla, las filas impares se pueden presentar con un color de fondo y las filas pares con otro (imagen siguiente). Además, dependiendo del contenido del nodo puede variar la presentación de los datos.

 

Propiedades de estilo compatibles con expresiones XPath

Puede introducir expresiones XPath para estas propiedades de estilo:

 

Todas las propiedades que aparecen en la ventana Estilos.

Los grupos de propiedades generales, evento y HTML de la ventana Propiedades.

 

Modo estático o dinámico (XPath) para los valores de las propiedades de estilo

Las propiedades que admiten expresiones XPath tienen dos modos:

 

Modo estático: el valor de la propiedad se escribe directamente en el campo Valor de la ventana. Por ejemplo, para el color de fondo de un componente de diseño, puede introducir el valor red en la ventana directamente.

Modo dinámico (o modo XPath): el valor de la propiedad se calcula con una expresión XPath. La expresión se evalúa en tiempo de ejecución y el resultado se introduce como valor de la propiedad. Por ejemplo, para el color de fondo de un componente de diseño, puede introducir esta expresión XPath: /root/colors/color1. En tiempo de ejecución se recupera el contenido del nodo /root/colors/color1 y se introduce como valor de la propiedad background-color.

 

Cambiar entre el modo estático y el modo dinámico (XPath)

El modo estático es el modo predeterminado de las propiedades compatibles con expresiones XPath. Para cambiar al modo dinámico, seleccione la propiedad y haga clic en el icono XPath de la barra de herramientas de la ventana (imagen siguiente).

 

EH_Styles_ViaXPath

 

Si la propiedad ya tenía un valor estático, el valor se borra y se cambia al modo dinámico. Aparece el cuadro de diálogo Editar expresión XPath. La expresión XPath se introduce en este cuadro de diálogo. Cuando termine haga clic en Aceptar.

 

Tras introducir la expresión XPath de la propiedad, aparece el botón Editar XPath junto al campo Valor de la propiedad (imagen siguiente). Haga clic en este botón para editar otra vez la expresión XPath. Si quiere volver al modo estático, haga clic en el icono XPath de la barra de herramientas de la ventana. Al cambiar al modo estático se borra la expresión XPath.

 

Nota:hay dos puntos importantes que debe tener en cuenta. Primero: solamente puede haber un modo activo y un valor/una expresión en cada modo. El valor/la expresión que está activo/a se borra cuando se cambia de modo. Es decir, al cambiar de modo el campo Valor se queda vacío. Para recuperar la expresión/el valor anterior, use el comando Deshacer. Segundo: si vuelve a seleccionar una propiedad tras editar el SPS, la propiedad se abre en el modo en que estaba la última vez que se editó.

 

Crear y editar la definición XPath

La definición XPath se crea y edita en el cuadro de diálogo Editar expresión XPath. Hay dos maneras de abrir este cuadro de diálogo:

 

El cuadro de diálogo Editar expresión XPath se abre cuando se cambia del modo estático de una propiedad al modo dinámico (al hacer clic en el botón XPath de la barra de herramientas de la ventana). Si ya está en el modo dinámico y hace clic en el botón XPath de la barra de herramientas, se cambia al modo estático pero el cuadro de diálogo "Editar expresión XPath" no se abre.

El cuadro de diálogo Editar expresión XPath se abre al hacer clic en el botón Editar expresión XPath del campo Valor de una propiedad que ya tiene definida una expresión XPath. El diálogo tendrá la expresión XPath de esa propiedad.

 

Tras editar la expresión XPath o introducir una nueva, haga clic en Aceptar para terminar.

 

Valores devueltos por las expresiones XPath

Las principales ventajas de usar expresiones XPath para establecer el valor de una propiedad son: (i) que el valor de la propiedad puede tomarse de un archivo XML (en lugar de introducirlo directamente) y (ii) que la expresión XPath puede probar si se cumple cierta condición relacionada con el contenido o la estructura del documento XML que se está procesando y, según el resultado de la prueba, la expresión XPath selecciona un valor. Las expresiones XPath devuelven valores de dos tipos:

 

Contenido de nodos XML

La expresión XPath puede apuntar a nodos (i) del documento XML que procesa el SPS o (ii) de cualquier documento XML al que se tenga acceso. Por ejemplo, la expresión Format/@color accede al atributo color del secundario Format del nodo de contexto. El valor del atributo color se usará como valor de la propiedad en la que se definió la expresión XPath. Para acceder a un nodo de otro documento XML debe usar la función doc() de XPath 2.0. Por ejemplo, la expresión doc('Styles.xml')//colors/color-3 recupera el valor del elemento color-3 del archivo XML Styles.xml y usa su valor para la propiedad en la que se definió la expresión XPath.

 

Expresión XPath

El valor de la propiedad puede venir dada por la expresión XPath propiamente dicha en lugar de venir del documento XML. Por ejemplo, el color de fondo de un elemento que se representará como una fila en el documento de salida puede alternarse dependiendo de la posición de la fila, de si es par o impar. Esto se consigue con la expresión XPath 2.0/3.0 if (position() mod 2 = 0) then 'red' else 'green'. Observe que el valor devuelto de esta expresión es la cadena red o la cadena green y que se establecerá como valor de la propiedad en la que se definió la expresión XPath. En el ejemplo que acabamos de dar, los valores de la propiedad se introdujeron como literales de cadena. Pero también pueden venir de un documento XML. Por ejemplo: if (position() mod 2 = 0) then doc('Styles.xml')//colors/color-1 else doc('Styles.xml')//colors/color-2. En cambio, la expresión XPath podría ser una simple cadena como 'green'. Pero esto sería como escribir el valor estático green en la propiedad.

 

Restricciones

El uso de expresiones XPath en propiedades de estilo tiene algunas restricciones:

 

1.En los formatos de salida RTF, los colores se introducen en una tabla del documento RTF. Esta tabla se crea cuando se genera la hoja de estilos XSLT-para-RTF (incluso para la vista previa RTF) y contiene por defecto los 140 colores estándar compatibles con la mayoría de exploradores web. Si los valores de las propiedades de color se obtienen de los datos XML o de una expresión XPath y no es ninguno de los 140 colores estándar, entonces se usa el color estándar más cercano. Por ejemplo, #FF0001 no es uno de los 140 colores estándar y por tanto se usaría el valor #FF0000 (rojo).

2.En los formatos de salida RTF, PDF y Word 2007+ los valores obtenidos para la propiedad class a partir de los datos XML o de un literal de una expresión XPath se aplicarán a estos componentes de diseño: cálculos automáticos, el marcador de posición (contenido), componentes de bloque (párrafo) y celdas de tablas.

 

© 2017-2023 Altova GmbH