2012-04-17 2 views
0

xsl (1.0)에서 매개 변수를 전달할 수 없습니다. 'select'의 내용을 동적으로 수정할 수없는 것 같습니다. 사전에xslt apply-template

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output cdata-section-elements="" encoding="UTF-8" indent="yes" method="xml" omit-xml-declaration="yes"/> 
    <xsl:param name="entity">CreditController[]</xsl:param> 
     <xsl:template match="/"> 
      <xsl:element name="variable"> 
        <xsl:attribute name="type">NameValuePair[]</xsl:attribute> 
         <xsl:apply-templates select="variable/*[@type='$entity']/item"/>      
      </xsl:element> 
    </xsl:template> 

    <xsl:template match="item">     
      <xsl:element name="item"> 
      <xsl:attribute name="type">NameValuePair</xsl:attribute> 
      <xsl:element name="value"> 
       <xsl:attribute name="type">String</xsl:attribute> 
       <xsl:value-of select="Code"/> 
      </xsl:element> 
      <xsl:element name="name"> 
       <xsl:attribute name="type">String</xsl:attribute> 
       <xsl:value-of select="Code"/>-<xsl:value-of select="Value"/> 
      </xsl:element> 
      </xsl:element> 
    </xsl:template> 

</xsl:stylesheet> 

감사 : 다음 오류가 발생하지만 $ 엔티티 매개 변수를 인식하는 데 실패하지 않는 시도이다. 다른 게시물은 요소의 'Mode'속성을 사용하고 설정하는 것이 좋습니다. 나는이 중 하나를 가지고 승리하지 못했습니다.

엔터티 변수를 'CreditController []'문자열 리터럴로 바꾸는 것이 예상대로 작동합니다.

+0

당신이 당신의 입력 XML의 샘플을 게시 할 수 :

는 따옴표를 제거? –

+1

그냥'@ type = $ entity'이어야하지 않습니까? '$ entity'를 따옴표로 묶는 것은'$ entity' 문자열입니다. –

+0

아빌라의 대답은 정확하다고 생각합니다. 답으로 받아 들일 수 있도록 입력해야합니다. –

답변

0

XPath에서 $entity을 따옴표로 묶으므로 확장 할 변수가 아닌 $entity 문자열 리터럴이됩니다.

<xsl:apply-templates select="variable/*[@type=$entity]/item"/>