2012-10-04 7 views
-2

다음은 좋은 예이지만 값을 동적으로 저장할 수있는 방법은 무엇입니까? 설명해 주시겠습니까? XSLT를 사용하여 동적으로 값을 배열에 저장하고 값을 비교하는 방법은 무엇입니까?

<xsl:variable name="countries" select="'EG, KSA, UAE, AG'" /> 
    <xsl:variable name="country" select="'KSA'" /> 
    <xsl:choose> 
     <xsl:when test=" 
     contains(
     concat(', ', normalize-space($countries), ', ') 
     concat(', ', $country, ', ') 
     ) 
    "> 
<xsl:text>IN</xsl:text> 
</xsl:when> 
<xsl:otherwise> 
<xsl:text>OUT</xsl:text> 
</xsl:otherwise> 

는 좀 다른 요구 사항이 .... 좋은 봐. 이걸 들여다 볼 수 있니? bookID로서의 값 0061AB 경우 bookID로서의 동일한 값에 따라 여기
<xml> 
    <test> 
    <BookID> 
     0061AB 
    </BookID> 
    <amount> 
     16 
    </amount> 
    </test> 
    <test> 
    <BookID> 
     0062CD 
    </BookID> 
    <amount> 
     2 
    </amount> 
    </test> 
    <test> 
    <BookID> 
     0061AB 
    </BookID> 
    <amount> 
     2 
    </amount> 
    </test> 
</xml> 

는 I 위 예와 같이 ..... 양의 값을 추가하려면, 다음 양의 값이되어야 18.

+2

질문은 무엇인가 취소하지? 편집하고 원하는 것을 보여주십시오. –

+2

당신은 저급 메커니즘에 관해서 너무 많이 생각하고 있습니다. 변형이 원하는 것을 우리가 설명 할 수 있다면 (그리고 어떤 메커니즘을 쓰고 싶지 않은지), 그러면 XSLT 작성 방법에 훨씬 더 가까워 질 것입니다. –

답변

0

다른 사람들이 언급 한 것처럼 귀하의 질문은 명확하지 않지만 후보 국가 및 검색 목록이 모두 포함 된 XML 문서에서 통화 템플릿을 사용하여 '국가 찾기'알고리즘을 재사용 할 수 있습니다 (document 로드 할 때 후보 및 검색 대상을 별도의 XML 문서로 분할)

예 : XSLT 적용 할 때 다음 XML

<xml> 
    <test> 
    <countries> 
     EG, KSA, UAE, AG 
    </countries> 
    <country> 
     UAE 
    </country> 
    </test> 
    <test> 
    <countries> 
     GBR, USA, DE, JP 
    </countries> 
    <country> 
     AUS 
    </country> 
    </test> 
</xml> 

결과에

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/> 

    <xsl:template match="/xml"> 
    <xsl:apply-templates select="test"/> 
    </xsl:template> 

    <xsl:template match="test"> 
    <xsl:call-template name="FindCountry"> 
     <xsl:with-param name="countries" select="normalize-space(countries/text())"/> 
     <xsl:with-param name="country" select="normalize-space(country/text())"/> 
    </xsl:call-template> 
    </xsl:template> 

    <xsl:template name="FindCountry" xml:space="default"> 
    <xsl:param name="countries" /> 
    <xsl:param name="country" /> 
    Is <xsl:value-of select="$country" /> in <xsl:value-of select="$countries" /> ? 
    <xsl:choose> 
     <xsl:when test="contains(concat(', ', $countries, ', '), 
           concat(', ', $country, ', '))"> 
     <xsl:text>IN</xsl:text> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:text>OUT</xsl:text> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

Is UAE in EG, KSA, UAE, AG ? IN 
Is AUS in GBR, USA, DE, JP ? OUT 
+0

좋아 보인다 ... 나는 다시 이런 요구 조건을 제공하고있다. 의 동일한 값에 따라 여기 0061AB , 난 후, 의 값 0061AB 경우, 상기 예와 같이 ..... 값을 추가 할 값은 18이어야합니다. – Dipta

+0

@Dipta이 새로운 요구 사항을 이해하지 못합니까? 기존 값에 상수 '2'를 추가 하시겠습니까? 이 질문이 원래 질문과 관련이 있습니까? 아니면 새로운 질문입니까? – StuartLC

+0

다시 요구 사항을 추가했습니다 ... 확인하십시오. – Dipta

관련 문제