如何在Mozilla Gecko 用Javascript加載XSL
2024-09-06 12:43:56
供稿:網友
在Mozilla Develop Center里,我們可以看到有以下的文章:http://developer.mozilla.org/en/docs/The_XSLT/JavaScript_Interface_in_Gecko:Basic_Example
首先,你需要了解如何動態載入xml文件的方法,可以用XMLDOM對象,也可以用XMLHttpRequest,的responseXML對象,這里我用的是XMLHttpRequest。
用javascript載入xslt的方法如下:
1。用XMLDOM或者用XMLHttpRequest來加載xml和xslt。
2。用XSLTProcessor.importStylesheet來引入XSLT。
3。用XSLTProcessor.transformToFragment方法來把它轉換成DOM的Fragment。然后用appendChild或者用insertBefore等方法來追加或者插入這個DOM的fragment元素。
示例代碼
var ownerDocument = document.implementation.createDocument("", "test", null);
var newFragment = processor.transformToFragment(domToBeTransformed, ownerDocument);
當然也可以用transformToDocument
var newDocument = processor.transformToDocument(domToBeTransformed);
需要注意的是,轉換后的節點是Element或者是一個片段,所以要經過下面的序列化才可使用obj.innerHTML=new Document
4。序列化。
(new XMLSerializer()).serializeToString(newDocument)
5。在IE中,可以用XMLDOM方法,xmldoc.transformNode(xslDocument)方法來進行接的轉換。
首先,我們先建立一個XML文件與XSLT文件,方便后面的講解。
foo.xml
<?xml version="1.0" encoding="utf-8"?>
<Article>
<Title>javascript load xslt in ie and mozilla</Title>
<Author>never-online</Author>
<Web>http://www.never-online.net</Web>
<Body>content is here</Body>
</Article>
foo.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<h1 class="title"><xsl:value-of select="/Article/Title"/></h1>
<div class="desc">Author: <xsl:value-of select="/Article/Author"/> -
Web: <xsl:value-of select="/Article/Web"/></div>
<p class="box">
<xsl:value-of select="/Article/Body"/>
</p>
</xsl:template>
</xsl:stylesheet>
foo.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title> convert xsl using javascript - http://www.never-online.net </title>
<meta http-equiv="ImageToolbar" content="no" />