如何将标签放在html属性中?

时间:2010-05-08 18:02:24

标签: html xslt normalization

使用xslt我想创建一个属性:

<span class="tooltip">
            <xsl:attribute name="onmouseover">
                <xsl:text>javascript:function(</xsl:text>
                <span class="label">Aggiunta</span> 
                <xsl:apply-tempaltes/>
                <xsl:text>)</xsl:text>
            </xsl:attribute>

问题是只有纯文本被放在属性中,比如

<span class="tooltip" onmouseover="javascript:function(Aggiunta ...)">

没有span标签或可能来自apply-templates的标签。

那么如何将html代码放入属性?

3 个答案:

答案 0 :(得分:1)

如果您正在尝试生成正确的xhtml,那么您根本不应该这样做,但要使您的属性值引用更简单的不包含这些字符的javascript。

定义格式良好的XML的规则明确禁止包含'&lt;'的属性值字符。请参阅W3C Recommendation

答案 1 :(得分:0)

您应该将事件绑定到不直接作为属性编写的HTML元素。 此示例基于jQuery。

$( ".tooltip" ).bind( "mouseover", function() {
  // some code goes here 
});

和HTML看起来应该类似:

<span class="tooltip">Some text</span>

答案 2 :(得分:-1)

最好的选择是使用外部JavaScript文件。立即修复将包括使用CDATA标签。

<xsl:text><![CDATA[myfunction("<span class='label'>Aggiunta</span>]]></xsl:text>

请注意,内联JavaScript仅在特定情况下接受变量。

XML规范对Character Data所说的内容(例如属性值)

  

&符号(&amp;)和左尖括号(&lt;)绝不能以字面形式出现,除非用作标记分隔符,或用于注释,处理指令或CDATA部分。如果在其他地方需要它们,则必须分别使用数字字符引用或字符串“&amp; amp;”和“&amp; lt;”进行转义。可以使用字符串“&amp; gt;”来表示右尖括号(&gt;),并且为了兼容性,必须使用“&amp; gt;”或字符串引用(当它出现在字符串“]中时)进行转义。 &gt;“在内容中,当该字符串未标记CDATA部分的结尾时。