2011-09-06 4 views
0

XML 파일이 있습니다. XML로 변환하려고합니다.XML 태그에서 XSL 변수 사용

<VALUE name="$varname"><xsl:value-of select="@value"/></VALUE> 

내가 이런 식으로 뭔가있어 :

<xsl:for-each select="PRODTABLE/PRODTR"> 
    <xsl:variable name="varname"> 
     <xsl:copy-of select="PRODTD/PRAT/@name"/> 
    </xsl:variable> 

    <VALUE name="$varname"> 
     <xsl:value-of select="PRODTD/PRAT/VALUE"/> 
    </VALUE> 

</xsl:for-each> 

그러나 분명히 작동하지 않습니다 그리고 나는 이런 식으로 뭔가 될 수 있도록 동적으로 XML 태그의 이름 매개 변수를 설정해야합니다. 이것을 달성 할 수있는 방법이 있습니까?

답변

3

FAQ입니다.

빠른 대답 : name="$varname"으로 지정된 속성 값은 문자 그대로 "$ varname"문자열입니다.

동적으로 계산 된 값을 갖는 속성을 생성하도록 XSLT 방식 중 하나가 AVT (Attribute Value Template) 또는 <xsl:attribute> 명령을 사용하는 것이다.

솔루션 :

사용 :

<VALUE name="{$varname}"> 

귀하의 코드는이 짧은 방법에 다시 기록 될 수 :

대신 :

<xsl:for-each select="PRODTABLE/PRODTR"> 
     <xsl:variable name="varname"> 
      <xsl:copy-of select="PRODTD/PRAT/@name"/> 
     </xsl:variable> 
     <VALUE name="$varname"> 
      <xsl:value-of select="PRODTD/PRAT/VALUE"/> 
     </VALUE> 
    </xsl:for-each> 

사용 :

<xsl:for-each select="PRODTABLE/PRODTR"> 
     <VALUE name="{PRODTD/PRAT/@name}"> 
      <xsl:value-of select="PRODTD/PRAT/VALUE"/> 
     </VALUE> 
    </xsl:for-each>