2016-09-13 18 views
0

に参加することにより、2つのテーブルを作成します。は、XSL私は、XML文書を持っているカウンタフィールド

ここ
<Cable>A030.000 </Cable> 
<Address> 
<ZIP>11411</ZIP> 
<City>A-City</City> 
<Street>B-Street</Steet> 
<Hause>8</Hause> 
<CableData> 
<Damping>0242</Damping> 
<DM-1>400</DM-1> 
<Length-1>0054</Length-1> 
<DM-2>400</DM-2> 
<Length-2>0041</Length-2> 
<DM-3>400</DM-3> 
<Length-3>0024</Length-3> 
</CableData> 
</Address> 
<Address> 
<ZIP>11511</ZIP> 
<City>A-City</City> 
<Street>B-Street</Steet> 
<Hause>10</Hause> 
<CableData> 
<Damping>0242</Damping> 
<DM-1>400</DM-1> 
<Length-1>0054</Length-1> 
</CableData> 
</Address> 

すべてのアドレスのノードは、順番にダンピングを持っており、5組のDM-xxの長-XXまでの子ノードCableDataを持っています。

私が達成したいのは、XSL 2テーブルを共通のフィールド行カウンタで結合して作成することです。最初のテーブルにはCableData以外のアドレス情報が含まれている必要がありますが、もう1つのアドレスにはCableDataの内容が表示されます。テーブルの共通データは、第1列、すなわち行番号にあり、両方のテーブルのデータを結合するために使用されます。

1-ST表:

<table> 
<tr> 
<th>Num</th> 
<th>Zip</th> 
<th>City</th> 
<th>City dstr</th> 
<th>Street</th> 
<th>Hause</th> 
<th>Hause Ltr</th> 
</tr> 
<tr> 
    <td>1</td> 
    <td>12345</td> 
    <td>A-City</td> 
    <td>North</td> 
    <td>B-Street</td> 
    <td>1</td> 
    <td>C</td> 
</tr> 
<tr> 
    <td>2</td> 
    <td>12345</td> 
    <td>A-City</td> 
    <td>North</td> 
    <td>B-Street</td> 
    <td>2</td> 
    <td>D</td> 
</tr> 
</table> 

2-NDテーブル

<table> 
<tr> 
    <th>Num</th> 
    <th>Damping</th> 
    <th>DM-1</th> 
<th>Length-1</th> 
<th>DM-2</th> 
<th>Length-2</th> 
<th>DM-3</th> 
<th>Length-3</th> 
<th>DM-4</th> 
<th>Length-4</th> 
<th>DM-5</th> 
<th>Length-5</th> 
</tr> 
<tr> 
<td>1</td> 
<td>0242</td> 
<td>400</td> 
<td>0054</td> 
<td>400</td> 
<td>0041</td> 
<td>400</td> 
<td>0024</td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
<tr> 
<td>2</td> 
<td>0242</td> 
<td>400</td> 
<td>0054</td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
<td></td> 
</tr> 
</table> 

両方のテーブルに共通の列が民です。

+0

XML入力の**整形式の例を投稿してください。(b)この。 –

+0

@ uL1 OPのコードを編集しないでください:あなたはどのように見えるのか分かりません。 –

答えて

0

ヒント1:すでにコメントに記載されている@ michael.hor257kのような、完全で整形式で、検証可能な完全な例を提供してください。

ヒント2:指定されたxmlを確認してください。これらは有効ではありません。 [例:<street></steet>で終了]

ヒント3:問題がどこにあるか教えてください。あなたが仕事をしている人を探しているだけなら、これは間違った場所です。これを覚えておいてください。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:output encoding="UTF-8" method="html"/> 

    <xsl:template match="/"> 
     <xsl:call-template name="createAddressesTab"/> 
     <xsl:call-template name="createDampingTab"/> 
    </xsl:template> 

    <xsl:template name="createAddressesTab"> 
     <table> 
      <tr> 
       <th>Num</th> 
       <th>Zip</th> 
       <th>City</th> 
       <th>City dstr</th> 
       <th>Street</th> 
       <th>Hause</th> 
       <th>Hause Ltr</th> 
      </tr> 
      <xsl:for-each select="//Address"> 
       <tr> 
        <td><xsl:value-of select="position()"/></td> 
        <td><xsl:value-of select="ZIP"/></td> 
        <td><xsl:value-of select="City"/></td> 
        <td><!-- provide some xml for this tag --></td> 
        <td><xsl:value-of select="Street"/></td> 
        <td><xsl:value-of select="Hause"/></td> 
        <td><!-- provide some xml for this tag --></td> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 

    <xsl:template name="createDampingTab"> 
     <table> 
      <tr> 
       <th>Num</th> 
       <th>Damping</th> 
       <th>DM-1</th> 
       <th>Length-1</th> 
       <th>DM-2</th> 
       <th>Length-2</th> 
       <th>DM-3</th> 
       <th>Length-3</th> 
       <th>DM-4</th> 
       <th>Length-4</th> 
       <th>DM-5</th> 
       <th>Length-5</th> 
      </tr> 
      <xsl:for-each select="//Address"> 
       <tr> 
        <td><xsl:value-of select="position()"/></td> 
        <td><xsl:value-of select="CableData/Damping"/></td> 
        <td><xsl:value-of select="CableData/DM-1"/></td> 
        <td><xsl:value-of select="CableData/Length-1"/></td> 
        <td><xsl:value-of select="CableData/DM-2"/></td> 
        <td><xsl:value-of select="CableData/Length-2"/></td> 
        <td><xsl:value-of select="CableData/DM-3"/></td> 
        <td><xsl:value-of select="CableData/Length-3"/></td> 
        <td><xsl:value-of select="CableData/DM-4"/></td> 
        <td><xsl:value-of select="CableData/Length-4"/></td> 
        <td><xsl:value-of select="CableData/DM-5"/></td> 
        <td><xsl:value-of select="CableData/Length-5"/></td> 
       </tr> 
      </xsl:for-each> 
     </table> 
    </xsl:template> 

</xsl:stylesheet> 

解説: "高度な" 1のためにかなりまっすぐ

はを見てください。 XSLT 1.0では完全に機能します。要求された作業を行う2つの名前付きテンプレートを呼び出します。

これは作業です。何か問題がある場合は、コメントを介して質問してください。 好きな方は、この質問を投稿してください/またはこの質問を閉じる

+0

それは本当に動作します。どうもありがとう ! –

関連する問題