2011-03-11 6 views
2

아래에 라디오 버튼을 생성하는 xslt 코드가 표시 될 수 있습니다. 파이어 폭스와 오페라에서는 작동하지만 arora에서는 작동하지 않습니다 (웹킷 엔진 사용). 간단히 말해서 나는 어떤 다른 브라우저 나는 누군가가 내 문제를 가지고 보지 못했다 웹을 검색 웹킷 엔진webkit 엔진 기반 브라우저의 substring-before() 및 substring-after 문제

<xsl:template name="createRadioButton"> 
     <xsl:param name="list" /><!-- something like : true|false|bla|bla --> 
     <xsl:param name="delimiter" /> <!-- "|" --> 
     <xsl:param name="nameofradio" /> <!-- sampleName --> 
     <xsl:param name="valueofradio" /> <!-- sampleValue --> 
     <xsl:variable name="newlist"> 
       <xsl:choose> 
        <xsl:when test="contains($list, $delimiter)"> 
        <xsl:value-of select="normalize-space($list)" /> 
        </xsl:when> 
        <xsl:otherwise> 
        <xsl:value-of select="concat(normalize-space($list), $delimiter)"/> 
        </xsl:otherwise> 
       </xsl:choose> 
      </xsl:variable> 
      <!-- problem is these two lines. When I assign something else it works.--> 
      <xsl:variable name="first" select="substring-before($newlist, $delimiter)" /> 
      <xsl:variable name="remaining" select="substring-after($newlist, $delimiter)" /> 
      <xsl:element name="input"> 
      <xsl:attribute name="type">radio</xsl:attribute> 
      <xsl:attribute name="name"><xsl:value-of select="$nameofradio"/></xsl:attribute> 
      <xsl:attribute name="value"><xsl:value-of select="$first"/></xsl:attribute> 
      <xsl:choose> 
       <xsl:when test="@hassection='true'"> 
        <xsl:attribute name="onclick">showHiddenTable(this.value);validateFormElement(this.name,this.value);</xsl:attribute>   
       </xsl:when> 
       <xsl:when test="$valueofradio = $first"> 
        <xsl:attribute name="checked">checked</xsl:attribute> 
       </xsl:when> 
       <xsl:otherwise> 
        <xsl:attribute name="onclick">validateFormElement(this.name,this.value)</xsl:attribute>   
       </xsl:otherwise> 
      </xsl:choose> 

      </xsl:element> 
      <xsl:value-of select="$first" /> 
      <xsl:if test="$remaining"> 
       <xsl:call-template name="createRadioButton"> 
        <xsl:with-param name="list" select="$remaining" /> 
        <xsl:with-param name="delimiter"><xsl:value-of select="$delimiter"/></xsl:with-param> 
        <xsl:with-param name="nameofradio"><xsl:value-of select="$nameofradio"/></xsl:with-param> 
        <xsl:with-param name="valueofradio"><xsl:value-of select="$valueofradio"/></xsl:with-param> 
       </xsl:call-template> 
      </xsl:if> 
    </xsl:template> 

를 사용을 시도하지 않았다.

감사합니다.

+0

좋은 질문입니다. +1. 다른 XSLT 프로세서에서 코드가 정상적으로 수행되는지 확인하려면 내 대답을 참조하십시오. –

답변

3

이 변환은 내가 사용하고있는 9 개의 XSLT (1.0 및 2.0 모두) 프로세서를 사용하여 수행했을 때 예상되는 결과를 나타 냈습니다.

나는 다음과 같은 방법으로 템플릿을 호출 오전하기 :

<xsl:template match="/"> 
<table> 
    <xsl:call-template name="createRadioButton"> 
    <xsl:with-param name="list" select="'true|false|bla|bla'"/> 
    <xsl:with-param name="delimiter" select="'|'"/> 
    <xsl:with-param name="nameofradio" select="'Phillips'"/> 
    <xsl:with-param name="valueofradio" select="200"/> 
    </xsl:call-template> 
    </table> 
</xsl:template> 

따라서,이 버그으로 보인다 - 공급 업체에보고.

+0

도와 주셔서 감사합니다. 회신 및 게시물 작업 +1 – savruk

관련 문제