2017-12-20 10 views
1

를 사용하여 XML 노드 값에서 선행 0을 제거하고, 두 조직 반환 계정 세부 정보를, 그러나,이 accountNumber에 추가 앞에 0을 추가 내 코드 그렇게되는 방법 요청 및 응답 계정 번호를 비교할 때 실패합니다. xslt를 사용하여 아래 xml에서 여분의 0을 제거 할 수있는 방법이 있습니까?내가 다른 조직에서 계정 정보를 얻을 수있는 두 개의 호출을하고 내 ENV에서 XSLT

<EAI> 
    <SvcRS> 
     <accountHeader> 
      <errorHost>orgA</errorHost> 
     </accountHeader> 
     <accoutnDetails> 
      <accountNumber>0000000111118800</accountNumber> 
      <accountType>credit</accountType> 
      <errorDetails> 
       <code>111</code> 
       <description>Account is not valid</description> 
      </errorDetails> 
     </accoutnDetails> 
    </SvcRS> 
    <SvcRS> 
     <accountHeader> 
      <errorHost>orgB</errorHost> 
     </accountHeader> 
     <accoutnDetails> 
      <accountNumber>000111118800</accountNumber> 
      <accountType>credit</accountType> 
      <errorDetails> 
       <code>0001</code> 
       <description>Not enough balance</description> 
      </errorDetails> 
     </accoutnDetails> 
    </SvcRS> 
</EAI> 

감사합니다,

+0

/당신이 XSLT의 버전을 사용할 수 있습니다 당신이 사용합니까? 그 'accountNumber' 항상 정수 번호 또는 문자를 포함 할 수 있습니까? –

+0

xslt 1.0 또는 2.0을 사용할 수 있습니다. accountNumber는 항상 정수 값 –

+0

입니다. @kekukeku 형식 번호 기능을 사용할 수 있습니다. 내 대답은 아래를 참조하십시오. –

답변

0
XSLT 2에서

이상 당신이 문자열 연산 (http://xsltfiddle.liberty-development.net/3Nqn5Y3/1)를 가진 앞에 0을 제거하기 위해 xsl:template match="accountNumber"의 맥락에서 replace(., '^0+', '')를 사용하거나 그 변환하여 앞에 0을 제거하는 xs:integer(.)을 사용할 수 있습니다 요소 내부의 값을 정수 (http://xsltfiddle.liberty-development.net/3Nqn5Y3)로 변환합니다.

+0

안녕 체크, 나는 그냥 노드의 속성 값을 얻고, 난 당신이 언급하는 것을 확실하지 않다 완료되지 노드 –

+0

이 샘플에서 내가 입력 '에 링크 된 <이 accountNumber> 0000000111118800는''로 변환 111118800 '입니다. 이것이 귀하가 요청한 대체품입니다. 연결된 스 니펫은 XSLT 2 대신 XSLT 3입니다. 따라서 완전한 XSLT 2 솔루션을 원한다면''를 을',하지만이하는 작업과 관련이 없습니다 계좌 번호를 조작하십시오. –

+0

설명과 예를 들어 주신 Martin에게 감사드립니다. 지금은 XSLT 2로 바꾸고 있습니다. –

2

당신은 아래 format-number 기능을 사용할 수 있습니다

<xsl:value-of select="format-number(.//accountNumber, '#')"/> 

결과 :

111118800