日期:2014-05-16 浏览次数:20504 次
//格式化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 。里面讲的都很细致。
?
?
?
?
?