मैंने XSLT का एक ब्लॉक लिखा है और मैं अपनी xml फ़ाइल को सॉर्ट करना चाहता हूं, लेकिन यह काम नहीं करता है।
मेरा XSLT:
.....
<xsl:template match="/">
<html>
<body>
<h1>The second one that i can sort the result</h1>
<table>
<tr bgcolor="blue">
<th>Name</th>
<th>ID</th>
<th>preis</th>
<th>Lieferant</th>
</tr>
<xsl:for-each select="//lieferungen/artikel">
<tr>
<xsl:apply-templates select="name"/>
<td><xsl:value-of select="@id"/></td>
<td><xsl:apply-templates><xsl:sort select="preis" order="ascending"/</xsl:apply-templates></td>
<xsl:apply-templates select="lieferant"/>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="name">
<td><xsl:value-of select="node()"/></td>
</xsl:template>
<xsl:template match="lieferant">
<td><xsl:value-of select="node()"/></td>
</xsl:template>
</xsl:stylesheet>
और xml है:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="C:UsersBabakDesktopXSLTsort.xslt"?>
<!-- Edited by XMLSpy® -->
<lieferungen
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:myspace:lieferungen ....">
<artikel id="3526">
<name>apfel</name>
<preis stueckpreis="true">15.97</preis>
<lieferant>Fa. Krause</lieferant>
</artikel>
...
उत्तर:
उत्तर № 1 के लिए 1मान लें कि "आर्टिकेल" को एक्सिस डालकर ऑर्डर किया जाना चाहिए: अपने एक्सएस में पहले कथन के अनुसार क्रमबद्ध करें:
कुछ इस तरह:
<xsl:for-each select="//lieferungen/artikel">
<xsl:sort select="preis" order="ascending"/>
<tr>
</tr>
</xsl:for-each>
आपने क्या प्रयास किया:
<td><xsl:apply-templates><xsl:sort select="preis" order="ascending"/></xsl:apply-templates></td>
काम नहीं करता है क्योंकि वर्तमान नोड पहले से ही "आर्टिकेल" है। Xsl: "आर्टिकेल" के सभी बच्चों (और विशेषताओं) के लिए आवेदन-टेम्प्लेट किया जाता है।