сортировка десятичных дробей с помощью XSLT - PullRequest
0 голосов
/ 27 октября 2011

Я пытаюсь отсортировать некоторые данные XML, я следовал инструкциям по W3s, но мой код не работает, что случилось?

  <xsl:for-each select="garage/car[colour='red']">
  <xsl:apply-templates>

<xsl:sort select="number(price)" order="descending" data-type="number" /> 
</xsl:apply-templates>

    <tr>    
    <td><xsl:value-of select="make"/></td>
    <td><xsl:value-of select="model"/></td>
    <td><xsl:value-of select="price"/></td>
    </tr>


  </xsl:for-each>

Пример XML ~:

  <garage>
  <car>
      <make>vw</make>
      <model>golf</model>
      <color>red</color>
      <price>5.99</price>
  </car>
    <car>
      <make>ford</make>
      <model>focus</model>
      <color>black</color>
      <price>3.66</price>
  </car>
    <car>
      <make>honda</make>
      <model>civic</model>
      <color>red</color>
      <price>15.99</price>
  </car>
</garage>

1 Ответ

0 голосов
/ 27 октября 2011

То есть вы хотите показать все красные машины в порядке убывания цены?

Это помогает, если вы согласны с написанием цвета / цвета! Я британец и чувствую твою боль!

Также вы смешиваете шаблоны for-each и apply (обе работы)

apply-templates метод:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" version="1.0" indent="yes" />

   <xsl:template match="/">
      <xsl:apply-templates select="garage/car[color='red']">
         <xsl:sort select="number(price)" order="descending" data-type="number" />
      </xsl:apply-templates>
   </xsl:template>

   <xsl:template match="car[color='red']">
      <tr>
         <td>
            <xsl:value-of select="make" />
         </td>
         <td>
            <xsl:value-of select="model" />
         </td>
         <td>
            <xsl:value-of select="price" />
         </td>
      </tr>
   </xsl:template>       
</xsl:stylesheet>

для каждого метод:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="html" version="1.0" indent="yes" />

   <xsl:template match="/">
      <xsl:for-each select="garage/car[color='red']">
         <xsl:sort select="number(price)" order="descending" data-type="number" />
         <tr>
            <td>
               <xsl:value-of select="make" />
            </td>    
            <td>
               <xsl:value-of select="model" />
            </td>
            <td>
               <xsl:value-of select="price" />
            </td>
         </tr>
      </xsl:for-each>
   </xsl:template>

</xsl:stylesheet>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...