2016-10-13 7 views
0

xslコードは各国ごとに1つの都市を返すだけです。どんな考え?私は各国のすべての都市を手に入れることを期待していたからです。xslコードですべての都市が返されない

RESULT

<html> 
    <ul> 
     <li>United States</li> 
     <li>LA</li> 
     <li></li> 
    </ul> 
    <ul> 
     <li>Poland</li> 
     <li>Gdańsk</li> 
     <li></li> 
    </ul> 
</html> 

<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> 
    <xsl:for-each select="//nations"> 
     <xsl:for-each select="nation"> 
      <ul> 
      <li><xsl:value-of select="nationame"/></li> 
      <li><xsl:value-of select="cities/city/cityname"/></li> 
      <li><xsl:value-of select="cities/city/population"/></li> 
      </ul> 
     </xsl:for-each> 
    </xsl:for-each> 
</html> 

<nations> 
    <nation> 
    <nationame>United States</nationame> 
    <cities> 
     <city> 
      <cityname>LA</cityname> 
      <citypopulation>4000000</citypopulation> 
     </city> 
     <city> 
      <cityname>NY</cityname> 
      <citypopulation>10000000</citypopulation> 
     </city> 
    </cities> 
    </nation> 
    <nation> 
    <nationame>Poland</nationame> 
    <cities> 
     <city> 
      <cityname>Gdańsk</cityname> 
      <citypopulation>40000</citypopulation> 
     </city> 
     <city> 
      <cityname>Poznań</cityname> 
      <citypopulation>100000</citypopulation> 
     </city> 
    </cities> 
    </nation> 
</nations> 

誰かが実現CODEがなぜ機能していない:あなたはコードとImはなっていることの結果を見ることができます

+0

単純なスタイルシート形式を使用する理由はありますか? –

答えて

1

を参照している間、あなたのXMLは、citypopulationノードがあり、xsl:value-of命令が選択されたノードセットで最初ノードの文字列値を返します。すべての値を取得するには、別のxsl:for-eachを使用する必要があります。

<html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> 
    <xsl:for-each select="nations/nation"> 
     <ul> 
      <li><xsl:value-of select="nationame"/></li> 
      <xsl:for-each select="cities/city"> 
       <li><xsl:value-of select="cityname"/></li> 
      </xsl:for-each> 
     </ul> 
    </xsl:for-each> 
</html> 
0

まず、都市を反復するには別のfor-eachループが必要です。さもなければXSLTは見つかった最初の都市で一致します

第2に、あなたは人口を間違って呼んでいます。あなたのXSLTは、XSLT 1.0で​​

関連する問題