1

我定义的变量是作为字符串传递的,而不是传播值。

资源

<?xml version="1.0"?>
<results>
    <result>
        <title_id>
            123456
        </title_id>
        <product_id>
            2
        </product_id>
        <track_id>
            5
        </track_id>
    </result>
</results>

XSL

<html xsl:version="1.0"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
     xmlns="http://www.w3.org/1999/xhtml">

 <body>
 <table border="1" cellpadding="4" cellspacing="0">
 <tr bgcolor="#fb0006" align="center">
  <td><b>Link</b></td>
</tr>

 <xsl:for-each select="//results/result">

 <xsl:variable name="titlevar" select="title_id" />
 <xsl:variable name="productvar" select="product_id" />
 <xsl:variable name="trackvar" select="track_id" />


 <tr>
  <td><a href="{concat('http://www.myaddress/', '$titlevar', '-', '$productvar', '/?', '$trackvar')}" target="_blank">link</a></td>
 </tr>

 </xsl:for-each>

 </table>
 </body>
 </html>

输出:http://www.myaddress/$titlevar-$productvar/?$trackvar我想要的是:http://www.myaddress/123456-5/?2. 我尝试过各种括号、撇号和语音标记。谁能看到它为什么不起作用?

4

2 回答 2

2

变量引用周围不应有引号。还要注意normalize-space().

这有效:

<html xsl:version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns="http://www.w3.org/1999/xhtml">

  <body>
    <table border="1" cellpadding="4" cellspacing="0">
      <tr bgcolor="#fb0006" align="center">
    <td><b>Link</b></td>
      </tr>

      <xsl:for-each select="//results/result">

    <xsl:variable name="titlevar" select="normalize-space(title_id)" />
    <xsl:variable name="productvar" select="normalize-space(product_id)" />
    <xsl:variable name="trackvar" select="normalize-space(track_id)" />

    <tr>
      <td><a href="{concat('http://www.myaddress/', 
                    $titlevar, '-', $productvar, '/?', $trackvar)}" 
             target="_blank">link</a></td>
    </tr>

      </xsl:for-each>

    </table>
  </body>
</html>
于 2013-04-24T10:16:25.633 回答
0

您需要删除变量周围的引号:

<tr>
 <td><a href="{concat('http://www.myaddress/', $titlevar, 
                      '-', $productvar, '/?', $trackvar)}" 
        target="_blank">link</a></td>
</tr>
于 2013-04-24T10:17:07.327 回答