2011-09-20 1 views
3

나중에 호출 할 수있는 요소 이름을 변수로 저장할 수 있습니까? 예를 들어변수로 저장된 xsl : 요소?

: 그래서 소정의 인자에 기초

<xsl:variable name="element"> 
      <xsl:choose> 
       <xsl:when test="Argument1">strong</xsl:when> 
       <xsl:when test="Argument2">em</xsl:when> 
      </xsl:choose> 
     </xsl:variable> 
     <xsl:element name="{$element}"> 
      <a href="{$url}"> 
       <xsl:value-of select="title"/> 
      </a> 
     </xsl:element> 

, 상기 요소 중 하나 또는 <strong><em>되어야 앵커 태그 감싸한다.

아니면 내가 잘못 접근하고 있습니까?

각 인수에 대한 선택 시점 명령문 내에서 먼 길을 가다가 앵커 태그를 복제하면 작동하지 않는 것 같습니다.

덕분에, 케빈

+0

예, 그런 종류의 접근 방식이 유효합니다. –

답변

1

나는 당신의 게시 샘플이 작동한다고 생각합니다. XSLT 2.0을 사용하면 <xsl:element name="{if (Argument1) then 'strong' else if (Argument2) then 'em' else()}">을 수행 할 수도 있습니다.

1

귀하의 접근 방식은 완전히 유효합니다.

또는 한 개의 템플릿을 사용할 수 있습니다

<xsl:template match="someElement[Argument1]"> 
<strong> 
    <a href="{$url}">     
    <xsl:value-of select="title"/>    
    </a> 
</strong> 
</xsl:template> 

<xsl:template match="someElement[Argument2]"> 
<em> 
    <a href="{$url}">     
    <xsl:value-of select="title"/>    
    </a> 
</em> 
</xsl:template> 

그것은 두 번째 방법이 더 선언적 유연하고 유지 보수라고 주장 할 수있다.