2017-10-31 6 views
0

검색이 있지만 이해할 수있는 답변을 찾는데 어려움이 있습니다. 기본적으로 특정 상황에서 날짜를 오늘과 비교하는 xpath를 사용해야합니다.xpath에서 날짜가 지난 6 개월 동안의 백분율을 계산합니다.

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

내가의 지난 6 개월 이내에 defdate을 얼마나 많은 계정 계산해야합니다

내가 심문하고있어 XML 블록은 여러 계정 기록, 관련 데이터와 아래 한 블록의 발췌 한 예제를 포함 오늘, 그러나 계정이 만족되지 않은 곳에. 그것은 defdate가 존재하고 지난 6 개월 이내에 defsatdate가 존재하지 않는 곳입니다. 계정이 기본값으로 입력되지 않은 경우 섹션이 전혀 표시되지 않습니다.

이 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가 동적으로 실행될 때 (예 : <= today,> = today-6 months) 시스템이 xpath가 실행될 때 시스템 날짜를 어떻게 보는지? 그것은 검색이 실행될 시스템에 종속적입니까, 아니면 today()에 대한 xpath 함수가 있습니까? – Rebecca

+0

적어도 xpath 1.0은 그렇게 할 수 없습니다. 나는 날짜를 정수로 정렬하기 위해 트릭을 사용한다. 프로그램 언어를 사용하여 날짜를 설정해야합니다. 어렵지 않다 – splash58

+0

대단히 감사합니다.이 경우가 될 수도 있다고 생각했습니다. – Rebecca