En este archivo catalog.xml
. Tengo dos libros que tienen el mismo inventario (es decir, 20). Quiero escribir un archivo XSL que muestre la mayor cantidad de copias de un libro en un catálogo. Si hay dos o más libros del mismo inventario, entonces deben mostrarse.XSL para mostrar el mayor número de copias en el archivo catalog.xml
<catalog>
<Book>
<sku>12345</sku>
<title>Beauty Secrets</title>
<condition>New</condition>
<current_inventory>20</current_inventory>
<price>99.99</price>
</Book>
<Book>
<sku>54321</sku>
<title>Picturescapes</title>
<current_inventory>20</current_inventory>
<condition>New</condition>
<price>50.00</price>
</Book>
<Book>
<sku>33333</sku>
<title>Tourist Perspectives</title>
<condition>New</condition>
<current_inventory>0</current_inventory>
<price>75.00</price>
</Book>
<Book>
<sku>10001</sku>
<title>Fire in the Sky</title>
<condition>Used</condition>
<current_inventory>0</current_inventory>
<price>10.00</price>
</Book>
</catalog>
A continuación es mi archivo catalog3.xsl
que es capaz de mostrar sólo uno de los dos libros:
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<xsl:variable name="max"/>
<xsl:template match="/">
<html>
<body>
<h2>Titles of Books for which Most Copies are Available</h2>
<table border="2">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>No of Copies</th>
</tr>
<xsl:apply-templates/>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="catalog">
<xsl:for-each select="Book">
<xsl:sort select="current_inventory" data-type="number" order="descending"/>
<tr>
<xsl:if test="position()= 1">
<p><xsl:value-of select="$max = "/></p>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="current_inventory"/></td>
</xsl:if>
</tr>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Podría alguien corregir para lograr mi objetivo de mostrar todas las copias tienen el mismo inventario máximo en el catálogo Gracias.
Buena pregunta: +1. Vea una solución en la que no necesita calcular y mantener el máximo en una variable separada. Además, esta forma de encontrar el máximo puede ser más eficiente que con ordenar todo el conjunto de nodos, ya que solo se ordenan los nodos de diferentes valores. Disfrutar. :) –