2

我正在尝试使用 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>,但这没有任何效果。

我究竟做错了什么?

4

2 回答 2

1

使用

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

您的代码有这些问题

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

  2. 不必要<xsl:attribute>- 建议尽可能使用AVT -s(属性 - 值模板)。

于 2012-11-23T22:44:43.720 回答
0

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

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

于 2012-11-23T21:44:59.907 回答