首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JavaScript的XSL参数

使用JavaScript的XSL参数
EN

Stack Overflow用户
提问于 2012-10-09 03:09:06
回答 2查看 2.8K关注 0票数 0

我有一个html页面,如下所示:

代码语言:javascript
运行
复制
<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("1.xml");
xsl=loadXMLDoc("2.xsl");
// code for IE
if (window.ActiveXObject)
  {
  xml.addParameter("rss", test); 
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

现在,我想将一个变量(javascript)传递给XSL,例如"course_name“,以便在XSL中可以像这样使用它

代码语言:javascript
运行
复制
<xsl:param name="course_name" />
<xsl:value-of select="$course_name" />

任何帮助解决这个问题的方法都是非常感谢的。

EN

Stack Overflow用户

发布于 2012-10-09 04:24:33

Saxon-CE XSLT2.0处理程序作为JavaScript库/框架在浏览器中运行。因为它的JavaScript有很高级别的互操作性,所以可以将参数传递给XSLT处理器,但也可以从XSLT调用JavaScript函数,这增加了灵活性。

在传递值时,JavaScript中的数组对应于XSLT2.0序列,但是仍然需要注意确保跨语言边界保留类型。

Saxon-CE的JavaScript应用编程接口有两种截然不同的语法形式-一种与您的代码中的语法相同,但下面是另一种语法的示例-相同的代码在所有主要浏览器上运行:

代码语言:javascript
运行
复制
<!DOCTYPE html>
   <html>
      <head>
         <title>stacko</title>
         <script type="text/javascript" language="javascript"
                       src="../Saxonce/Saxonce.nocache.js"></script>
         <script type="text/javascript" language="javascript">

         var my_course = "physics";

         onSaxonLoad = function() {   
            proc = Saxon.run( {
            stylesheet:   'stacko.xsl',
            source:       'stacko.xml',
            parameters: {
                           course_name: my_course,
                           tutor:       "Mr smith"
                        }  
             } );
         }
         </script>
       </head>
       <body>
          <div id="example"></div>
       </body>
    </html>

使用这个处理器不需要将结果片段返回给JavaScript (尽管必要时也可以),因为XSLT2.0xsl: result -document指令已经扩展,所以它可以使用href属性来指定要更新的HTML页面中元素的id,例如:

代码语言:javascript
运行
复制
<xsl:result-document href="#example" method="replace-content">
    <p><xsl:value-of select="ixsl:source()/books/book[@title = 'One']/></p>
</xsl:result-document>

Saxon-CE documentation的API部分中有更多详细信息。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12787925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档