2010-04-27 42 views
0

我正在使用下面的一段XSL代碼構造一個span標記,並在mouseover上調用一個javascript函數。 javascipt的輸入應該是一個html表格。變量「showContent」的輸出只顯示文本內容,但不包含表格標籤。 這怎麼解決。實際元素標記沒有被捕獲

XSL:

  <xsl:variable name="aTable" as="element()*"> 
     <table border="0" cellspacing="0" cellpadding="0"> 
     <xsl:for-each select="$capturedTags"> 
     <tr><td><xsl:value-of select="node()" /></td></tr> 
     </xsl:for-each> 
     </table> 
     </xsl:variable> 
     <xsl:variable name="start" select='concat("Tip(&#39;", "")'></xsl:variable> 
     <xsl:variable name="end" select='concat("&#39;)", "")'></xsl:variable> 
     <xsl:variable name="showContent"> 
       <xsl:value-of select='concat($start,$aTable,$end)'/> 
     </xsl:variable> 
     <span xmlns="http://www.w3.org/1999/xhtml" onmouseout="{$hideContent}" 
       onmouseover="{$showContent}" id="{$textNodeId}"><xsl:value-of select="$textNode"></xsl:value-of></span> 

實際輸出: <span onmouseout="UnTip()" onmouseover="Tip('content1')" id="d1t14">是我</span>

預期輸出:

<span onmouseout="UnTip()" onmouseover="Tip('<table><tr><td>content1</td></tr>')" id="d1t14">is my </span> 

什麼是需要在上面的XSL來完成的變化表,tr和td標籤要通過嗎?

回答

2

concat()函數接受其參數的字符串值並連接它們。

$aTable如定義的那樣沒有字符串值。

您可能想要將其定義爲element()*而不是xs:string

然後,您需要轉義文本或將其包含在CDATA標記中。由於$aTable的值是動態生成的,因此使用CDATA是不可能的。

您需要自己的XML序列化處理才能將所有標記標記轉換爲文本。即使在這種情況下,由於屬性值標準化,onmouseover屬性的內容將包含轉義字符。

似乎很不可能。

相關問題