我可以使用名称并与XSL模板匹配吗?

时间:2016-03-23 13:18:51

标签: xml xslt-1.0

Snippet XML:

  <Time StartTime12="7:33" StartTime24="19:33" EndTime12="7:41" EndTime24="19:41">8 நிமி.</Time>

Snippet XSL(模板):

  <xsl:template match="Time">
    <td class="cellTime">
      <xsl:value-of select="@EndTime24"/>
    </td>
  </xsl:template>

使用:

调用
<xsl:apply-templates select="Time"/>

我已将结束时间的显示放入模板方法中,以便我可以轻松将其更改为 EndTime12 。然后我只需编辑一位就可以从24h更改为12h。

但是,我的时间对象包含两次,如您所见。目前这不是一个问题,因为我想做的就是显示结束时间。但是,如果我想在另一个单元格中显示报告的开始时间......问题。

我尝试的是:

  <xsl:template name="EndTime" match="Time">
    <td class="cellTime">
      <xsl:value-of select="@EndTime24"/>
    </td>
  </xsl:template>

没用。有两种方法的正确方法是什么,既可以使用时间对象,也可以用于显示开始时间属性,另一种用于显示结束时间属性?

谢谢。

1 个答案:

答案 0 :(得分:0)

我注意到我需要使用模式功能。

  <!--Display the end time (using 24 hour format)-->
  <xsl:template match="Time" mode="End">
    <td class="cellTime">
      <xsl:value-of select="@EndTime24"/>
    </td>
  </xsl:template>

  <!--Display the start time (using 24 hour format)-->
  <xsl:template match="Time" mode="Start">
    <td class="cellTime">
      <xsl:value-of select="@StartTime24"/>
    </td>
  </xsl:template>

然后用:

调用它
<xsl:apply-templates match="Time" mode="Start"/>
<xsl:apply-templates match="Time" mode="End"/>