2012-10-24 2 views
1

초보자입니다. I는 방법 상기에서 결과를 필터링하는 데 사용되는 파라미터가 상기 출력은 다음과 같이되어야XSLT 특정 값 목록 템플릿 적용

<xsl:param name="filterType" select="'A,C'"/> 

아래로는

<Options> 
    <Option> 
     <Data>Data1</Data> 
     <Type>A</Type> 
    </Option> 
    <Option> 
     <Data>Data2</Data> 
     <Type>B</Type> 
    </Option> 
    <Option> 
     <Data>Data3</Data> 
     <Type>C</Type> 
    </Option> 
    <Option> 
     <Data>Data4</Data> 
     <Type>D</Type> 
    </Option> 
    ... 
</Options> 

아래로

내 소스 XML은 다음

<Result> 
    <Data Type="A">Data1<Data> 
    <Data Type="C">Data3<Data> 
</Result> 

내가 만든 XSLT는 다음과 같습니다.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:param name="filterType" select="'A,C'"/> 
    <xsl:template match="Options"> 
     <xsl:element name="Result"> 
     <xsl:apply-templates select="Option"/> 
     </xsl:element> 
    </xsl:template? 

    <xsl:template match="Option"> 
     <xsl:element name="Data"> 
      <xsl:attribute name="Type"> 
       <xsl:value-of select="Type"/> 
      </xsl:attribute> 
      <xsl:value-of select="Data"/> 
     </xsl:element> 
    </xsl:template? 
</xsl:stylesheet> 

'Option' 태그에 템플릿을 적용하는 동안 filterType을 사용해야합니다. 어떻게 할 수 있습니까? 도와주세요.

답변

2

나는 :) 당신은 단순히

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 

    <xsl:param name="filterType" select="'A,C'"/> 

    <xsl:variable name="filter" select="concat(',', $filterType, ',')"/> 

    <xsl:template match="Options"> 
     <Result> 
     <xsl:apply-templates select="Option[contains($filter, concat(',', Type, ','))]"/> 
     </Result> 
    </xsl:template> 

    <xsl:template match="Option"> 
     <Data Type="{Type}"> 
     <xsl:value-of select="Data"/> 
     </Data> 
    </xsl:template> 

</xsl:stylesheet> 
+0

감사 작동합니다 생각 –