在Javascript中使用xsl字符串进行xml文件转换

在Javascript中使用xsl字符串进行xml文件转换,javascript,xml,string,xslt,Javascript,Xml,String,Xslt,我需要根据用户将在textarea元素中提供的输入构造一个xslt字符串。当然,我将在Javascript函数中检索输入。然后,我需要使用该字符串转换预先存在的xml文件,并在html表中显示结果。 这是我的一段代码…当然,它不起作用 var msg=document.getElementById("query_txt").value; if (window.DOMParser) { parser=new DOMParser(); xmlDoc=parser.parseF

我需要根据用户将在textarea元素中提供的输入构造一个xslt字符串。当然,我将在Javascript函数中检索输入。然后,我需要使用该字符串转换预先存在的xml文件,并在html表中显示结果。 这是我的一段代码…当然,它不起作用

   var msg=document.getElementById("query_txt").value;

if (window.DOMParser)
{
    parser=new DOMParser();
    xmlDoc=parser.parseFromString(msg,"text/xml");
}
else 
{
    xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    xmlDoc.loadXML("datastore.xml");
    var xsl = new ActiveXObject("Microsoft.XMLDOM");
    xsl.async = false ;
    xsl.load(msg);
    // Transform 
    document.write(xmlDoc.transformNode(xsl));
} 
XML文档如下所示…仅一个条目:

<?xml version="1.0" encoding="UTF-8"?>
<!--?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?-->


<catalog xmlns="http://www.w3schools.com/schema.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3schools.com schema.xsd">


<university name="Very Great University">
<name>Great University</name>
<city>Lahore</city>
<reg_num>124</reg_num>
</university>


</catalog>

大大学
拉合尔
124
我不知道xsl字符串应该包含哪些内容。我假设它必须类似于xsl文件……这应该是xsl文件:

   <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:nsm="http://www.w3schools.com/schema.xsd"


>

<xsl:template match="/">

    <xsl:for-each select="nsm:catalog/nsm:university">

    <xsl:value-of select="nsm:name" />
      <xsl:value-of select="nsm:city" />


    </xsl:for-each>


</xsl:template>

</xsl:stylesheet>

如果您使用的是XSLT或XML,则要使其跨浏览器兼容(非常)困难,而且很容易引入错误(正如Dan Field在评论中指出的那样)。请看解决这些问题的。我在几年前就使用过它,发现像你问题中的任务变得很琐碎,而且编码也可以理解。此外,Sarissa网站还提供了一些您可以使用的示例

这是您在这里试图实现的目标(也是使用XSLT之前所需的步骤)


这个例子向您展示了如何使用XSLT字符串作为转换的输入文档:。

如果您使用的是XSLT或XML,那么要使其跨浏览器兼容(非常)困难,而且很容易引入错误(正如Dan Field在评论中指出的)。请看解决这些问题的。我在几年前就使用过它,发现像你问题中的任务变得很琐碎,而且编码也可以理解。此外,Sarissa网站还提供了一些您可以使用的示例

这是您在这里试图实现的目标(也是使用XSLT之前所需的步骤)


这个例子向您展示了如何使用XSLT字符串作为转换的输入文档:.

看起来像您的
document.write(xmlDoc.transformNode(xsl))
卡在可能永远不会触发的else块中(如果您在非MSIE浏览器上测试它)。除此之外,如果您能提供一个最简单完整的示例(即XSL字符串和它应该转换的XML),那将很有帮助。我刚刚添加了它们。那么你是说它应该在InternetExplorer上正常工作(因为这会触发else选项)?请告诉我一个跨浏览器的解决方案,你仍然缺少一些JavaScript代码。我是说,如果它真的能工作,我只能根据您发布的内容在Internet Explorer上工作卡在可能永远不会触发的else块中(如果您在非MSIE浏览器上测试它)。除此之外,如果您能提供一个最简单完整的示例(即XSL字符串和它应该转换的XML),那将很有帮助。我刚刚添加了它们。那么你是说它应该在InternetExplorer上正常工作(因为这会触发else选项)?请告诉我一个跨浏览器的解决方案,你仍然缺少一些JavaScript代码。我的意思是,如果它真的能工作,我只能根据你发布的内容在Internet Explorer上工作。