以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  请教XSL转化时进行函数调用返回特殊字符如何处理??  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=6955)


--  作者:btyyj
--  发布时间:4/23/2004 10:25:00 AM

--  请教XSL转化时进行函数调用返回特殊字符如何处理??
程序如下:

目的:返回<select></select>的结果填充
输入参数:strL,strR
返回值:string

function ConvertToEdit(strL,strR)
{
  var strArrayL
  var strArrayR
  var strResult

  strResult = "";
  strArrayL = strL.split("|");
  strArrayR = strR.split("|");

  for (i = 0; i < strArrayL.length; i++)
  {
    strResult = strResult + "<option value=\"" + strArrayL[i] + "\">" + strArrayR[i] + "</option>"
  }
  return strResult;
}

调用实例:
<xsl:template match="education">
  <select name="education">
    <xsl:eval>ConvertToEdit("A|B|C|D|E|F","高中|中专|大专|大学|硕士|博士")
  </select>
</xsl:template>

我希望得到的结果是
<select name="education">
  <option values="A">高中</option>
  <option values="B">中专</option>
  <option values="C">大专</option>
  <option values="D">大学</option>
  <option values="E">硕士</option>
  <option values="F">博士</option>
</select>

但是实际执行结果是:
<select name="education">
  &lt;option values="A"&gt;高中&lt;/option&gt;
  &lt;option values="B"&gt;中专&lt;/option&gt;
  &lt;option values="C"&gt;大专&lt;/option&gt;
  &lt;option values="D"&gt;大学&lt;/option&gt;
  &lt;option values="E"&gt;硕士&lt;/option&gt;
  &lt;option values="F"&gt;博士&lt;/option&gt;
</select>

如何解决?谢谢!


--  作者:likebbs
--  发布时间:4/24/2004 8:59:00 AM

--  
把 JS 函数封装在 Fun.js  文件中。。

然后在  XSL 文件包含(<script src="fun.js"> )

函数执行时直接在函数里就输出处理完的字符串。。。
不用返回。。

如果无法输出,就把:<xsl:eval>ConvertToEdit("A|B|C|D|E|F","高中|中专|大专|大学|硕士|博士")
  
换成:
<scriptl>ConvertToEdit("A|B|C|D|E|F","高中|中专|大专|大学|硕士|博士");</script>
  


--  作者:btyyj
--  发布时间:4/29/2004 9:15:00 AM

--  你的处理可能有问题!
感谢你的回复,目前我已解决问题,我没有测试你的方法,但是在我解决问题的过程中,我试验了和你类似的方法,结果脚本不能执行,问题在于XSL只是原本的转换,我把函数调用放在了转换的外面。(我使用的是数据岛)

大约如下:
<script language="javascript">
  function ConvertToHTML()
  {
    var xmlDoc = xmlData.XMLDocument;
    var xslDoc = xslData.XMLDocument;
    var strTrans = xmlDoc.transFormNode(xslDoc);
    document.all.targetControl.innerHTML = strTrans;

   '这里再调用脚本
  }
</script>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms