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

選択した式は、2つの属性のどちらかがソースの最後にある方に一致し、その式の最後にある方には一致しません。

置き換えてみてください:

(@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 に答える