質問

私がそれぞれるループ丸のニュース項目を選択します。その他の特性をこれらのニュース項目にて属性のために作成されます。システム日時、ユーザの入力を作成した日時(オーバーライドシステムです。していきたいと思いますリストの順にソートを作成日の設定は、ユーザ入力します。

以下が私の謙虚無効う!

<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" />
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top