XSLT嵌套格式分组

时间:2016-10-17 17:05:35

标签: xml xslt

我是XSLT的新手。我有一个经典的ASP页面,通过自定义COM对象获取xml文件。这是文件结构:

第一行包含与年份相关的值(参数类型=" 1"),包含12个包含月度数据的行(参数类型=" 2"),依此类推x年。 我需要创建的输出是一个带有文本框元素的HTML表,我可以显示/隐藏月份记录,并根据用户输入和xml数据进行一些客户端验证。 "年"行(参数类型=" 1")始终可见,并包含" +"在第一个表格单元格中签名以显示/隐藏月份行(参数类型=" 2")。我已经创建了显示/隐藏和验证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>

1 个答案:

答案 0 :(得分:0)

更新:上面的xslt正在运行,这里是我创建的html输出。我现在就这样离开。

P.S。 现在我必须创建一些客户端JS验证来比较输出数据和用户输入,并通过JS发送回数据 - &gt; ASP - &gt; XML - &gt; COM - &gt; SQL Server,但我似乎已经开始工作了:))

html output