2017-10-31 10 views
0

私は検索しましたが、わかっている/使用できる答えを見つけるのに苦労しています。基本的には、特定の状況で日付を今日と比較するxpathを使用する必要があります。xpathで日付が過去6か月間であるケース数

私が尋問だXMLブロックは、複数のアカウントレコードが含まれ、関連するデータと、以下の1つのブロックの抜粋例:

<acc> 
    <default> 
    <defdate>2017-07-01</defdate> 
    <defsatdate>2017-09-01</defsatdate> 
    </default>  
</acc> 

私は最後の6ヶ月以内にdefdateを持っているどのように多くのアカウントカウントする必要があります今日は、アカウントが満足されていない場所です。それは脱退日が存在し、過去6ヶ月以内であり、脱落日は存在しません。 (アカウントがデフォルトになっていない場合は、セクションは表示されません)。

このxpathはライブ環境で実行されるため、日付部分は動的であり、xpathで修正できるのではなく、今日のものを解決する必要があることに注意してください。

したがって、上記の例では、口座は過去6ヶ月以内にデフォルトになりましたが、それでも満足しました。それで、それは私のカウントには入りません。

私は翻訳機能などを見てきましたが、まだ非常に初心者であり、とても苦労しています!

答えて

0
count(//acc[not(.//defsatdate) and 
      translate(.//defdate, '-','') <= '20171031' and 
      translate(.//defdate, '-','') >= '20170331']) 

(改行読みやすくするために追加されます)

必要に応じて説明

//acc[not(.//defsatdate)  - find `acc` without `defsatdate` 
translate(.//defdate, '-','') - remove dash from the string 
+0

このために非常に多くのおかげで、うまくいけば、これは私が何とかやることを望んだ、クエリの一部に役立ちますxpathがオンライン環境で実行されるように動的に日付の比較を行います(つまり、xpathが実行された時点でシステムが何らかの形でシステム日付を調べる<= today、> = today-6 months)。これは、検索が実行されるシステムに依存するのでしょうか、またはtoday()のxpath関数がありますか? – Rebecca

+0

少なくとも、xpath 1.0はそうすることができません。私は日付を日付に変換し、日付に変換します。プログラム言語を使用して日付を設定する必要があります。それは難しくありません – splash58

+0

大変ありがとう私はこれが事実かもしれないと思った – Rebecca

関連する問題