2010-05-08 133 views
0

使用XSLT我想创建一个属性:如何把标签内的html属性?

<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 ...)"> 

内部消除跨度标签或标签,其能来自apply-templates。

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

+0

什么是你想才达到的结果呢?在属性值中不能有元素,只能是文本。 – newtover 2010-05-09 22:26:16

回答

-1

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

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

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

的XML规格说什么约​​(例如属性值)

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

1

如果你正在尝试生成正确的xhtml,你真的不应该这样做,但是让你的属性值引用一个更简单的JavaScript不包含这些字符。

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

0

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

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

和HTML应类似于像这样:

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