代码之家  ›  专栏  ›  技术社区  ›  Jules Colle

xslt:我可以全局声明一个变量,然后给它赋值吗?

  •  21
  • Jules Colle  · 技术社区  · 14 年前

    我该怎么做才能使这个代码工作?

    <xsl:choose>
      <xsl:when test='type = 6'>
        <xsl:variable name='title' select='root/info/title' />
      </xsl:when>
      <xsl:when test='type = 7'>
        <xsl:variable name='title' select='root/name' />
      </xsl:when>
      <xsl:otherwise>
        <xsl:variable name='title'>unknown</xsl:variable>
      </xsl:otherwise>
    </xsl:choose>
    
    <div class='title'>
      <xsl:value-of select='$title'/>
    </div>
    

    这不管用,因为当我这样做的时候 <xsl:value-of select='$title'/> , $title 超出范围。我试着加了一行 <xsl:variable name='title'/> 超出范围,但也不起作用,因为当我打电话时 <xsl:variable name='title' select='root/info/title' /> 例如,我以前已经设置了这个变量。我应该如何解决这个问题?

    5 回复  |  直到 7 年前
        1
  •  29
  •   carols10cents    14 年前

    <xsl:variable name="title">
      <xsl:choose>
        <xsl:when test='type=6'>
          <xsl:value-of select="root/info/title" />
        </xsl:when>
        ...
      </xsl:choose>
    </xsl:variable>
    
    <div class='title'>
      <xsl:value-of select="$title" />
    </div>
    
        2
  •  11
  •   Dimitre Novatchev    14 年前
    <xsl:choose> 
      <xsl:when test='type = 6'> 
        <xsl:variable name='title' select='root/info/title' /> 
      </xsl:when> 
      <xsl:when test='type = 7'> 
        <xsl:variable name='title' select='root/name' /> 
      </xsl:when> 
      <xsl:otherwise> 
        <xsl:variable name='title'>unknown</xsl:variable> 
      </xsl:otherwise> 
    </xsl:choose> 
    
    <div class='title'> 
      <xsl:value-of select='$title'/> 
    </div> 
    

    $title

    <xsl:variable name="vTitle">
        <xsl:choose>
          <xsl:when test='type = 6'>
            <xsl:value-of select='root/info/title' />
          </xsl:when>
          <xsl:when test='type = 7'>
            <xsl:value-of  select='root/name' />
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="'unknown'"/>
          </xsl:otherwise>
        </xsl:choose>
    </xsl:variable>
    

    <xsl:variable name="vTitle2" select=
    "concat(root/info/title[current()/type=6],
            root/name[current()/type=7],
            substring('unknown', 1 div (type > 7 or not(type > 5)))
           )
    "/>
    

    <xsl:variable name="vTitle3" as="xs:string" select=
     "if(type eq 6)
        then root/info/title
        else if(type eq 7)
                then root/name
                else 'unknown'
     "/>
    
        3
  •  3
  •   David Oliver gustavohenke    12 年前

    xsl:variable

    <xsl:variable name='title'>
      <xsl:choose>
        <xsl:when test='type = 6'>
          <xsl:value-of select='root/info/title' />
        </xsl:when>
        <xsl:when test='type = 7'>
          <xsl:value-of select='root/name' />
        </xsl:when>
        <xsl:otherwise>
          <xsl:text>unknown</xsl:text>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    
        4
  •  1
  •   user357812    14 年前

    <xsl:variable name="title"> 
        <xsl:apply-templates select="type" mode="title"/> 
    </xsl:variable>
    
    <xsl:template match="type[.=6]" mode="title"> 
        <xsl:value-of select='../root/info/title"/> 
    </xsl:template> 
    <xsl:template match="type[.=7]" mode="title"> 
        <xsl:value-of select='../root/name"/> 
    </xsl:template> 
    <xsl:template match="type" mode="title"> 
        <xsl:text>unknown</xsl:text> 
    </xsl:template>
    
        5
  •  -1
  •   Donald Duck abhilash-ram    7 年前

    xsl:desult /temp_variables_loop/loop-data-id_(position()).xml

    temp_variables_loop.alias/loop-data-id_(position()-1).xml

    /temp_variables_loop temp_variables_loop.alias