2017-10-18 2 views
1

私はアンドロイド環境でxmlドキュメントをhtmlに変換するためにXSLスタイルシートを使用しています。パラメータfor-eachを使用するXSL

<?xml version="1.0" encoding="UTF-8"?> 
<list> 
    <project id="Proj02"> 
    <observation id="Proj02_Obs001"> 
    … 
    </observation> 
    </project> 
    <project id="Proj01"> 
    <observation id="Proj01_Obs002"> 
    … 
    </observation> 
    <observation id="Proj01_Obs001"> 
     … 
    </observation> 
    </project> 
</list> 

私のhtmlファイルでは、特定のプロジェクトのすべての観察を繰り返していきたいと思います。 、私はプロジェクト@ IDのパラメータを渡すことを行うには:XSLファイルを使用して

transformer.setParameter("projID", "Proj01") 

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:template match="/"> 
     <xsl:param name="projID" /> 
     <html> 
      <body> 
       <table> 
        <tr> 
         <th style="text-align:left">ID</th> 
         … 
        </tr> 
        <xsl:for-each select="list/project[@id=$projID]/observation"> 
         <tr> 
          <td> 
           <xsl:value-of select="@id" /> 
          </td> 
          … 
         </tr> 
        </xsl:for-each> 
       </table> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

私は結果を取得していないのです。

この行はどのように変更する必要がありますか?

<xsl:for-each select="list/project[@id=$projID]/observation"> 

ありがとうございました!あなたはスタイルシートに外部パラメータを渡している場合

答えて

4

は、xsl:param文はxsl:stylesheet

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

    <xsl:param name="projID" /> 

    <xsl:template match="/"> 
     <xsl:for-each select="list/project[@id=$projID]/observation"> 
      <tr> 
       <td> 
        <xsl:value-of select="@id" /> 
       </td> 
      </tr> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

パラメータは、グローバルでの子であることが必要であり、スタイルシート全体で使用することができます。

+0

うわー、素晴らしい!この非常に迅速な答えをありがとう。私のために働く! – Nico

関連する問題