XSLT - 仅选择一组数据

时间:2009-09-24 16:06:29

标签: xslt

需要一些帮助:我想只撤回特定ItemId的结果,所以如果我想要ItemId的唯一数据,我怎样才能调整下面的模板?

我已经尝试了大约2个小时而没有任何运气......

以下是我的XML示例:

1 个答案:

答案 0 :(得分:0)

此Xslt仅使ItemId值等于2075的项目 请注意我添加了[ItemInfo/PeriodAttendanceInfo/ItemId=2075]

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output method="xml" indent="yes"/>

  <xsl:template match="/">
    <xsl:call-template name="dvt_2"/>

  </xsl:template>

  <xsl:template name="dvt_2">
<xsl:variable name="Rows" select="/ArrayOfPeriodAttendanceGroup/PeriodAttendanceGroup[ItemInfo/PeriodAttendanceInfo/ItemId=2075]"/>
    <xsl:variable name="dvt_RowCount" select="count($Rows)"/>
    <xsl:call-template name="dvt_2.rowContents">
      <xsl:with-param name="Rows" select="$Rows"/>
    </xsl:call-template>
  </xsl:template>

  <xsl:template name="dvt_2.rowContents">
    <xsl:param name="Rows"/>
    <xsl:for-each select="$Rows">
      <xsl:sort select="ItemInfo/PeriodAttendanceInfo" order="ascending"/>
      <xsl:call-template name="dvt_2.rowContentsView"/>
    </xsl:for-each>
  </xsl:template>

  <xsl:template name="dvt_2.rowContentsView">

    <xsl:variable name="subjectName" select="ItemInfo/PeriodAttendanceInfo/ItemText"/>
    <tr class="{$subjectName}">
      <xsl:element name="td">
        <xsl:attribute name="class">
          <xsl:value-of select="ItemInfo/PeriodAttendanceInfo/ItemText"/>
        </xsl:attribute>
        <xsl:variable name="subjectID" select="ItemInfo/PeriodAttendanceInfo/ItemId"/>
        <a class="leftAlign" href="../Departments/{$subjectID}">

          <xsl:value-of select="ItemInfo/PeriodAttendanceInfo/ItemText"/>

        </a>
      </xsl:element>
      <td>
        <p class="name">
          <xsl:value-of select="Total"/>
        </p>
      </td>
      <td>
        <p class="name">
          <xsl:value-of select="Present"/>
        </p>
      </td>
      <td>
        <p class="name">
          <xsl:value-of select="Late"/>
        </p>
      </td>
      <td>
        <p class="name">
          <xsl:value-of select="UnauthorisedAbsence"/>
        </p>
      </td>

    </tr>

  </xsl:template>

  <xsl:template name="dvt_1.empty">
    <xsl:variable name="dvt_ViewEmptyText">There is no timetable view for today</xsl:variable>
    <table border="0" width="100%">
      <tr>
        <td class="ms-vb">
          <xsl:value-of select="$dvt_ViewEmptyText"/>
        </td>
      </tr>
    </table>
  </xsl:template>
</xsl:stylesheet>