2016-10-17 6 views
0

XSLTが新機能です。カスタムCOMオブジェクトを通じてxmlファイルを取得する従来のASPページがあります。ファイル構造は次のとおりです。XSLTネストされた書式設定のグループ化

最初の行には、月データ(引数タイプ= "2")を含む12行の後に続き、年に関連する値(引数タイプ= "1")などが含まれます。 私が作成しなければならない出力は、月レコードを表示/隠し、ユーザー入力とXMLデータに基づいてクライアント側の検証を行うことができるテキストボックス要素を持つHTMLテーブルです。 month行(引数type = "2")を表示/非表示にするには、 "year"行(引数type = "1")が常に表示され、最初の表セルに "+"記号が含まれています。私は既に表示/非表示と検証Javascript関数を作成しました。

私はXSLTファイルの作成/整形に助けが必要です。結局、私はまた、記述の月名に月の数値を変換する必要が ありがとう

<row year="2016" type="1" euro="100000000.00"/> 
<row year="2016" type="2" month="1"/> 
<row year="2016" type="2" month="2"/> 
<row year="2016" type="2" month="3"/> 
<row year="2016" type="2" month="4"/> 
<row year="2016" type="2" month="5"/> 
<row year="2016" type="2" month="6"/> 
<row year="2016" type="2" month="7" euro="1000234000.00"/> 
<row year="2016" type="2" month="8"/> 
<row year="2016" type="2" month="9"/> 
<row year="2016" type="2" month="10"/> 
<row year="2016" type="2" month="11"/> 
<row year="2016" type="2" month="12"/> 
<row year="2017" type="1" euro="199996993.00"/> 
<row year="2017" type="2" month="1"/> 
<row year="2017" type="2" month="2"/> 
<row year="2017" type="2" month="3"/> 
<row year="2017" type="2" month="4"/> 
<row year="2017" type="2" month="5"/> 
<row year="2017" type="2" month="6"/> 
<row year="2017" type="2" month="7" euro="125000000.00"/> 
<row year="2017" type="2" month="8"/> 
<row year="2017" type="2" month="9"/> 
<row year="2017" type="2" month="10"/> 
<row year="2017" type="2" month="11"/> 
<row year="2017" type="2" month="12"/> 

ここでそれが行くための最善の方法かどうかわからない私が使用しているコードは、ですが、それは、これまで働いているように思えます

<xsl:for-each select="row"> 
    <xsl:choose> 
     <xsl:when test="@type='1'> 
     <tr> 
      <td align="center"> 
       <xsl:element name="a"> 
       <xsl:attribute name="href">javascript:ToggleYear(<xsl:value-of select="@year"/>)</xsl:attribute> 
       <xsl:attribute name="id">a_<xsl:value-of select="@year"/></xsl:attribute> 
       <xsl:text>+</xsl:text> 
       </xsl:element> 
      </td> 
      <td> 
       ... 
      </td> 
     </tr> 
     </xsl:when> 
    </xsl:choose> 

    <xsl:if test="@type = 2"> 
     <xsl:element name="tr"> 
     <xsl:attribute name="style">display:none</xsl:attribute> 
     <xsl:attribute name="id"><xsl:value-of select="@year"/>_H_<xsl:value-of select="@month"/></xsl:attribute> 

      <td><xsl:text disable-output-escaping="yes">&amp;</xsl:text>nbsp;</td> 
      <td> 
       ... 
      </td> 
     </xsl:element> 
    </xsl:if> 

</xsl:for-each> 
+0

私が思うSO :-)かなり広範な問題、多分あなたはそれはあなたが既に持っているコードを示す編集へようこそ。 –

+0

Thanx Stefan、コードを更新しました –

+1

期待されるHTML出力を表示してください。 –

答えて

0

更新:上記のxsltが動作しています。これは私が作成したhtml出力です。私は今のところそれをこのままにしておきます。

P.S. 出力データとユーザー入力を比較し、JS - > ASP - > XML - > COM - > SQL Server経由でデータを返信するクライアント側JS検証を作成する必要があります。

html output

関連する問題