如何使用XSLT填充href字符串?

时间:2012-11-23 20:37:54

标签: web-applications xslt-1.0

我正在尝试使用XSLT 1.0样式表(由Web浏览器处理)生成具有复杂查询字符串的相对URL。

<xsl:variable name="queryLn">sql</xsl:variable>
<xsl:variable name="queryName">ask</xsl:variable>
<a>
    <xsl:attribute name="href">
        <xsl:text>path?action=exec&queryLn=</xsl:text>
        <xsl:value-of select="$queryLn" />
    </xsl:attribute>
    <xsl:value-of select="$queryName" />
</a>

为了简单起见,我修改了变量的分配方式。在实际代码中,它们从被转换的XML中分配了类似的值。我希望生成的文档包含这个:

<a href="path?action=exec&queryLn=sql>ask</a>

Chrome浏览器为我提供了一条错误消息,例如error on line XX at column YY: EntityRef: expecting ';',其中XX和YY紧跟在<xsl:text>开标记之后。我尝试在disable-output-escaping="yes"元素中添加<xsl:text>属性,但这没有任何效果。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

使用

<a href="path?action=exec&amp;queryLn={$queryLn}"><xsl:value-of select="$queryName"/></a>

您的代码存在这些问题

  1. 未转义& - 必须为&amp;

  2. 不必要<xsl:attribute> - 建议在可能的情况下始终使用 AVT -s(属性 - 值模板)。

答案 1 :(得分:0)

Firefox提供了一个更有用的错误消息,指出了我正确的方向。

事实证明这是无效的XML。 &需要&amp;