2009-03-18 5 views
0

안녕하세요, XML 노드의 특정 속성과 일치하는 이상한 문제가 있습니다. 작업 나던 예제 코드 : 작업을 수행XSLT foreach

<xsl:for-each select="../../unit/service/price/season[@name=$period_name]"> 
    <xsl:attribute name="std_bed_price"> 
      <xsl:value-of select="../@amount"/> 
    </xsl:attribute> 
</xsl:for-each> 

예제 코드하지만 난 너무 많은이 방법을 좋아하지 않는다 :

<xsl:for-each select="../../unit/service/price/season"> 
    <xsl:if test="@name = $period_name"> 
      <xsl:attribute name="std_bed_price"> 
       <xsl:value-of select="../@amount"/> 
      </xsl:attribute> 
    </xsl:if> 
</xsl:for-each> 

첫 번째 예에서 나는 몇 가지 변수 이름을 교체하는 경우 'A'와 같은 값, 또한 어떤 변수 이름을 선택했는지 테스트 했으므로 올바른 데이터가 들어 있습니다. (그래서 'A', B ','C '...)

누구나이 문제가있었습니다. 전에?

tnx

+0

당신을위한 기술 동작을 생성하는 XML 조각을 게시하시기 바랍니다. – Tomalak

+0

XSLT에 어떤 언어와 프레임 워크를 사용하고 있습니까? 아니면이 작업이 브라우저에서 수행되고 있습니까? – Eddie

+0

$ period_name 변수는 어떻게 설정됩니까? – Stobor

답변

0

본 적이 없습니다. 모호한 @name 속성 일 수 있습니까? 따라서 아래와 같이 액세스 해보십시오.

select="../../unit/service/price/season[./@name=$period_name] 

미안하지만 나에게 완벽하게 양방향으로 작동해야합니다.

3

foreach 대신 apply-templates로 변경해보십시오. 다음과 같은 것이 효과가있다.

<xsl:template match="price"> 
    <xsl:attribute name="std_bed_price"> 
     <xsl:value-of select="@amount" /> 
    </xsl:attribute> 
</xsl:template> 

후 원하는 전화 :

<xsl:apply-template select="../../unit/service/price/[season/@name=$period_name]" />