我有以下xml。我想对XSL做的是对元素productDesignRating、productpricering和productperfromancreation的总价值进行输出排序。到目前为止,想要完成这项工作还没有运气。任何帮助将不胜感激,我需要能够在xsl 1中这样做,所以没有xsl2函数。
<DocumentElement xmlns="DotNetNuke/UserDefinedTable">
<QueryResults>
<productCategory>cat1</productCategory>
<productTitle>product1</productTitle>
<productImage><img alt="productImage" title="productImage" src="/skinconversion/Portals/12/babynokiko.jpg" /></productImage>
<productDesignRating>3</productDesignRating>
<productPriceRating>4</productPriceRating>
<productPerformanceRating>4</productPerformanceRating>
<productPrice>10</productPrice>
<productSummary>description</productSummary>
<productUrl>http://www.2dnn.com</productUrl>
</QueryResults>
<QueryResults>
<productCategory>cat2</productCategory>
<productTitle>product2</productTitle>
<productImage><img alt="productImage" title="productImage" src="/skinconversion/Portals/12/babynokiko.jpg" /></productImage>
<productDesignRating>3</productDesignRating>
<productPriceRating>3</productPriceRating>
<productPerformanceRating>3</productPerformanceRating>
<productPrice>10</productPrice>
<productSummary>description</productSummary>
<productUrl>http://www.2dnn.com</productUrl>
</QueryResults>
<QueryResults>
<productCategory>cat3</productCategory>
<productTitle>product3</productTitle>
<productImage><img alt="productImage" title="productImage" src="/skinconversion/Portals/12/babynokiko.jpg" /></productImage>
<productDesignRating>1</productDesignRating>
<productPriceRating>2</productPriceRating>
<productPerformanceRating>3</productPerformanceRating>
<productPrice>56</productPrice>
<productSummary>description</productSummary>
<productUrl>http://www.2dnn.com</productUrl>
</QueryResults>
</DocumentElement>
试试这个:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="DotNetNuke/UserDefinedTable">
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="node()">
<xsl:sort select="my:productDesignRating +
my:productPriceRating +
my:productPerformanceRating"
data-type="number"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
这只是一个简化的标识模板(不处理任何属性),但是对3个指定的子元素的值进行数值排序——如果它们存在的话。
特别注意data-type
属性的使用,允许指定排序基数应该是数字,所以这里的顺序是6,9,11(对于字符串,默认是11,6,9)…
[要颠倒顺序,只需添加order="descending"
属性]