1

私はxmlとxslにまったく慣れていないので、xmlファイルを思い通りに見せるのに苦労しています。基本的に問題は、テーブルがすべての内容で正しく表示されることですが、xml の内容もテーブルの後に表示されます。だから私は常にxmlからのすべてのデータが続くテーブルを持っています。そして、Firefox 16.0.2 で xml ファイルをテストしています。

これが私のxmlファイルの一部です。

<root>
  <name id = "content_here">
    <first> Cathy </first>
    <last> Claires </last>
  </name>
  ... more names down here
</root>

Firefoxで表形式で表示しようとしていますが、これはxslファイルに対して行ったことです。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
    <xsl:template match="root">
      <html>
       <body>
         <table>
           <tr>
             <th> id </th> 
             <th> first name </th> 
             <th> last name </th>
           </tr>
           <xsl:for-each select="name"> 
            <tr>
             <td> <xsl:value-of select="@id"/> </td>
             <td> <xsl:value-of select="first"/> </td>
             <td> <xsl:value-of select="last"/> </td>
           </tr>
           </xsl:for-each>  
</table>        

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

テーブルの後に余分なコンテンツを取り除く方法について、誰でもヒントをくれますか? ありがとうございました!

4

1 に答える 1

1

このxsl:apply-templates命令により、テンプレートコンテキスト(ここでは要素)のすべてのノードの子が組み込みテンプレートrootを介してスローされます。スタイルシートから削除すると、コンテンツが削除されます。

実際にはxsl:apply-templatesルールを使用しますが、これを行うためのより良い方法があることに注意してください。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="root">
    <html>
      <body>
        <table>
          <tr>
            <th> id </th> 
            <th> first name </th> 
            <th> last name </th>
          </tr>
          <xsl:apply-templates/>
        </table>        
      </body>
    </html>
  </xsl:template>

  <xsl:template match="name"> 
    <tr>
      <td> <xsl:value-of select="@id"/> </td>
      <td> <xsl:value-of select="first"/> </td>
      <td> <xsl:value-of select="last"/> </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

これは、内部xsl:apply-templatesの子にテンプレートマッチングを適用するために使用されます。要素が一致すると、aが作成されます。これは通常、を使用するよりも優れた方法です。roottablenametrxsl:for-each

于 2012-11-16T04:37:54.640 に答える