Условная сортировка XSLT

У меня следующий XML:

<Users>
  <User Id="1">
    <Name>abc</Name>
    <LastName>d</LastName>
  </User>
  <User Id="2">
    <Name></Name>
    <LastName>ab</LastName>
  </User>
  <User Id="3">
    <Name>a</Name>
    <LastName>efg</LastName>
  </User>
</Users>

Теперь я сортирую пользователей, используя следующий шаблон:

<xsl:template match="Users">
  <Users>
    <xsl:for-each select="User">
      <xsl:sort select="Name"/>
      <xsl:sort select="LastName"/>

      <User>
        <xsl:attribute name="Id">
          <xsl:value-of select="attribute::Id"/>
        </xsl:attribute>
        <Name>
          <xsl:value-of select="Name"/>
        </Name>
        <LastName>
          <xsl:value-of select="LastName"/>
        </LastName>
      </User>
    </xsl:for-each>
  </Users>
</xsl:template>

Но мне нужна сортировка, которая удовлетворяет следующему условию: Сортировать по имени. Если имя пустое или пустое, мне нужно отсортировать по фамилии. Таким образом, в создаваемом XML мне нужен следующий порядок: User3, User2, User1.

Любая помощь приветствуется.

P.S .: Я использую ASP.NET 3.5

5
задан 16 July 2011 в 18:47
поделиться