2016-11-11 7 views
2

인증서와 그 속성을 포함하는 xml이 있습니다. 다음은 추출 쿼리를 실행하는 XML입니다.XPath2 : string()의 첫 번째 인수로 두 개 이상의 항목 시퀀스가 ​​허용되지 않습니다.

<Certificates> 
    <CertificateAndChain> 
     <Certificate> 
      <FriendlyName /> 
      <Thumbprint>EE8B375347FCADDC25547FDDF61866E07D5B6A71</Thumbprint> 
      <SerialNumber>256BB11DB5BE889E46EBCD85608DA849</SerialNumber> 
      <Version>3</Version> 
      <SignatureAlgorithm>sha1RSA</SignatureAlgorithm> 
      <Issuer>CN=certname</Issuer> 
      <Subject>CN=certname</Subject> 
      <NotAfter>2040-09-26T18:30:00Z</NotAfter> 
      <NotBefore>2016-09-27T18:30:00Z</NotBefore> 
      <IsVerified>false</IsVerified> 
     </Certificate> 

. (계속) ...

나는이 xml에 대해 다음 10 일간 만료 될 모든 인증서의 지문을 추출해야하는 또 다른 테스트를 작성했습니다.

<XPath2ResponseParameter Name="TPName"><ExtractionQuery><![CDATA[string(//CertificateAndChain/Certificate[NotAfter[text() <= (current-dateTime() + xs:dayTimeDuration('P10D'))]]/Thumbprint)]]></ExtractionQuery></XPath2ResponseParameter> 

테스트뿐만 아니라 XML 파일에 있습니다로 테스트의 일환으로, 나는 추출 쿼리를 작성했습니다. 그러나 테스트를 실행할 때이 예외가 발생합니다. string()의 첫 번째 인수로 두 개 이상의 항목 시퀀스가 ​​허용되지 않습니다. XML에 여러 인증서 요소가 있기 때문에 이러한 현상이 발생할 수 있습니다. 그래서, 언급 한 조건을 만족하지 못하는 모든 지문을 추출하는 방법을 찾지 못했습니다 (1 개 이상있을 수 있고 모두 추출해야합니다)

누구든지 해결하도록 도와 줄 수 있습니까?

답변

0

XPath 2.0을 사용할 때 축에서 함수를 호출 할 수 있습니다. 그래서, 내부의 XPath의 끝 string() 기능을 이동하려고 (읽기 쉽도록 포맷) :

//CertificateAndChain 
/Certificate[ 
    NotAfter[ 
     text() <= (current-dateTime() + xs:dayTimeDuration('P10D')) 
    ] 
]/Thumbprint 
/string() 

UPDATE :

CDATA가에 따라, 이러한 맥락에서 여러 문자열을받을 수 없기 때문에 첫 번째 의견에 오류 메시지, 당신은 아마도 string-join()를 사용하여, 하나에 그 문자열을 결합해야합니다!

string-join(
    //CertificateAndChain 
    /Certificate[ 
     NotAfter[ 
      text() <= (current-dateTime() + xs:dayTimeDuration('P10D')) 
     ] 
    ]/Thumbprint 
    /string() 
,' ') 
+0

<[CDATA [// 진단서 [/ ExtractionQuery] 나는 당신을 시도했다. 해. 그러나 그것은 잘 풀리지 않았다. CDATA는 returntype이 string 이길 기대합니다. 이 전제를 깨뜨리지 않았 으면 좋겠다. – user2549046

+0

나는 이것을 시도했다 : ... ","97AC511293A4207F2A8875B07B6928 ... ", ...) – user2549046

+0

@ user2549046 참조 ** 업데이트 ** 섹션 .. – har07