我正在尝试使用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>
属性,但这没有任何效果。
我做错了什么?
答案 0 :(得分:1)
使用强>:
<a href="path?action=exec&queryLn={$queryLn}"><xsl:value-of select="$queryName"/></a>
您的代码存在这些问题:
未转义&
- 必须为&
。
不必要<xsl:attribute>
- 建议在可能的情况下始终使用 AVT -s(属性 - 值模板)。
答案 1 :(得分:0)
Firefox提供了一个更有用的错误消息,指出了我正确的方向。
事实证明这是无效的XML。 &
需要&
。