2016-04-13 17 views
0

LIST,BUYまたはSELLという単語がこのXMLドキュメントのchart_nameノードにある回数を数えます。私は各ノードが親ノードtest_nameから何度もリストされているかを調べようとしています。XMLの文字列パターンと一致するノードをカウントする

<?xml version="1.0" encoding="utf-8"?> 
<digital1> 
    <test_name ID="Test"> 
    <record> 
     <chart_name>LIST OR BUY Test 1</chart_name> 
    </record> 
    <record> 
     <chart_name>LIST Test 2</chart_name> 
    </record> 
    </test_name> 
    <test_name ID="Ryan"> 
    <record> 
     <chart_name>BUY Ryan 1</chart_name> 
    </record> 
    <record> 
     <chart_name>LIST Ryan 2</chart_name> 
    </record> 
    <record> 
     <chart_name>SELL OR LIST Ryan 3</chart_name> 
    </record> 
    <record> 
     <chart_name>LIST OR BUY Ryan 4</chart_name> 
    </record> 
    <record> 
     <chart_name>BUY Ryan 5</chart_name> 
    </record> 
    <record> 
     <chart_name>LIST Ryan 6</chart_name> 
    </record> 
    </test_name> 
</digital_tpp> 

XSLTファイル私はこのようなルックスを使用しています:

<xsl:template match="/"> 
    <html> 
    <body> 
    <h2>My Test File</h2> 
     <xsl:for-each select="digital1/test_name/record]"> 
     <tr> 
      <td><xsl:value-of select="../@ID"/></td> 
      <td><xsl:value-of select="count(chart_name[. Like '*LIST*'])"/></td> 
     </tr> 
     </xsl:for-each> 
    </table> 
    </body> 
    </html> 
</xsl:template> 

は、それは私が助けを必要としています。このライン<td><xsl:value-of select="count(chart_name[. Like '*LIST*'])"/></td>です。上記のキーワードに一致するようにパターンマッチを行うにはどうすればよいですか?

出力は、test_name ID、LISTの数、BUYの数、およびSELLの数を示す表になります。私が正しく理解していれば

+0

ことができますしてくださいXSLTのバージョンに言及してください。 –

答えて

2

は、あなたがしたい:あなたの入力例に適用

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

<xsl:template match="/digital1"> 
    <html> 
     <body> 
      <h2>My Test File</h2> 
      <table border="1"> 
       <tr> 
        <th>ID</th> 
        <th>LIST</th> 
        <th>BUY</th> 
        <th>SELL</th> 
       </tr> 
       <xsl:for-each select="test_name"> 
        <tr> 
         <td> 
          <xsl:value-of select="@ID"/> 
         </td> 
         <td> 
          <xsl:value-of select="count(record[contains(chart_name, 'LIST')])"/> 
         </td> 
         <td> 
          <xsl:value-of select="count(record[contains(chart_name, 'BUY')])"/> 
         </td> 
         <td> 
          <xsl:value-of select="count(record[contains(chart_name, 'SELL')])"/> 
         </td> 
        </tr> 
       </xsl:for-each> 
      </table> 
     </body> 
    </html> 
</xsl:template> 

</xsl:stylesheet> 

</digital1>から</digital_tpp>を修正した後)、その結果は次のようになります。

enter image description here

+0

ありがとうございます。私は試合の両方を試してみたが、以前は入っていたが、仕事をすることができなかった。私はそれを働かせるためにレベルアップする必要がありました。解決済み。再度、感謝します。 – wbeard52

関連する問題