0

我试图在 PublishingStartDate 之前对我的结果进行排序,如果此日期未设置,则由 Modified 设置。

到目前为止我写的是这个

<xsl:for-each select="$Rows">
    <xsl:sort order="descending" select="ddwrt:FormatDateTime(string((@Modified|@PublishingStartDate[normalize-space() != ''])[last()]) ,1043 ,'yyyyMM')"/>

但它所做的是它总是按 Modified 属性排序。你能告诉我我做错了什么吗?

谢谢。

EDIT1:输入 XML,希望按 PublishingStartDate 降序排序

<dsQueryResponse>
<Rows>
    <Row PublishingStartDate="13-1-2013 0:00:00" Modified="2012-12-07 09:35:16">
</Rows>

4

2 回答 2

0

您的选择表达式将匹配源中最后出现的两个属性中的任何一个,而不是该表达式中最后出现的那个。

尝试更换:

(@Modified|@PublishingStartDate[normalize-space() != ''])[last()])

(@Modified[not(../@PublishingStartDate[normalize-space() != ''])]|@PublishingStartDate[normalize-space() != ''])
于 2012-12-07T10:18:13.777 回答
0

使用 Flynn1179 我能够运行它,更正的 xslt 在这里

<xsl:sort order="descending" select="ddwrt:FormatDateTime(string((@Modified[not(../@PublishingStartDate[normalize-space() != ''])]|@PublishingStartDate[normalize-space() != ''])) ,1043 ,'yyyyMM')"/>
于 2012-12-07T11:46:36.713 回答