2016-07-21 38 views
1

現在、私は比較する日付になるのが苦労しています。私はPersonを持っていますが、そのPersonにはYYYY-MM-DDというフォーマットの属性があり、その人が死んだ場合(Death < Currentdate)、私はラテン十字を書いています。XSLT比較の日付

私は次のようなアプローチを試みた:

<xsl:if test="@Death &lt;= current-date()">'symbol'</xsl:if> 

をしかし、私は唯一の解析エラーを受け取るには、ブラウザを形成します。私はxmlns:xsl = "http://www.w3.org/1999/XSL/Transform"以外の名前空間を持たないXSLバージョン1.0を使用しています。

どこがエラーですか?

<xsl:if test="@Death"> 

は、テストのために非常に十分なものでなければならない:

+1

'current-date()'はXSLT 2.0では利用可能ですが、XSLT 1.0では利用できません。 – mzjn

+0

"*人が死んでいる場合(死亡<現在)*"将来死亡した人がいますか?**誰のために働いていますか? –

+0

しかし、この構文は機能しますか? @ michael.hor257k熟練していないユーザーがxmlを送信して確認することができるという事実 – Curunir

答えて

0

は、私は信じています。それは、生きている人々が空のDeath属性を持っていない限りです。そのような場合の使用には次のよう

それが将来的にあることが死亡の日のために何を意味するのかの特定のセマンティクスを無視
<xsl:if test="string(@Death)"> 
1

、YYYY-MM-DD形式で日付を比較する一般的な問題を解決することができます。 XSLT 2.0で

  • number(translate($x, '-', '')) < number(translate($x, '-', '')を使用し、XSLT 1.0でxs:date($x) < xs:date($y)

  • を使用します。これは、XSLT 1.0では "<"演算子が数字にのみ適用されるため、ハイフンを取り除いて日付を(無意味だが比較可能な)数値に変換できるためです。