摘要:中的它不是一種正式的規范,,是的另一表現形式。是第一個支持它的。主要的功能是用來將轉換為文檔。方法用于取得當前參數的值,參數為命名空間和參數的內部名稱??鐬g覽器使用這個函數接收兩個參數要執行轉換的上下文節點和文檔對象。
IE中的XSTL
它不是一種正式的規范,, 是XPath的另一表現形式。 IE是第一個支持它的。
簡單的XSTL轉換XML文檔的方式就是將它們分別加到一個DOM文檔中, 然后使用
transformNode()
方法。
這個方法接收一個參數, 即包含XSTL樣式表的文檔。 調用這個方法之后會返回一個包含轉換信息的字符串。
xmldom.load("employees.xml"); xstldom.load("employees.xstl"); var result = xmldom.transformNodes(xstldom);
這個transformNode的參數可以是XML文檔的DOM節點。 如果不是在文檔元素上調用transformNode, 那么轉換就會從調用節點上開始。
復雜的XSLT轉換要使用復雜的XSTL轉換, 必須使用XSL模板和XSL處理器。 先要把XSTL樣式表加載到一個線程安全的XML文檔中。
function createThreadSafeDocument() { if (typeof arguments.callee.activeXString != "string") { var versions = ["MSXML2.FreeThreadedDOMDocument.6.0", "MSXML2.FreeThreadedDOMDocument.3.0", "MSXML2.FreeThreadedDOMDocument"], i, len; for (i = 0, len = versions.length; i < len; i++) { try { new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { //skip } } } return new ActiveXObject(arguments.callee.activeXString); }
創建XSTL模板:
function createXSTLTemplate() { if (typeof arguments.callee.activeXString != "string") { var versions = ["MSXML2.FreeThreadedDOMDocument.6.0", "MSXML2.FreeThreadedDOMDocument.3.0", "MSXML2.FreeThreadedDOMDocument"], i, len; for (i = 0, len = versions.length; i < len; i++) { try { new ActiveXObject(versions[i]); arguments.callee.activeXString = versions[i]; break; } catch (ex) { //skip } } } return new ActiveXObject(arguments.callee.activeXString); }
下面是使用示例:
var xsltdom = createThreadSafeDocument(); xstldom.async = false; xsltdom.load("employees.xslt"); var template = createXSTLTemplate(); template.stylesheet = xstldom; var processor = tempalte.createProcessor(); processor.input = xmldom; processor.transform(); var result = processor.output;
在創建了XSL處理器之后, 必須將要轉換的節點指定給input屬性。 這個值可以是一個文檔, 也可以是文檔的任何節點。 然后調用transform方法即可執行轉換并將結果作為字符串保存在output屬性中。 這些代碼實現了transformNode相同的功能。 使用XSL處理器可以對轉換進行更多的控制, 同時也支持更高級的XSTL特性。
要將樣式表中的參數進行賦值處理, 可以使用addParaneter() 方法, 它接收兩個參數: 要設置的參數名稱和要指定的值。
processor.input = xmldom.documentElement; processor.addParameter("message", "Hello wrold!"); processor.transform();
XSL處理器的另一個高級特性是能夠設置一種操作模式。 在XSTL中, 可以使用mode特性為模板定義一種模式在定義了模式之后, 如果沒有將 < xsl: apply - tempaltes > 與匹配的mode特性一起使用, 就不會運行該模板。 如果在 < xsl: apply - tempaltes > 元素的模式設置為“ title - first”, 那么在javascript使用時就需要像下面這樣進行設置:
processor.input = xmldom; processor.addParameter("message", "Hello wrold!"); processor.setStartMode("title-first"); processor.transform();
如果打算用一個XSTL樣式表進行多次轉換, 可以在每次轉換之后調用reset() 方法重置處理器。
processor.reset();
因為處理器已經編譯了XSTL樣式表, 與transformNode() 相比, 這樣的轉換速度會更快一些
XSLTProcessor類型Mozilla通過火狐創建新類型, 其他非IE瀏覽器借鑒了它, 也實現了這個類型。 主要的功能是用來將XSLT轉換為XML文檔。
第一步加載DOM文檔, 一個基于XML, 另一個基于XSLT。 然后創建一個新XSLTProceesor對象, 并使用importStylesheet() 方法為其指定一個XSLT。 示例:
var processor = new XSLTProcessor(); processor.importStylesheet(xsltdom);
最后一步是執行轉換。 這一步有兩種不同的方式: 如果想返回一個完整的DOM文檔, 可以調用
transformToDocument();
如果想返回一個文檔片段, 可以使用
transformToFragment()。
transformToDocument() 的參數是一個XML DOM。 transformToFragment() 的參數有兩個, 第一個是XML DOM, 第二個是擁有該文檔片段的文檔。
setParameter() 方法可以用來設置XSLT的參數, 該方法接收三個參數: 命名空間URI, 參數的內部名稱和要設置的值。 這個方法必須在進行最后一步轉化之前調用。
getParameter() 方法用于取得當前參數的值, 參數為命名空間URI和參數的內部名稱。
removeParameter() 方法用于移除當前參數的值, 參數為命名空間URI和參數的內部名稱。
后面兩個方法并不常用, 提供他們只是為了方便。
重置處理器的方法是reset() 方法。
跨瀏覽器使用XSLT
function transform(context, xslt) { if (typeof XSLTProcessor != "undefined") { var processor = new XSLTProcessor(); processor.importStylesheet(xslt); var result = processor.transformToDocument(context); return (new XMLSerializer()).serializeToString(result); } else if (typeof context.transformNode != "undefined") { return caontext.transformNode(xslt); } else { throw new Error("No XSLT processor available."); } }
這個函數接收兩個參數: 要執行轉換的上下文節點和XSLT文檔對象。 返回序列化之后的字符串。
var result = transform(xmldom, xsltdom);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78723.html
摘要:中的它不是一種正式的規范,,是的另一表現形式。是第一個支持它的。主要的功能是用來將轉換為文檔。方法用于取得當前參數的值,參數為命名空間和參數的內部名稱??鐬g覽器使用這個函數接收兩個參數要執行轉換的上下文節點和文檔對象。 IE中的XSTL 它不是一種正式的規范,, 是XPath的另一表現形式。 IE是第一個支持它的。 簡單的XSTL轉換 XML文檔的方式就是將它們分別加到一個DOM文檔中...
摘要:,源代碼爬取京東商品列表,以手機商品列表為例示例網址版本京東手機列表源代碼下載位置請看文章末尾的源。,抓取結果運行上面的代碼,就會爬取京東手機品類頁面的所有手機型號價格等信息,并保存到本地文件京東手機列表中。 showImg(https://segmentfault.com/img/bVxXHW); 1,引言 在上一篇《python爬蟲實戰:爬取Drupal論壇帖子列表》,爬取了一個用...
摘要:在基于使用命名空間的文檔求值時,需要使用對象。第四個參數的取值類型是下列常量之一,返回與表達式匹配的數據類型。,返回字符串值。這是最常用的結果類型。集合中節點的次序與它們在文檔中的次序一致。 JavaScript與XML 瀏覽器對XML DOM的支持 DOM2級核心 在通過JavaScript處理XML時,通常只使用參數root,因為這個參數指定的是XML DOM文檔元素的標簽名 v...
摘要:,引言本文講解怎樣用和使用接口下載內容提取器,這是一個示例程序。具體請參看內容提取器的定義。用下載內容提取器可以直接跳到第部分的內容。 showImg(https://segmentfault.com/img/bVyszb); 1,引言 本文講解怎樣用Java和JavaScript使用 GooSeeker API 接口下載內容提取器,這是一個示例程序。什么是內容提取器?為什么用這種方式...
摘要:函數接收三個參數上下文節點表達式和可選的命名空間對象。命名空間對象應該是下面這種字面量的形式。使用樣式表轉換文檔跨瀏覽器使用這個函數接收兩個參數要執行轉換的上下文節點和文檔對象。 showImg(https://segmentfault.com/img/bVbvHVd?w=962&h=496); 本章主要講解了以下四個問題: 1、將XML解析為DOM文檔 跨瀏覽器把XML解析為DOM文...
閱讀 3083·2023-04-26 00:53
閱讀 3534·2021-11-19 09:58
閱讀 1696·2021-09-29 09:35
閱讀 3286·2021-09-28 09:46
閱讀 3866·2021-09-22 15:38
閱讀 2696·2019-08-30 15:55
閱讀 3013·2019-08-23 14:10
閱讀 3827·2019-08-22 18:17