2017-10-29 18 views
0

私がやっているのは、for-eachループに入力された行数にまたがるように表ヘッダーをフォーマットすることです。私はエントリの数をカウントし、後で使用する変数を増やすために別々のfor-eachループを設定することを考えましたが、xslでは動作しません。これが私の最初の試みです。ここで私はそれを設定しようとした方法である:ここではXSL create rowspan = for-eachループの反復回数を持つhtmlヘッダー

<xsl:variable name= "increment" select="0" /> 
<xsl:for-each select = "/keyboard/brand"> 
     <xsl:for-each select = "/keyboard/brand/model"> 
       <xsl:variable name="increment" select="$increment + 1" /> 
     </xsl:for-each> 
     <tr> 
       <th rowspan = $increment><xsl:value-of select = "brand"/></td> 
       <xsl:for-each select = "/keyboard/brand/model"> 
       <td><xsl:value-of select = "keytype"/></td>  
       <td><xsl:value-of select = "backlit"/></td> 
     </tr> 
     <tr> 
       </xsl:for-each> 
      <xsl:variable name= "increment" select="0" /> 
     </xsl:for-each> 

は、私が働いているXMLの一部です:

<keyboard> 
    <brand>Logitech 
     <model>MK270 
     <keytype>Membrane</keytype> 
     <backlit check = "no">Qwerty</backlit> 
     <backlit check = "no">Numpad</backlit> 
     <interface>Wireless USB</interface> 
     <batterypowered>Yes</batterypowered> 
     <programmablekeys location = "none">None</programmablekeys> 
     <launchkeys location = "top">Media Controls</launchkeys> 
     </model> 

     <model>K350 
     <keytype>Membrane</keytype> 
     <backlit check = "no">Qwerty</backlit> 
     <backlit check = "no">Numpad</backlit> 
     <interface>Wireless USB</interface> 
     <batterypowered>Yes</batterypowered> 
     <programmablekeys location = "none">None</programmablekeys> 
     <launchkeys location = "side">Zoom Controls</launchkeys> 
     <launchkeys location = "top">Media Controls</launchkeys> 
     </model> 

     <model>G110 
     <keytype>Membrane</keytype> 
     <backlit check = "yes">Qwerty</backlit> 
     <backlit check = "yes">Numpad</backlit> 
     <interface>USB 2.0</interface> 
     <batterypowered>No</batterypowered> 
     <programmablekeys location = "side">12 programmable G-keys</programmablekeys> 
     <launchkeys location = "top">Audio/Mic/Media Controls</launchkeys> 
     </model> 
    </brand> 

私がやりたいどのようなブランドはすべてにまたがる持っていますモデルが占める行私は各モデルをそれ自身の行に入れようとしています。

私はそれを処理しようとしたのではなく、position()関数を使用することになっていますが、これをどのように実装するのかはわかりません。 position()がカウントを終了する前に

私は最後の反復で最後のtrを追加しない方法をかなり取り上げていないように、私はうまくいきませんが、他のバグがあると確信しています。残りのデータを追加する必要があります。

+0

質問を入力XMLのサンプルと期待している出力を含めて編集できますか?ありがとう –

+0

問題ありません。私はあなたが求めたものを加えました。他の情報が必要な場合はお知らせください。 – Mike

+0

最小限で整形式のXMLスニペットを投稿することを検討してください。その「」タグはどこで閉じられていますか?構造は全く明確ではありません。 –

答えて

0

あなたが望むテーブル構造はわかりませんが、内部には<xsl:for-each select = "/keyboard/brand">などがあります。 <th rowspan="{count(model)}">サンプルの場合は<th rowspan="3">、それは内側に<xsl:for-each select="model"><tr><td>...</td>...</tr></xsl:for-each>を入力する必要がある3つの行にまたがるセルです。

関連する問題