国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript JavaScript與XML——“XSLT”的注意要點

LeexMuller / 1917人閱讀

摘要:中的它不是一種正式的規(guī)范,,是的另一表現(xiàn)形式。是第一個支持它的。主要的功能是用來將轉(zhuǎn)換為文檔。方法用于取得當(dāng)前參數(shù)的值,參數(shù)為命名空間和參數(shù)的內(nèi)部名稱。跨瀏覽器使用這個函數(shù)接收兩個參數(shù)要執(zhí)行轉(zhuǎn)換的上下文節(jié)點和文檔對象。

IE中的XSTL

它不是一種正式的規(guī)范,, 是XPath的另一表現(xiàn)形式。 IE是第一個支持它的。

簡單的XSTL轉(zhuǎn)換

XML文檔的方式就是將它們分別加到一個DOM文檔中, 然后使用

transformNode()

方法。

這個方法接收一個參數(shù), 即包含XSTL樣式表的文檔。 調(diào)用這個方法之后會返回一個包含轉(zhuǎn)換信息的字符串。

xmldom.load("employees.xml");
xstldom.load("employees.xstl");
var result = xmldom.transformNodes(xstldom);

這個transformNode的參數(shù)可以是XML文檔的DOM節(jié)點。 如果不是在文檔元素上調(diào)用transformNode, 那么轉(zhuǎn)換就會從調(diào)用節(jié)點上開始。

復(fù)雜的XSLT轉(zhuǎn)換

要使用復(fù)雜的XSTL轉(zhuǎn)換, 必須使用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);
}

創(chuàng)建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;

在創(chuàng)建了XSL處理器之后, 必須將要轉(zhuǎn)換的節(jié)點指定給input屬性。 這個值可以是一個文檔, 也可以是文檔的任何節(jié)點。 然后調(diào)用transform方法即可執(zhí)行轉(zhuǎn)換并將結(jié)果作為字符串保存在output屬性中。 這些代碼實現(xiàn)了transformNode相同的功能。 使用XSL處理器可以對轉(zhuǎn)換進(jìn)行更多的控制, 同時也支持更高級的XSTL特性。

要將樣式表中的參數(shù)進(jìn)行賦值處理, 可以使用addParaneter() 方法, 它接收兩個參數(shù): 要設(shè)置的參數(shù)名稱和要指定的值。

processor.input = xmldom.documentElement;
processor.addParameter("message", "Hello wrold!");
processor.transform();

XSL處理器的另一個高級特性是能夠設(shè)置一種操作模式。 在XSTL中, 可以使用mode特性為模板定義一種模式在定義了模式之后, 如果沒有將 < xsl: apply - tempaltes > 與匹配的mode特性一起使用, 就不會運(yùn)行該模板。 如果在 < xsl: apply - tempaltes > 元素的模式設(shè)置為“ title - first”, 那么在javascript使用時就需要像下面這樣進(jìn)行設(shè)置:

processor.input = xmldom;
processor.addParameter("message", "Hello wrold!");
processor.setStartMode("title-first");
processor.transform();

如果打算用一個XSTL樣式表進(jìn)行多次轉(zhuǎn)換, 可以在每次轉(zhuǎn)換之后調(diào)用reset() 方法重置處理器。

processor.reset();

因為處理器已經(jīng)編譯了XSTL樣式表, 與transformNode() 相比, 這樣的轉(zhuǎn)換速度會更快一些

XSLTProcessor類型

Mozilla通過火狐創(chuàng)建新類型, 其他非IE瀏覽器借鑒了它, 也實現(xiàn)了這個類型。 主要的功能是用來將XSLT轉(zhuǎn)換為XML文檔。

第一步加載DOM文檔, 一個基于XML, 另一個基于XSLT。 然后創(chuàng)建一個新XSLTProceesor對象, 并使用importStylesheet() 方法為其指定一個XSLT。 示例:

var processor = new XSLTProcessor();
processor.importStylesheet(xsltdom);

最后一步是執(zhí)行轉(zhuǎn)換。 這一步有兩種不同的方式: 如果想返回一個完整的DOM文檔, 可以調(diào)用

transformToDocument()

如果想返回一個文檔片段, 可以使用

transformToFragment()

transformToDocument() 的參數(shù)是一個XML DOM。 transformToFragment() 的參數(shù)有兩個, 第一個是XML DOM, 第二個是擁有該文檔片段的文檔。

