如何使用 XSLT 向 table 添加额外的一行?
How to add one extra row to the table using XSLT?
我们有 ASP.NET 应用程序并使用生成 table 的 XSLT,其结构如下所示:
<xsl:template match="Tickets2/Item">
<tr class="tdNewDesign">
<xsl:choose>
<xsl:when test="OddEven = 'Odd'">
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Seats" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatType" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="RowNumber" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatNumber" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Price" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<input type="checkbox" name="Ticket">
<xsl:attribute name="value">
<xsl:value-of select="TicketID" />
</xsl:attribute>
<xsl:if test="Selected = 'checked'">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA; border-right: 1px dashed #AAA;">
<xsl:choose>
<xsl:when test="ReservType = 1">
<xsl:value-of select="Price*ReservAmount*0.01" />руб.
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ReservInfo" />
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:when>
<xsl:when test="OddEven = 'Even'">
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Seats" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatType" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="RowNumber" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatNumber" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Price" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<input type="checkbox" name="Ticket">
<xsl:attribute name="value">
<xsl:value-of select="TicketID" />
</xsl:attribute>
<xsl:if test="Selected = 'checked'">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA; border-right: 1px dashed #AAA;">
<xsl:choose>
<xsl:when test="ReservType = 1">
<xsl:value-of select="Price*ReservAmount*0.01" />руб.
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ReservInfo" />
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:when>
</xsl:choose>
</tr>
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:template>
我试图在所有生成的行之后添加一个不可见的额外行,但它是在每一行之后添加的,这意味着不可见行的数量与可见行的数量相同。
如何让它发挥作用?
您想检查您是否是最后一个 <Item>
,如果是,则添加不可见行。
<xsl:if test="not(following-sibling::Item)">
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:if>
由于您的模板是 运行 for Tickets2/Item
,它将在 Item
之后添加不可见的行。制作另一个 运行 在 Tickets2
上的模板,运行 是儿童模板,然后添加不可见的行。
按照:
<xsl:template match="Tickets2>
<xsl:apply-templates />
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:template>
我们有 ASP.NET 应用程序并使用生成 table 的 XSLT,其结构如下所示:
<xsl:template match="Tickets2/Item">
<tr class="tdNewDesign">
<xsl:choose>
<xsl:when test="OddEven = 'Odd'">
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Seats" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatType" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="RowNumber" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatNumber" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Price" />
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA;">
<input type="checkbox" name="Ticket">
<xsl:attribute name="value">
<xsl:value-of select="TicketID" />
</xsl:attribute>
<xsl:if test="Selected = 'checked'">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>
</td>
<td bgcolor="#FFFFFF" class="text" style="border-left: 1px dashed #AAA; border-right: 1px dashed #AAA;">
<xsl:choose>
<xsl:when test="ReservType = 1">
<xsl:value-of select="Price*ReservAmount*0.01" />руб.
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ReservInfo" />
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:when>
<xsl:when test="OddEven = 'Even'">
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Seats" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatType" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="RowNumber" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="SeatNumber" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<xsl:value-of select="Price" />
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA;">
<input type="checkbox" name="Ticket">
<xsl:attribute name="value">
<xsl:value-of select="TicketID" />
</xsl:attribute>
<xsl:if test="Selected = 'checked'">
<xsl:attribute name="checked">checked</xsl:attribute>
</xsl:if>
</input>
</td>
<td bgcolor="#fcfae0" class="text" style="border-left: 1px dashed #AAA; border-right: 1px dashed #AAA;">
<xsl:choose>
<xsl:when test="ReservType = 1">
<xsl:value-of select="Price*ReservAmount*0.01" />руб.
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ReservInfo" />
</xsl:otherwise>
</xsl:choose>
</td>
</xsl:when>
</xsl:choose>
</tr>
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:template>
我试图在所有生成的行之后添加一个不可见的额外行,但它是在每一行之后添加的,这意味着不可见行的数量与可见行的数量相同。
如何让它发挥作用?
您想检查您是否是最后一个 <Item>
,如果是,则添加不可见行。
<xsl:if test="not(following-sibling::Item)">
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:if>
由于您的模板是 运行 for Tickets2/Item
,它将在 Item
之后添加不可见的行。制作另一个 运行 在 Tickets2
上的模板,运行 是儿童模板,然后添加不可见的行。
按照:
<xsl:template match="Tickets2>
<xsl:apply-templates />
<tr class="tdNewDesign" style="display: none;">
<td>A</td>
<td>B</td>
<td>C</td>
<td>D</td>
</tr>
</xsl:template>