2017-11-22 2 views
2

내 xml 파일이 this-나는 XSLT

<?xml version="1.0" encoding="UTF-8"?> 
    <root> 
    <old> 
    <Address> 
     <code>1</code> 
    </Address> 
    <Address> 
     <code>2</code> 
    </Address> 
    <Address> 
     <code>3</code> 
    </Address> 
    <Address> 
     <code>4</code> 
    </Address> 
    </old> 
    <new> 
    <Address> 
     <code>1</code> 
    </Address> 
    <Address> 
     <code>2</code> 
    </Address> 
    <Address> 
     <code>5</code> 
    </Address> 
    </new> 
    </root> 

과 같은 두 가지 루프의 값을 비교해야하고 나는 새/주소/코드와 그 반대로 구/주소/코드를 비교해야합니다. 값이 일치하면 연결해야합니다. 그렇지 않으면 그대로 인쇄하십시오. 그래서 최종 출력은 다음과 같습니다 당신이 간단한 (그리고 Address/old의 원래 순서가 중요하지 않은 것으로 추정), 잊고 싶은 경우

<City> 
    <countryCode>1122345</countryCode> 
    </City> 
+0

xslt 1.0 또는 2.0 – Rupesh

+0

@Rupesh xslt 1.0에서 구현해야합니다. –

답변

0

XSLT 에서 2.0

<xsl:template match="root"> 
    <City> 
     <countryCode> 
      <xsl:choose> 
       <xsl:when test="deep-equal(old/*, new/*)"> 
        <xsl:value-of select="old//code"/> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:for-each select="//code"> 
         <xsl:sort select="."/> 
        <xsl:value-of select="."/> 
        </xsl:for-each> 
       </xsl:otherwise> 
      </xsl:choose> 
     </countryCode> 
    </City> 
</xsl:template> 
0

을 시도 할 수 있습니다 비교에 대해, 대신 그들을 Address/oldAddress/new에서 모든 code을 연결하고 분류 :

<xsl:template match="root"> 
    <City> 
     <countryCode> 
      <xsl:for-each select="(old|new)/Address/code"> 
       <!-- or, if you like it really dirty: //code --> 
       <xsl:sort/> 
       <xsl:apply-templates/> 
      </xsl:for-each> 
     </countryCode> 
    </City> 
</xsl:template> 
,536,

이 예제에서는 원하는 결과를 얻을 수 있으며 XSLT 1.0에서 작동합니다.