Как я могу определить переменную XSL и назначить значение в xsl: выбрать - PullRequest
4 голосов
/ 29 сентября 2011

Я хочу определить переменную с именем 'category' в XSL, присвоить ей значение и повторно использовать эту переменную в моем коде.если objecttype = 1, значение переменной должно быть 'car', если objecttype = 2, значение переменной должно быть 'bus'

Как этого добиться?

<xsl:template match="/">
<html>
<head><style type="text/css">body{font-size:11px;font-family:Verdana;}</style></head>
<body>
Dear
<xsl:for-each select="user">
<xsl:value-of select="firstname"/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
<xsl:if test="middlename != ''"> 
<xsl:value-of select="middlename"/><xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:value-of select="user/lastname"/>,<br/>
<br/>
You have created a company listing for "<xsl:value-of select="user/objecttitle"/>".<br/>
<br/>
Did you know Google uses the number of Facebook 'likes' for webpages in its rankings?<br/>
You can like you page here: 
<xsl:for-each select="user"> 
<xsl:variable name="category"> 
    <xsl:choose> 
        <xsl:when test="objecttype='1'">car</xsl:when> 
        <xsl:when test="objecttype='2'">bus</xsl:when> 
    </xsl:choose> 
</xsl:variable> 
</xsl:for-each> 
<a href="http://www.mydomain.com/{$category}/{user/objectid}/{user/objecturl}">Click here to go to your company listing now.</a><br/>
Kind regards,<br/>
<br/>
<br/>
</body>
</html>
</xsl:template>

1 Ответ

5 голосов
/ 29 сентября 2011

Это распространенная ошибка для новичков XSL. Правильный подход:

<xsl:variable name="category">
  <xsl:choose>
    <xsl:when test="objecttype='1'">car</xsl:when>
    <xsl:when test="objecttype='2'">bus</xsl:when>
    ... etc
  </xsl:choose>
</xsl:variable>

В вашем примере переменная является локальной для тега <xsl:when...>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...