xslt aplica 2 plantillas con diferentes modos, en el mismo elemento conservando el orden definido en xml
Frecuentes
Visto 410 veces
0
Tengo un archivo xml con artículos. Quiero generar la lista de elementos según el atributo de vista y conservar el orden de los elementos. Para este propósito tengo xsl:templates con diferentes modos. El problema es que no puedo conservar el mismo orden que en xml. El xml es el siguiente:
<item />
<item view="new" />
<item />
<item view="new" />
las plantillas son:
<xsl:template match="item" mode="standart">
<div class="standart_item"></div>
</xsl:template>
<xsl:template match ="item" mode="new">
<div class="new_item"></div>
</xsl:template>
¿Cómo puedo aplicar diferentes plantillas para conservar el orden, lo mismo que en xml?
<div class="standart_item"></div>
<div class="new_item"></div>
<div class="standart_item"></div>
<div class="new_item"></div>
1 Respuestas
1
Usar diferentes modos no parece ser la herramienta adecuada para el resultado que está tratando de lograr. Sugiero distinguir las plantillas por predicados:
<xsl:template match="item">
<div class="standard_item"></div>
</xsl:template>
<xsl:template match="item[@view='new']">
<div class="new_item"></div>
</xsl:template>
contestado el 03 de mayo de 12 a las 07:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas xslt xpath or haz tu propia pregunta.
Tengo que volver a hacer coincidir los elementos dentro de las diferentes plantillas, por eso tengo que usar el modo - tylik
En este caso, también podría usar una sola plantilla que coincida con todos los elementos y distinguirlos con
xsl:choose
por ejemplo. Si eso tampoco es posible, debe elaborar un poco más sobre lo que realmente está tratando de hacer. - MartinGracias. Supongo que tengo que ir con xsl:choose - tylik
@tylik: Es muy probable que no sea necesario usar
xsl:choose
. Si explicas bien el problema (proporcionando suficientes datos), muchas personas podrán dar soluciones elegantes. - dimitre novachev