Javascript 通过输入文本区域使用XSLT转换XML

Javascript 通过输入文本区域使用XSLT转换XML,javascript,html,xml,xslt,Javascript,Html,Xml,Xslt,我正在尝试使用XSLT转换XML,为此,我希望使用textarea输入XML文本,并在其他textarea中显示转换结果。 到目前为止,我的JavaScript代码如下所示: <script type="text/javascript"> var xslTransform = new XslTransform("XSLTCode.xsl"); function transformarXML(){ var xmlIn = do

我正在尝试使用XSLT转换XML,为此,我希望使用textarea输入XML文本,并在其他textarea中显示转换结果。 到目前为止,我的JavaScript代码如下所示:

<script type="text/javascript">

        var xslTransform = new XslTransform("XSLTCode.xsl");

        function transformarXML(){
            var xmlIn = document.getElementById("XMLIN").value;
            var xmlOut = document.getElementById("XMLOUT");

            var outputText = xslTransform.transform(xmlIn);

            xmlOut.value = outputText;

        }

</script> 

var xslTransform=newxsltransform(“XSLTCode.xsl”);
函数transformarXML(){
var xmlIn=document.getElementById(“xmlIn”).value;
var xmlOut=document.getElementById(“xmlOut”);
var outputText=xslTransform.transform(xmlIn);
xmlOut.value=输出文本;
}

但由于某些原因,输出文本区域根本不显示任何文本。我应该如何正确地使用JavaScript?还有其他更简单的解决方案我没有考虑过吗?

对于IE以外的浏览器,您可以使用XSLT处理器执行XSLT转换,使用DOMParser分别解析输入到文档中的XML XSLT字符串

函数转换(xml、xslt){ var domParser=新的domParser(); var sheet=domParser.parseFromString(xslt,'application/xml'); var doc=domParser.parseFromString(xml,'application/xml'); var proc=new XSLTProcessor(); 工序导入样式表(张); var resultDoc=过程转换到文档(doc); //根据创建或需要的结果类型,最好使用return new XMLSerializer().serializeToString(resultDoc) 返回resultDoc.documentElement.outerHTML; } 异步函数loadAndTransform(xml、xsltUrl){ 试一试{ var响应=等待获取(xsltur); var xsltCode=await response.text(); 返回转换(xml、xsltCode); } 捕获(e){ 控制台日志(e); 投掷e; } } 异步函数handler1(){ document.getElementById('result').value=wait loadAndTransform(document.getElementById('input-xml').value,'data:application/xml',+encodeURIComponent(document.getElementById('xslt').value)); } 异步函数handler2(){ document.getElementById('result').value=await loadAndTransform(document.getElementById('input-xml').value,'sheet.xsl'); }

A.
B

  • 如果代码是浏览器内的JavaScript,那么考虑使用StAdfExcel的代码片段特性来显示一个最小的但完整的和可执行的代码片段,以允许其他人复制该问题。据我所知,没有一款浏览器提供您在新XslTransform中使用的
    XslTransform
    对象(“XSLTCode.xsl”)transformarXML
    ,但没有调用它,因此如果这是您的全部代码,那么它将不会做任何事情,您需要在某个地方调用该函数。这是浏览器中的Javascript,正如您所说,浏览器中的Javascript没有提供
    XslTransform
    ?在这种情况下,是否有其他类或解决方案来替换
    XslTransform
    ?如何将XSLT作为本地文件添加到
    importStylesheet()?我的意思是类似于
    importStylesheet“XSLTCode.xsl”)
    文件“本地”指向什么?它和带有Javascript的HTML文档在同一个web服务器上吗?或者HTML文档是从文件系统加载的?一般情况下,您可以使用XMLHttpRequest加载XML文档,但在加载位置上通常存在特定于浏览器的安全限制(同源策略可能只允许加载来自HTML文档来源的相同来源的文件,本地文件系统访问可能会在Chrome等浏览器中受到限制)。@DavidGodoy,我对代码片段进行了编辑,以指示在最新版本的Edge、Chrome和Firefox中使用客户端Javascript的一种(新)方法,即从URL获取XSLT作为文本,然后使用与以前相同的函数运行转换并在文本区域(
    document.getElementById('result')。value=wait loadAndTransform)中显示结果(document.getElementById('input-xml')。value,'sheet.xsl');