Plantillas definidas por el usuario

www.altova.com Expandir/Contraer todos Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Archivos SPS: contenido >

Plantillas definidas por el usuario

Las plantillas definidas por el usuario son plantillas para elementos generados por una expresión XPath creada por el usuario. Estos elementos pueden ser valores atómicos o nodos. En la imagen siguiente puede ver tres plantillas definidas por el usuario. Observe que las etiquetas de este tipo de plantillas tienen un icono en forma de peón verde. Las plantillas definidas por el usuario son muy prácticas porque ofrecen una gran flexibilidad.

 

UserDefTemplates

 

La expresión XPath de las plantillas definidas por el usuario de la imagen hace esto:

 

Selecciona un nodo de un esquema fuente. Con una expresión XPath puede alcanzar cualquier nodo de cualquier esquema fuente desde cualquier nodo de contexto. Si StyleVision puede apuntar inequívocamente al nodo especificado, la plantilla definida por el usuario se convierte automáticamente en una plantilla normal. Si es una plantilla definida por el usuario, el icono de la etiqueta tendrá forma de peón verde.
Selecciona un nodo que cumple con la condición especificada por la construcción for de XPath 2.0 y XPath 3.0. Dichas plantillas no pueden convertirse en plantillas normales porque la construcción for no permite a StyleVision resolver el destino inequívocamente con la información de esquema que tiene a su disposición.
Selecciona una secuencia de valores atómicos {1, 2, 3}. Si está permitido crear una plantilla para un valor atómico, no podrá usar el marcador de posición (contenido) dentro de dicha plantilla. Esto se debe a que la instrucción xsl:apply-templates (que es la que genera el marcador de posición (contenido)) solamente se puede aplicar a elementos de nodo (no a valores atómicos). Sin embargo, lo que puede hacer es usar un cálculo automático junto con otro elemento de diseño como una lista. Por ejemplo, la plantilla definida por el usuario que aparece a continuación daría como resultado el texto de la derecha.

 

UDefTemplateAtomicValsDes        UDefTemplateAtomicValsOut

 

Nota:si el archivo SPS utiliza el modo XSLT 1.0, entonces la expresión XPath utilizada debe devolver un conjunto de nodos. De lo contrario se emite un error.

 

 

Ventaja de usar XPath para seleccionar nodos

La ventaja de usar expresiones XPath para seleccionar nodos del esquema (o lo que es lo mismo, plantillas definidas por el usuario) es que la potencia del mecanismo de selección de rutas de XPath se puede aprovechar para seleccionar cualquier nodo o secuencia de elementos, así como para filtrar o establecer condiciones para la selección de nodos. Como resultado, podrá apuntar a ciertos nodos del documento XML para una plantilla determinada. Por ejemplo, la expresión XPath //Office/Department[@Location="NY"] seleccionará solamente los nodos Department cuyo atributo Location tenga el valor NY. Para más ejemplos consulte el resto de este apartado.

 

Nota:si una expresión XPath contiene varios pasos de ruta de acceso, entonces la posición de los paréntesis desempeña un papel importante (sobre todo en el caso de las agrupaciones y ordenaciones). Por ejemplo, la expresión XPath /Org/Office/Dept no se procesa igual que la expresión (/Org/Office/Dept). En el caso de la primera expresión, sin paréntesis, el procesador recorre cada paso de la ruta. Para la segunda expresión, con paréntesis, todos los elementos Dept de todos los elementos Office se devuelven en un solo conjunto de nodos.

 

Paréntesis

Mecanismo XSLT subyacente

Efecto

No

<xsl:for-each select="Org">

 <xsl:for-each select="Office">

   <xsl:for-each select="Dept">

    ...

   </xsl:for-each>

 </xsl:for-each>

</xsl:for-each>

Cada elemento Office tiene sus propios Dept. Puede realizar agrupaciones y ordenaciones dentro de cada Office.

<xsl:for-each select="/Org/Office/Dept">

 ...

</xsl:for-each>

Los elementos Dept abarcan todos los elementos Office y todos los elementos Org.

 

Tenga en cuesta esta importante diferencia a la hora de realizar agrupaciones y ordenaciones.

 

Insertar una plantilla definida por el usuario

Para insertar una plantilla definida por el usuario:

 

1.Haga clic en el icono Insertar plantilla definida por el usuario de la barra de herramientas "Insertar elementos de diseño" y después   en la posición del diseño donde desea insertar la plantilla. También puede hacer clic con el botón derecho en el diseño y seleccionar el comando Insertar plantilla definida por el usuario del menú contextual.
2.Se abre el cuadro de diálogo Editar expresión XPath. Escriba la expresión XPath que desea usar y haga clic en Aceptar. Observe que el nodo de contexto de la expresión XPath será el nodo donde hizo clic. Se crea una plantilla nodo vacía. A veces se crea un nodo unido. Cuando un nodo está unido, los nodos de instancia a los que se apunta están seleccionados como si estuvieran en el mismo nivel. Cuando el nodo no está unido (sino dividido en varios niveles jerárquicos) la selección del nodo se hace recorriendo cada nodo de instancia de cada nivel. El conjunto de nodos que la expresión devuelve en ambos casos (unido y dividido) es el mismo, a no ser que se especifique un criterio de agrupación o de ordenación. Para más información consulte el apartado Operaciones con plantillas nodo.

 

Editar el modelo de coincidencia para la plantilla

La selección de nodos de cualquier plantilla nodo (normal o definida por el usuario) se puede cambiar usando una expresión XPath y seleccionando otro modelo de coincidencia. Para editar el modelo de coincidencia de una plantilla nodo, haga clic con el botón derecho en la plantilla nodo y seleccione Editar modelo de coincidencia en el menú contextual. Se abre el cuadro de diálogo "Editar expresión XPath", donde puede introducir la expresión XPath para seleccionar otro nodo. Después haga clic en Aceptar.

 

Agregar nodos a plantillas definidas por el usuario

Si añade un nodo de esquema a una plantilla definida por el usuario creada para un nodo o secuencia que no se puede colocar en el contexto del esquema fuente, StyleVision no puede conocer el contexto para el nodo nuevo. En este caso aparece un aviso (imagen siguiente) preguntando cómo se debe hacer referencia al nuevo nodo: (i) por su nombre (con una ruta de acceso relativa) o (ii) por una ruta de acceso completa empezando por la raíz del esquema fuente.

 

UnknownContextNode

 

Este aviso aparece siempre por defecto, pero se puede deshabilitar en la pestaña Diseño del cuadro de diálogo "Opciones" (Herramientas | Opciones).

 

 

 


© 2019 Altova GmbH