2010-05-08 132 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>