異なる値を並べ替える必要がありますが、機能させることはできません。XSLで並べ替えを使用
私の例のXML:
<?xml-stylesheet type="text/xsl" href="7.xsl"?>
<immobles>
<ofertes>
<oferta estat="1">Venda</oferta>
<oferta estat="2">Lloguer</oferta>
</ofertes>
<categories>
<categoria cat="A">Pis</categoria>
<categoria cat="B">Casa</categoria>
<categoria cat="C">Duplex</categoria>
</categories>
<propietaris>
<propietari dni="400001">Fernando</propietari>
<propietari dni="400004">Berta</propietari>
<propietari dni="400002">Judit</propietari>
<propietari dni="400007">Manel</propietari>
<propietari dni="400003">Pilar</propietari>
<propietari dni="400005">Jordi</propietari>
</propietaris>
<immobiliaries>
<immobiliaria codi="I1">Home sweet home</immobiliaria>
<immobiliaria codi="I2">Com a casa enlloc</immobiliaria>
<immobiliaria codi="I3">Llar de foc</immobiliaria>
<immobiliaria codi="I4">Pisos penyasegat</immobiliaria>
</immobiliaries>
<propietats>
<propietat id="1" oferta="1" propietari="400003">
<nom>Pis a l'eixample</nom>
<categoria cat="A"/>
<valorat>145000</valorat>
<preu>520</preu>
<companyies>
<companyia comp="I3" />
<companyia comp="I4" />
</companyies>
</propietat>
<propietat id="2" oferta="2" propietari="400001">
<nom>Casa moderna 4 habitacions</nom>
<categoria cat="B"/>
<valorat>358000</valorat>
<preu>350000</preu>
<companyies>
<companyia comp="I2" />
<companyia comp="I3" />
</companyies>
</propietat>
<propietat id="3" oferta="2" propietari="400002">
<nom>Duplex emmoblat lluminós</nom>
<categoria cat="C"/>
<valorat>210000</valorat>
<preu>150000</preu>
<companyies>
<companyia comp="I1" />
</companyies>
</propietat>
<propietat id="3" oferta="1" propietari="400005">
<nom>Duplex centre</nom>
<categoria cat="C"/>
<valorat>160000</valorat>
<preu>340</preu>
<companyies>
<companyia comp="I4" />
<companyia comp="I1" />
</companyies>
</propietat>
</propietats>
</immobles>
私のXSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<body>
<table border="1">
<tr bgcolor="#9acd32">
<th>Propietat en lloguer</th>
</tr>
<xsl:for-each select="//propietat">
<xsl:variable name="idofer" select="@oferta" />
<xsl:variable name="idcat" select="categoria/@cat" />
<xsl:variable name="idpropi" select="@propietari" />
<xsl:variable name="propiofer" select="//ofertes/oferta[@estat=$idofer]" />
<xsl:variable name="propicat" select="//categories/categoria[@cat=$idcat]" />
<xsl:variable name="propipropieari" select="//propietaris/propietari[@dni=$idpropi]" />
<tr>
<xsl:choose>
<xsl:when test="$propiofer='Lloguer'">
<xsl:apply-templates select="nom">
<xsl:sort select="preu" order="ascending" />
<xsl:sort select="$propicat" order="descending" />
<xsl:sort select="$propipropietari" order="descending" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
私は "Lloguer" ofertes/oferta
、およびpreu
、categories/categoria
とpropietaris/propietari
のためにそれらによって順になっている値を表示する必要があります。
私が適用さ-テンプレートを使用する必要がある場合のわからないか、私は別の方法まず
この場合、期待する出力を表示できますか?ありがとうございました! –
「propietat/nom」、「categories/categoria」、「propietaris/propietari」から要素を取得するという考えがありました。私はひどく表現していることを理解しています –