2010-04-27 3 views
0

아래의 XSL 코드 조각을 사용하여 mouseover에서 javascript 함수를 호출하는 span 태그를 구성합니다. 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 특성의 내용에는 특성 값 정규화로 인해 이스케이프 된 문자가 포함됩니다.

꽤 불가능합니다.

관련 문제