gpt4 book ai didi

javascript - 如何将 XML 转换为 XML 客户端

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:24 24 4
gpt4 key购买 nike

问题 - 需要将 XML 文件转换为新的 XML 文件(过滤掉一些垃圾)

当前场景 - 当客户端从软件运行 HTML 报告时,我们的程序创建一个 XML 文件(已将 HTML 写入使用 Javascript 加载 XSL 和 XML 转换的文件)

目前,上面的场景只适用于创建 HTML,但我现在需要输出为 XML,每次我尝试在 IE 中查看这个 HTML 文件,因为这是开始生成转换的过程,我只是获取节点答案,没有 XML 树。我在这里缺少什么?

从软件加载的示例 HTML 文件:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<link href="Common/CMStyles.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="ReportHeader.js"></script>

</head>
<body onload="displayResult('sample.xsl');">
<div id="report"></div>
</body>
</html>

ReportFunctions.js

function loadXMLDoc(dname)
{
if (window.ActiveXObject)
{
xmldom = new ActiveXObject("Microsoft.XMLDOM");
xmldom.async = false;
xmldom.load(dname);
return xmldom;
}
else
{
xhttp=new XMLHttpRequest();
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}
}

function displayResult(stylename)
{
xml=loadXMLDoc("TempReportData/CabExportData.xml");
xsl=loadXMLDoc(stylename);

if (window.ActiveXObject)
{
document.getElementById("report").innerHTML=xml.transformNode(xsl);
}
else
{
xsltProcessor=new XSLTProcessor();
xsltProcessor.importStylesheet(xsl);
resultDocument = xsltProcessor.transformToFragment(xml,document);
if (document.getElementById("report").hasChildNodes())
{
document.getElementById("report").removeChild(document.getElementById("report").lastChild);
}
document.getElementById("report").appendChild(resultDocument);
}
}

示例 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Report schema="1.0">
<Item name="cabinet" id="1" />
<Item name="cabinet" id="2" />
<Item name="cabinet" id="3" />
<DocumentProperties>
<PageProperties name="Page 1" pagenum="1" />
<Paths>
<Data>C:\Data\</Data>
<Library>C:\Library\</Library>
<Table>C:\Table\</Table>
<Picture>C:\Bitmap\</Picture>
<Report>C:\Report\</Report>
<Template>C:\Template\</Template>
<Backup>C:\Backup\</Backup>
<Program>C:\</Program>
</Paths>
<Application>
<Product>CabPro</Product>
<Family>Software</Family>
<Version>8.0.61.2700</Version>
<Build>2013.10.4.0</Build>
<Desc />
<Company>Q1</Company>
<Account>QSystems Pty Ltd</Account>
</Application>
</DocumentProperties>
</Report>

示例 XSL 文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" version="1.0" encoding="iso-8859-1"/>


<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates select="@*|DocumentProperties/Paths"/>
</xsl:copy>
</xsl:template>

</xsl:stylesheet>

期望:根据以上所有内容,我希望在 HTML 浏览器中看到 XML 树过滤掉多余的部分并向我显示剩余路径的树

实际结果...在 IE 中看起来有点像这样...C:\Data\C:\Library\C:\Table\C:\Bitmap\C:\Report\C:\Template\C:\Backup\C:\

*注意没有 XML 树?

我在这里遗漏了什么吗?或者有人得到了一些建议来尝试让它工作,它必须在客户端完成。

最佳答案

我这里没有 xslt 编辑器可以检查,但是你试过了吗

<xsl:copy-of select="@*|node()"/>

代替

<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>

我会在两个模板上尝试。

关于javascript - 如何将 XML 转换为 XML 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20038540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com