2011-12-18 5 views
1

방금 ​​XML을 정렬하는 XSL 파일을 만들었습니다. 이제 XML 파일의 일부 노드 만 정렬 할 수 있도록 추가하려고합니다.XSL multiple sort

가격 카테고리에서 10 년 이상 된 자동차 정렬. 다른 언어로는 IFELSE을 사용할 것입니다. 그러나 이것을 알아낼 수 없습니다.

내가 지금까지 무엇을했는지 있습니다 :

XML 파일

<autoads> 
    <ad> 
     <type>1</type> 
     <name>Honda</name> 
     <model>XL 1000 V</model> 
     <regyear>2001</regyear> 
     <price>129900</price> 
     <adtext>2001 Honda XL 1000 V, 8.900 km. hög vindruta. Pris 129.900kr,-. </adtext> 
     <addate>20020115</addate> 
     <volume>1000</volume> 
     <category></category> 
    </ad> 
    <ad> 
     <type>2</type> 
     <name>Nissan</name> 
     <model>Almera 1.4S</model> 
     <regyear>1997</regyear> 
     <price>119000</price> 
     <adtext>1997 Nissan Almera 1.4S, 5 dörrar, met, 70.000 km. el.spegel/fönster, galv. kaross, c.lås, startspärr, airbag, nedfällb. baks. ABS, ute temp. R/CD, alarm, d.fäste, v.säten, s/v-hj. EU-godk. full service, servo. Pris 119.000 kr,-. </adtext> 
     <addate>20020118</addate> 
     <volume>0</volume> 
     <category>5 dörrar</category> 
    </ad> 
    </autoads> 

그리고 내 XSL 파일

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:template match="/"> 

<html> 
<body>  

<xsl:apply-templates select="//ad"> 
<xsl:sort select="regyear" /> 

</xsl:apply-templates> 
</body> 
</html> 
</xsl:template> 

<xsl:template match="ad"> 


<tr> 
<td> 
<h3> 
Märke : <br /> 
<xsl:value-of select="name" /> 
</h3> 
</td> 
<td> 
<h4> 
Modell : <br /> 
<xsl:value-of select="model" /> 
</h4> 
</td> 
<td> 
<h5> 
Årsmodell :<br /> 
<xsl:value-of select="regyear" /> 
</h5> 
</td> 
<td> 
<h5> 
Pris : 
<xsl:value-of select="price" /> 
</h5> 
</td> 
<td> 
<p> 
Information : <br /> 
<xsl:value-of select="adtext" /> 
</p> 
</td> 
</tr> 
</xsl:template> 
</xsl:stylesheet> 
+1

만약 y 원하는 결과물을 보여 주면, 우리는 당신이 그것을 변환하는 방법을 찾는 것을 더 잘 도와 줄 수 있습니다. 당신이하고 싶은 것을 정확히 이해하는 것은 어렵습니다. – LarsH

답변

2

정확한 요구 사항이 무엇인지 확실하지만,이 같은 아마 뭔가하지 않음 당신을 도울 수 있습니다 :

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:strip-space elements="*"/> 
    <xsl:output indent="yes"/> 
    <xsl:param name="cur-year" select="2011"/> 

    <xsl:template match="/autoads"> 
    <xsl:copy> 
     <xsl:apply-templates select="*[$cur-year - regyear > 10]"> 
     <xsl:sort select="regyear" data-type="number"/> 
     </xsl:apply-templates> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="@*|node()"><!-- copy template --> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 
+0

놀라운! 좋은 답장을 보내 주셔서 감사합니다. – Dymond