//格式化xml function formatXml(){ var str = $('xml').value; //去除输入框中xmll两端的空格。 str = str.replace(/^\s+|\s+$/g,""); var source = new ActiveXObject("Msxml2.DOMDocument"); //装载数据 source.async = false; source.loadXML(str); // 装载样式单 var stylesheet = new ActiveXObject("Msxml2.DOMDocument"); stylesheet.async = false; stylesheet.resolveExternals = false; stylesheet.load("jsp/xmlStyle.xsl"); // 创建结果对象 var result = new ActiveXObject("Msxml2.DOMDocument"); result.async = false; // 把解析结果放到结果对象中方法1 source.transformNodeToObject(stylesheet, result); //alert(result.xml); if(result.xml==''||result.xml==null){ alert('xml报文格式错误,请检查'); return false; } var finalStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +result.xml; $('xml').value =finalStr; }
?? 除上述的js代码之外,还需要创建一个xsl格式文件。
<?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method = "xml" omit-xml-declaration = "yes" indent = "yes" encoding="utf-8"/> <xsl:template match="/ | @* | node()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
??
?? ?上述代码来自语孟子的文章,添加部分内容解释:
?
omit-xml-declaration = "yes"
??? 可选。 "yes" 规定在输出中省略 XML 声明 (<?xml...?>)。 "no" 规定应在输出中包含 XML 声明。默认是 "no"。
?
?
indent = "yes"
? ? 可选。在输出结果树时是否要增加空白;该值必须为 yes 或 no。Netscape 6 不支持该属性。?
?
?
<xsl:template match="/ | @* | node()">
??? match中内容定义该模板包括 xml的全部分支,包括节点和属性。
?
?
<xsl:copy>
?? 将中间的内容拷贝到输出文件。
?
?
<xsl:apply-templates select="@* | node()"/>
??? <xsl:apply-templates> 元素可把一个模板应用于当前的元素或者当前元素的子节点。
??? 这里选择的xpath为xml全部属性以及任何类型的节点。
?
??? 对于各个节点的作用以及使用,可以访问
??? http://www.w3school.com.cn/xsl/xsl_w3celementref.asp 。里面讲的都很细致。
?
?
?
?
?
1 楼
guojianpeng9806
2010-05-14
功能很强大,值得学习
2 楼
javaz
2010-05-14
guojianpeng9806 写道
功能很强大,值得学习
谢谢夸奖。。呵呵呵。