質問
私がそれぞれるループ丸のニュース項目を選択します。その他の特性をこれらのニュース項目にて属性のために作成されます。システム日時、ユーザの入力を作成した日時(オーバーライドシステムです。していきたいと思いますリストの順にソートを作成日の設定は、ユーザ入力します。
以下が私の謙虚無効う!
<xsl:for-each select="$currentPage/ancestor-or-self::node /node [@nodeTypeAlias = $documentTypeAlias and string(data [@alias='umbracoNaviHide']) != '1']">
<xsl:choose>
<xsl:when test="data [@alias = 'createdDate'] != ''">
<xsl:variable name="sort" select="string(data [@alias = 'createdDate'])"/>
</xsl:when>
<xsl:otherwise>
<xsl:variable name="sort" select="string(@createDate)"/>
</xsl:otherwise>
</xsl:choose>
<xsl:sort select="$sort" order="descending"/>
多くん
解決
<xsl:sort select="(data[@alias='createdDate' and normalize-space() != '']|@createDate)[last()]" order="descending" />
この計算書を作成しnodesetのノードを含む日、最後には、文書のために。の場合 データ ノードが存在しない空るとともに、それらを利用した選別が子要素の要素の後に発生する属性ノード。
concat()できるだけ、といくつかのケースを使いたい場合、ソートテキスト;で表示して失敗す数値です。
他のヒント
右、ハックのように思えるが、私は、ソートと連結を使用することによって、これを達成することができました。
以下例
<xsl:for-each select="$currentPage/ancestor-or-self::node /node [@nodeTypeAlias = $documentTypeAlias and string(data [@alias='umbracoNaviHide']) != '1']">
<xsl:sort select="concat(data [@alias = 'createdDate'],@createDate)" order="descending"/>
ノードはXSLTに空の(または省略)かどうかをテストするには、次の
<xsl:when test="not(string(name))">...</xsl:when>
<!-- or -->
<xsl:when test="not(name)">...</xsl:when>
彼の解決のためのErlockに
感謝します。私が原因Umbraco XSLT構文に加えられた変更にUmbraco(4.7.1)の私のバージョンではこの作業を取得するためにしばらく苦労しました。
興味がある人のために、私のワーキングサンプルになるErlockのコードを変更します。
<xsl:sort select="(current()/createdDate[normalize-space() != '']|@createDate)[last()]" order="descending" />
所属していません StackOverflow