2016-12-12 13 views
0

私はXSLが初めてで、コメント表を作成するためにXSLを作成しようとしています。これはコメントが追加された、常に更新されるxmlになります。新しい子ノードを追加し、新しい行を作成しますか?

私は基本的なテーブルを見つけ出しましたが、それに満足しています。ただし、新しいコメントが既存のビューノードに追加された場合、これを別の広告申込情報として表示します。同じビュー名、同じ子ノード名ですが、異なる子ノード値を持ちます。以下は私のXML、XSL、現在のHTML出力の例です。その後に私の望むHMTL出力が続きます。誰も私を正しい方向に向けることができますか?

ありがとうございます!

XML

<?xml version="1.0" encoding="UTF-8" ?> 
<exchange xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
<viewpoints> 
<view name="View-01"> 
<comments> 
    <comment id="101" status="new"> 
     <user>User 01</user> 
     <body>My Comment in View-01</body> 
     <createddate> 
     <date year="2016" month="11" day="28" hour="8" minute="1" /> 
     </createddate> 
    </comment> 
    </comments> 
</view> 
<view name="View-02"> 
    <comments> 
    <comment id="03" status="new"> 
     <user>User 01</user> 
     <body>Please approve this comment</body> 
     <createddate> 
     <date year="2016" month="11" day="28" hour="8" minute="2" /> 
     </createddate> 
    </comment> 
    <comment id="07" status="closed"> 
     <user>Supervisor 02</user> 
     <body>This comment has been approved</body> 
     <createddate> 
     <date year="2016" month="11" day="30" hour="16" minute="25" /> 
     </createddate> 
    </comment> 
    </comments> 
</view> 
<view name="View-04"> 
    <comments> 
    <comment id="12" status="new"> 
     <user>User 02</user> 
     <body>My Comment in View-04</body> 
     <createddate> 
     <date year="2016" month="11" day="30" hour="8" minute="2" /> 
     </createddate> 
    </comment> 
    </comments> 
</view> 

XSL

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

<xsl:template match="/"> 
<HTML> 
    <BODY> 
    <TABLE BORDER="1" > 
    <h2>Comments</h2> 
    <tr bgcolor="#9acd32"> 
     <td style="text-align:left">View Name</td> 
     <td style="text-align:left">Comment Status</td> 
     <td style="text-align:left">User</td> 
     <td style="text-align:left">Comment</td> 
    </tr> 
<xsl:apply-templates select="//view"></xsl:apply-templates> 
    </TABLE> 
    </BODY> 
</HTML> 
</xsl:template> 
<xsl:template match = "//view"> 
<div> 
    <tr> 
     <td><xsl:apply-templates select="@name"/></td> 
     <xsl:apply-templates select="comments/comment/@status"/> 
     <xsl:apply-templates select="comments/comment/user"/> 
     <xsl:apply-templates select="comments/comment/body"/> 
    </tr> 
</div> 
</xsl:template> 

<xsl:template match = "view"> 
     <div><td><xsl:value-of select = "." /></td></div> 
</xsl:template> 

<xsl:template match = "@status"> 
     <div><td><xsl:value-of select = "." /></td></div> 
</xsl:template> 

<xsl:template match = "user"> 
     <div><td><xsl:value-of select = "." /></td></div> 
</xsl:template> 

<xsl:template match = "body"> 
     <div><td><xsl:value-of select = "." /></td></div> 
</xsl:template> 
</xsl:stylesheet> 

電流出力

<HTML> 
    <BODY> 
    <TABLE BORDER="1"> 
    <h2>Comments</h2> 
    <tr bgcolor="#9acd32"> 
     <td style="text-align:left">View Name</td> 
     <td style="text-align:left">Comment Status</td> 
     <td style="text-align:left">User</td> 
     <td style="text-align:left">Comment</td> 
    </tr> 
    <div> 
     <tr> 
      <td>View-01</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>User 01</td> 
      </div> 
      <div> 
       <td>My Comment in View-01</td> 
      </div> 
     </tr> 
    </div> 
    <div> 
     <tr> 
      <td>View-02</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>closed</td> 
      </div> 
      <div> 
       <td>User 01</td> 
      </div> 
      <div> 
       <td>Supervisor 02</td> 
      </div> 
      <div> 
       <td>Please approve this comment</td> 
      </div> 
      <div> 
       <td>This comment has been approved</td> 
      </div> 
     </tr> 
    </div> 
    <div> 
     <tr> 
      <td>View-04</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>User 02</td> 
      </div> 
      <div> 
       <td>My Comment in View-04</td> 
      </div> 
     </tr> 
    </div> 
    </TABLE> 
</BODY> 
</HTML> 

所望の出力

<HTML> 
    <BODY> 
    <TABLE BORDER="1"> 
    <h2>Comments</h2> 
    <tr bgcolor="#9acd32"> 
     <td style="text-align:left">View Name</td> 
     <td style="text-align:left">Comment Status</td> 
     <td style="text-align:left">User</td> 
     <td style="text-align:left">Comment</td> 
    </tr> 
    <div> 
     <tr> 
      <td>View-01</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>User 01</td> 
      </div> 
      <div> 
       <td>My Comment in View-01</td> 
      </div> 
     </tr> 
    </div> 
    <div> 
     <tr> 
      <td>View-02</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>User 01</td> 
      </div> 
      <div> 
       <td>Please approve this comment</td> 
      </div> 
     </tr> 
     <tr> 
      <td>View-02</td> 
      <div> 
       <td>closed</td> 
      </div> 
      <div> 
       <td>Supervisor 02</td> 
      </div> 
      <div> 
       <td>This comment has been approved</td> 
      </div> 
     </tr> 
    </div> 
    <div> 
     <tr> 
      <td>View-04</td> 
      <div> 
       <td>new</td> 
      </div> 
      <div> 
       <td>User 02</td> 
      </div> 
      <div> 
       <td>My Comment in View-04</td> 
      </div> 
     </tr> 
    </div> 
    </TABLE> 
</BODY> 
</HTML> 
+0

これらの「div」のポイントは何ですか? –

+0

私はあなたが何を意味するかを見て、今それを見て、彼らは本当にポイントを提供していない! – HughMcD

答えて

0

あなたは、テーブルには、各commentの行を作成し、各commentの行を持つようにしたい場合 - 例えば:

XSLT 1.0

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

<xsl:template match="/exchange"> 
    <html> 
     <body> 
      <h2>Comments</h2> 
      <table border="1"> 
       <tr> 
        <th>View Name</th> 
        <th>Comment Status</th> 
        <th>User</th> 
        <th>Comment</th> 
       </tr> 
       <xsl:apply-templates select="viewpoints/view/comments/comment"/> 
      </table> 
     </body> 
    </html> 
</xsl:template> 

<xsl:template match="comment"> 
    <tr> 
     <td> 
      <xsl:value-of select="../../@name"/> 
     </td> 
     <td> 
      <xsl:value-of select="@status"/> 
     </td> 
     <td> 
      <xsl:value-of select="user"/> 
     </td> 
     <td> 
      <xsl:value-of select="body"/> 
     </td> 
    </tr> 
</xsl:template> 

</xsl:stylesheet> 
関連する問題