setParameter() 方法可以用來設(shè)置XSLT的參數(shù), 該方法接收三個參數(shù): 命名空間URI, 參數(shù)的內(nèi)部名稱和要設(shè)置的值。 這個方法必須在進(jìn)行最后一步轉(zhuǎn)化之前調(diào)用。

getParameter() 方法用于取得當(dāng)前參數(shù)的值, 參數(shù)為命名空間URI和參數(shù)的內(nèi)部名稱。

removeParameter() 方法用于移除當(dāng)前參數(shù)的值, 參數(shù)為命名空間URI和參數(shù)的內(nèi)部名稱。

后面兩個方法并不常用, 提供他們只是為了方便。

重置處理器的方法是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.");
    }
}

這個函數(shù)接收兩個參數(shù): 要執(zhí)行轉(zhuǎn)換的上下文節(jié)點和XSLT文檔對象。 返回序列化之后的字符串。

var result = transform(xmldom, xsltdom);

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/110341.html

相關(guān)文章

  • JavaScript JavaScriptXML——“XSLT注意要點

    摘要:中的它不是一種正式的規(guī)范,,是的另一表現(xiàn)形式。是第一個支持它的。主要的功能是用來將轉(zhuǎn)換為文檔。方法用于取得當(dāng)前參數(shù)的值,參數(shù)為命名空間和參數(shù)的內(nèi)部名稱。跨瀏覽器使用這個函數(shù)接收兩個參數(shù)要執(zhí)行轉(zhuǎn)換的上下文節(jié)點和文檔對象。 IE中的XSTL 它不是一種正式的規(guī)范,, 是XPath的另一表現(xiàn)形式。 IE是第一個支持它的。 簡單的XSTL轉(zhuǎn)換 XML文檔的方式就是將它們分別加到一個DOM文檔中...

    wupengyu 評論0 收藏0
  • Python爬蟲實戰(zhàn)(2):爬取京東商品列表

    摘要:,源代碼爬取京東商品列表,以手機(jī)商品列表為例示例網(wǎng)址版本京東手機(jī)列表源代碼下載位置請看文章末尾的源。,抓取結(jié)果運(yùn)行上面的代碼,就會爬取京東手機(jī)品類頁面的所有手機(jī)型號價格等信息,并保存到本地文件京東手機(jī)列表中。 showImg(https://segmentfault.com/img/bVxXHW); 1,引言 在上一篇《python爬蟲實戰(zhàn):爬取Drupal論壇帖子列表》,爬取了一個用...

    shevy 評論0 收藏0
  • 高程3總結(jié)#第18章JavaScriptXML

    摘要:在基于使用命名空間的文檔求值時,需要使用對象。第四個參數(shù)的取值類型是下列常量之一,返回與表達(dá)式匹配的數(shù)據(jù)類型。,返回字符串值。這是最常用的結(jié)果類型。集合中節(jié)點的次序與它們在文檔中的次序一致。 JavaScript與XML 瀏覽器對XML DOM的支持 DOM2級核心 在通過JavaScript處理XML時,通常只使用參數(shù)root,因為這個參數(shù)指定的是XML DOM文檔元素的標(biāo)簽名 v...

    gaosboy 評論0 收藏0
  • API例子:用Java/JavaScript下載內(nèi)容提取器

    摘要:,引言本文講解怎樣用和使用接口下載內(nèi)容提取器,這是一個示例程序。具體請參看內(nèi)容提取器的定義。用下載內(nèi)容提取器可以直接跳到第部分的內(nèi)容。 showImg(https://segmentfault.com/img/bVyszb); 1,引言 本文講解怎樣用Java和JavaScript使用 GooSeeker API 接口下載內(nèi)容提取器,這是一個示例程序。什么是內(nèi)容提取器?為什么用這種方式...

    JackJiang 評論0 收藏0
  • JS學(xué)習(xí)筆記(第18章)(JavaScriptXML

    摘要:函數(shù)接收三個參數(shù)上下文節(jié)點表達(dá)式和可選的命名空間對象。命名空間對象應(yīng)該是下面這種字面量的形式。使用樣式表轉(zhuǎn)換文檔跨瀏覽器使用這個函數(shù)接收兩個參數(shù)要執(zhí)行轉(zhuǎn)換的上下文節(jié)點和文檔對象。 showImg(https://segmentfault.com/img/bVbvHVd?w=962&h=496); 本章主要講解了以下四個問題: 1、將XML解析為DOM文檔 跨瀏覽器把XML解析為DOM文...

    GT 評論0 收藏0

發(fā)表評論

0條評論

LeexMuller

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<