gpt4 book ai didi

c# - XSLT排序,选择next nearest

转载 作者:太空宇宙 更新时间:2023-11-03 14:15:13 27 4
gpt4 key购买 nike

我有以下 XML:

<Users>
<User Id="1">
<Name>Name1</Name>
<LastName>LastName1</LastName>
</User>
<User Id="5">
<Name>Name5</Name>
<LastName>LastName5</LastName>
</User>
<User Id="2">
<Name>Name2</Name>
<LastName>LastName2</LastName>
</User>
<User Id="4">
<Name>Name4</Name>
<LastName>LastName4</LastName>
</User>
<User Id="3">
<Name>Name3</Name>
<LastName>LastName3</LastName>
</User>
</Users>

我需要按姓名排序,然后按姓氏排序,就像在 SQL 中一样:按姓名排序,姓氏升序,然后选择下一个最近的用户(User1、User3、User5),所以输出应该是:

<Users>
<User Id="1">
<Name>Name1</Name>
<LastName>LastName1</LastName>
</User>
<User Id="3">
<Name>Name3</Name>
<LastName>LastName3</LastName>
</User>
<User Id="5">
<Name>Name5</Name>
<LastName>LastName5</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>

但我不知道如何过滤用户。任何帮助表示赞赏。P.S.: 我使用 ASP.NET 3.5

最佳答案

您可以使用这个模板:

<xsl:template match="Users">
<xsl:copy>
<xsl:apply-templates select="User">
<xsl:sort select="Name"/>
<xsl:sort select="LastName"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>

<xsl:template match="User">
<xsl:if test="position() mod 2 = 1">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>

它产生所需的输出:

<Users>
<User Id="1">
<Name>Name1</Name>
<LastName>LastName1</LastName>
</User>
<User Id="3">
<Name>Name3</Name>
<LastName>LastName3</LastName>
</User>
<User Id="5">
<Name>Name5</Name>
<LastName>LastName5</LastName>
</User>
</Users>

关于c# - XSLT排序,选择next nearest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6719313/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com