欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
XSLT 是什么類(lèi)型的語(yǔ)言?

XSLT 是什么類(lèi)型的語(yǔ)言?

分析和概述

級別: 初級

Michael H. Kay

2001 年 2 月 01 日

XSLT是什么類(lèi)型的語(yǔ)言,其用途是什么,為什么要這樣設計它?這些問(wèn)題可以有許多不同的答案,初學(xué)者往往會(huì )感到困惑,因為這種語(yǔ)言與他們以前習慣使用的語(yǔ)言之間有很大差別。本文嘗試說(shuō)明XSLT。本文并不試圖教您編寫(xiě) XSLT樣式表,它將說(shuō)明這種語(yǔ)言的起源,它擅長(cháng)什么,以及您為什么應該使用它。

我撰寫(xiě)本文的初衷是為一篇關(guān)于 Saxon 的技術(shù)文章提供必要的背景知識,打算提供在傳統 XSLT 處理器中使用的實(shí)現技巧內幕,從而幫助用戶(hù)使其樣式表的性能達到最大化。但 developerWorks 的編輯們勸說(shuō)我:這篇介紹應該吸引更廣泛的讀者,值得作為 XSLT 語(yǔ)言的獨立說(shuō)明而單獨發(fā)表。

什么是 XSLT?

XSLT 語(yǔ)言由萬(wàn)維網(wǎng)聯(lián)盟 (W3C) 定義,并且該語(yǔ)言的 1.0 版本在 1999 年 11 月 16 日作為“推薦書(shū)”發(fā)布(請參閱 參考資料)。我已經(jīng)在拙作 XSLT Programmers‘ Reference 中提供了全面的規范和用戶(hù)指南,因此我不打算在本文中涵蓋相同內容。確切地講,本文的目的只是使讀者理解 XSLT 適合大規模事物的哪些位置。





XSLT 的角色

XSLT 的最初目的是將信息內容與 Web 顯示分離。如其最初定義那樣,HTML 通過(guò)按抽象概念(如段落、重點(diǎn)和編號列表)定義顯示來(lái)實(shí)現設備獨立性。隨著(zhù) Web 變得越來(lái)越商業(yè)化,出版人希望其輸出質(zhì)量能達到與印刷品相同的質(zhì)量。這逐漸導致越來(lái)越多地使用具體顯示控件,如頁(yè)面上材料的明確字體和絕對位置。然而不幸的是完全可以預料其副作用,即將相同的內容傳遞到替代設備,如數字電視機和 WAP 電話(huà)(印刷業(yè)的行話(huà) 再現效果)將會(huì )變得日益困難。

由于吸收了印刷業(yè)使用 SGML 的經(jīng)驗,在 1998 年初定義了一種標記語(yǔ)言 XML,它用于表示獨立于顯示的結構化內容。與 HTML 使用一組固定概念(如段落、列表和表)不同,XML 標記中使用的標記完全是用戶(hù)定義的,其用意是這些標記應該與所關(guān)注的對象(如人、地點(diǎn)、價(jià)格和日期)相關(guān)。盡管 HTML 中的元素本質(zhì)上都是印刷樣式(雖然處于抽象級別),而 XML 的目標是元素應該描述實(shí)際對象。例如,清單 1 顯示了表示足球錦標賽結果的 XML 文檔。


清單 1. 表示足球錦標賽結果的 XML 文檔
<results group="A">                        <match>                        <date>10-Jun-1998</date>                        <team score="2">Brazil</team>                        <team score="1">Scotland</team>                        </match>                        <match>                        <date>10-Jun-1998</date>                        <team score="2">Morocco</team>                        <team score="2">Norway</team>                        </match>                        <match>                        <date>16-Jun-1998</date>                        <team score="1">Scotland</team>                        <team score="1">Norway</team>                        </match>                        <match>                        <date>16-Jun-1998</date>                        <team score="3">Brazil</team>                        <team score="0">Morocco</team>                        </match>                        <match>                        <date>23-Jun-1998</date>                        <team score="1">Brazil</team>                        <team score="2">Norway</team>                        </match>                        <match>                        <date>23-Jun-1998</date>                        <team score="0">Scotland</team>                        <team score="3">Morocco</team>                        </match>                        </results>                        

如果要通過(guò) Web 瀏覽器顯示這些足球賽的結果,不要指望系統會(huì )產(chǎn)生合理的布局。需要其它一些機制來(lái)告訴系統如何在瀏覽器屏幕、電視機、WAP 電話(huà)或真正在紙張上顯示數據。這就是使用樣式表的目的。樣式表是一組說(shuō)明性的規則,它定義了應如何表示源文檔中標記標識的信息元素。

W3C 已經(jīng)定義了兩個(gè)系列的樣式表標準。第一個(gè)是在 HTML 中廣泛使用的 CSS(級聯(lián)樣式表),當然它也可以在 XML 中使用。例如,可以使用 CSS 來(lái)表示何時(shí)顯示發(fā)票,應支付的總額應該用 16 點(diǎn) Helvetica 粗體字顯示。但是,CSS 不能執行計算、重新整理或排序數據、組合多個(gè)源碼中的數據或根據用戶(hù)或會(huì )話(huà)的特征個(gè)性化顯示的內容。在這個(gè)足球賽結果的例子中,CSS 語(yǔ)言(即使是最新版本 CSS2,尚未在產(chǎn)品中完全實(shí)現)的功能還不夠強大,不能處理這項任務(wù)。由于這些原因,W3C 已著(zhù)手開(kāi)發(fā)更強大的樣式表語(yǔ)言 XSL(可擴展樣式表語(yǔ)言),并采納了 SGML 社區中開(kāi)發(fā)的 DSSSL(文檔樣式、語(yǔ)義和規范語(yǔ)言)中許多好的構思。

在 XSL 的開(kāi)發(fā)過(guò)程中(這在 DSSSL 中已有所預示),發(fā)現在準備 XML 文檔以備顯示的過(guò)程中執行的任務(wù)可以分成兩個(gè)階段:轉換和格式化。轉換是將一個(gè) XML 文檔(或其內存中的表示法)轉換成另一個(gè) XML 文檔的過(guò)程。格式是將已轉換的樹(shù)狀結構轉換成兩維圖形表示法或可能是一維音頻流的過(guò)程。XSLT 是為控制第一階段“轉換”而開(kāi)發(fā)的語(yǔ)言。第二階段“格式化”的開(kāi)發(fā)工作還是進(jìn)行中。但實(shí)際上,大多數人現在使用 XSL 將 XML 文檔轉換成 HTML,并使用 HTML 瀏覽器作為格式化引擎。這是可行的,因為 HTML 實(shí)際上只是 XML 詞匯表的一個(gè)示例,而 XSLT 可以使用任何 XML 詞匯表作為其目標。

將轉換成一種語(yǔ)言和格式化成另一種語(yǔ)言這兩個(gè)操作分離經(jīng)證實(shí)的確是一種好的決策,因為轉換語(yǔ)言的許多應用程序經(jīng)證明無(wú)法向用戶(hù)顯示文檔。隨著(zhù) XML 日益廣泛地用作電子商務(wù)中的數據互換語(yǔ)法,對于應用程序將數據從一個(gè) XML 詞匯表轉換成另一個(gè) XML 詞匯表的需求也在不斷增加。例如,某個(gè)應用程序可能從電視收視指南中抽取電視節目的細節,并將它們插入按次付費客戶(hù)的月帳單中。同樣,還有許多實(shí)用的數據轉換,在這些轉換中源詞匯表和目標詞匯表是相同的。它們包括數據過(guò)濾,以及商務(wù)操作,如施行漲價(jià)。因此,隨著(zhù)在系統中開(kāi)始越來(lái)越多地以 XML 語(yǔ)法的形式使用數據,XSLT 就逐漸成為由于處理這些數據的隨處可見(jiàn)的高級語(yǔ)言。

在拙作中,我做了這樣一個(gè)比喻:XSLT 與 XML 的關(guān)系,就好象 SQL 與表格化數據的關(guān)系一樣。關(guān)系模型的強大功能并非來(lái)自用表存儲數據的思想,而是源于 SQL 中可行的基于關(guān)系運算的高級數據操作。同樣,XML 的層次化數據模型對應用程序開(kāi)發(fā)者的幫助實(shí)際上也非常小。正是因為 XSLT 作為 XML 數據的高級操作語(yǔ)言提供了如此強大的功能。





回頁(yè)首


XSLT 作為語(yǔ)言

就某些方面而言,XSLT 作為一種語(yǔ)言來(lái)說(shuō)是非常古怪的。我不打算在本文中討論已做出的設計決策的基本原理,盡管可以通過(guò)它們在邏輯上追溯到語(yǔ)言設計者確定的對 XSLT 的要求。如需更完整的說(shuō)明,請參閱拙作的第 1 章。

以下概述了 XSLT 語(yǔ)言的部分主要特性。

XSLT 樣式表是一個(gè) XML 文檔 。通過(guò)使用 XML 的尖括號標記語(yǔ)法來(lái)表示文檔的結構。這種語(yǔ)法在某種程度上是比較笨拙的,而此決策可以使該語(yǔ)言變得更羅嗦。但是,它確實(shí)有好處。它表示可以自動(dòng)使用 XML 的所有詞匯設備(例如,Unicode 字符編碼和轉義,使用外部實(shí)體等等)。它表示很容易使 XSLT 樣式表變成轉換的輸入或輸出,使該語(yǔ)言可以作用于自身。它還使將期望的 XML 輸出塊嵌入樣式表變得很容易。實(shí)際上,許多簡(jiǎn)單的樣式表基本上可以寫(xiě)作期望輸出文檔的模板,并且可以將一些特殊指令嵌入文本中,以便插入輸入中的變量數據或計算某個(gè)值。這就使 XSLT 在這個(gè)簡(jiǎn)單的級別上非常類(lèi)似于許多現有的專(zhuān)用 HTML 模板語(yǔ)言。

基本處理范例是模式匹配。 在這方面,XSLT 繼承了文本處理語(yǔ)言(如 Perl)的傳統,這種傳統可以一直追溯到 1960 年代的語(yǔ)言,如 SNOBOL。XSLT 樣式表包括一組模板規則,每條規則都使用以下方式:“如果在輸入中遇到此條件,則生成下列輸出。”規則的順序是無(wú)關(guān)緊要的,當有幾條規則匹配同一個(gè)輸入時(shí),將應用沖突解決算法。然而,XSLT 與串行文本處理語(yǔ)言的不同之處是 XSLT 對輸入并非逐行進(jìn)行處理。實(shí)際上,XSLT 將輸入 XML 文檔視為樹(shù)狀結構,每條模板規則都適用于樹(shù)中的一個(gè)節點(diǎn)。模板規則本身可以決定下一步處理哪些節點(diǎn),因此不必按輸入文檔的原始順序來(lái)掃描輸入。





回頁(yè)首


XSLT 處理器的操作

XSLT 處理器使用樹(shù)狀結構作為其輸入,并生成另一個(gè)樹(shù)狀結構作為輸出。圖 1 中顯示了這一點(diǎn)。


圖 1. XSLT 輸入和輸出的樹(shù)狀結構

常常通過(guò)對 XML 文檔進(jìn)行語(yǔ)法分析來(lái)生成輸入樹(shù)狀結構,而輸出樹(shù)狀結構通常被串行化到另一個(gè) XML 文檔中。但 XSLT 處理器本身操作的是樹(shù)狀結構,而不是 XML 字符流。這個(gè)概念最初給許多用戶(hù)的感覺(jué)是不切實(shí)際的,結果卻對理解如何執行更復雜的轉換起了關(guān)鍵作用。首先,它表示 XSLT 處理器可以理解源文檔中與樹(shù)狀結構無(wú)關(guān)的特殊之處。例如,無(wú)論屬性是包括在單引號中還是在雙引號中,都不可能應用不同的處理,因為會(huì )將這兩種形式視為同一個(gè)基本文檔的不同表示方法。更深入地看,它表示處理輸入元素或生成輸出元素是一個(gè)原子操作。不可能將處理元素的開(kāi)始標記和結束標記分成單獨的操作,因為一個(gè)元素會(huì )自動(dòng)表示成樹(shù)模型的單節點(diǎn)。

XSLT 使用叫作 XPath 的子語(yǔ)言來(lái)引用輸入樹(shù)中的節點(diǎn)。XPath 本質(zhì)上是與具有層次結構的 XML 數據模型相匹配的查詢(xún)語(yǔ)言。它可以通過(guò)按任何方向瀏覽樹(shù)來(lái)選擇節點(diǎn),并根據節點(diǎn)的值和位置應用謂詞。它還包括用于基本字符串處理、數字計算和布爾代數的工具。例如,XPath 表達式 ../@title 選擇當前節點(diǎn)的父代元素的標題屬性。XPath 表達式用于選擇要進(jìn)行處理的輸入節點(diǎn)、在條件處理期間測試條件,以及計算值以便插入結果樹(shù)中。模板規則中還使用了 XPath 表達式的簡(jiǎn)化形式“模式”來(lái)定義特定模板規則適用于哪些節點(diǎn)。XPath 在單獨的 W3C 推薦書(shū)中定義,它允許使用在其它上下文中再使用的查詢(xún)語(yǔ)言,特別是用于定義擴展超鏈接的 XPointer。

XSLT 以傳統語(yǔ)言(如 Lisp、Haskell 和 Scheme)中的功能性編程的概念為基礎。樣式表由模板組成,這些模板基本上是單一功能 -- 每個(gè)模板將輸出樹(shù)的一部分定義成一部分輸入樹(shù)的功能,并且不產(chǎn)生副作用。使用無(wú)副作用的規則受到嚴格控制(除了轉義成用類(lèi)似 Java 的語(yǔ)言編寫(xiě)的外部代碼)。XSLT 語(yǔ)言允許定義變量,但不允許現有變量更改它的值 -- 即沒(méi)有賦值語(yǔ)句。這個(gè)策略使許多新用戶(hù)感到困惑,其目的是為了允許逐步應用樣式表。其原理是如果語(yǔ)言沒(méi)有副作用,那么對輸入文檔做很小的改動(dòng)時(shí),不必從頭執行整個(gè)轉換就應該可以計算出對輸出文檔的最后更改。目前必須說(shuō)這只是理論上的可能,任何現有 XSLT 處理器還不能實(shí)現。(注:雖然 XSLT 以功能性編程概念為基礎,但它還不是一個(gè)完整的功能性編程語(yǔ)言,因為它缺少將函數當作一級數據類(lèi)型進(jìn)行處理的能力。)





回頁(yè)首


示例樣式表

在這個(gè)階段,使用示例會(huì )使語(yǔ)言變得更清楚。清單 2 顯示了列出足球賽結果的簡(jiǎn)單樣式表。


清單 2. 足球賽結果的基本樣式表
<xsl:transform                        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">                        <xsl:template match="results">                        <html>                        <head><title>                        Results of Group <xsl:value-of select="@group">                        </title></head>                        <body><h1>                        Results of Group <xsl:value-of select="@group">                        </h1>                        <xsl:apply-templates>                        </body></html>                        </xsl:template>                        <xsl:template match="match">                        <h2>                        <xsl:value-of select="team[1]"> versus <xsl:value-of select="team[2]">                        </h2>                        <p>Played on <xsl:value-of select="date"></p>                        <p>Result:                        <xsl:value-of select="team[1] ">                        <xsl:value-of select="team[1]/@score">,                        <xsl:value-of select="team[2] ">                        <xsl:value-of select="team[2]/@score">                        </p>                        </xsl:template>                        </xsl:transform>                        

這個(gè)樣式表包括兩個(gè)模板規則,一個(gè)匹配 <results> 元素,另一個(gè)匹配 <match> 元素。 <results> 元素的模板規則輸出頁(yè)面的標題,然后調用 <xsl:apply-templates> ,這是一個(gè) XSLT 指令,它將處理當前元素的所有子代,對于每個(gè)子代都使用其適當的模板規則。在本例中, <results> 元素的所有子代都是 <match> 元素,所以會(huì )用第二個(gè)模板規則來(lái)處理它們。規則輸出了一個(gè)標識比賽的次級 HTML 標題(以 "Brazil versus Scotland" 的形式),然后生成 HTML 段落,給出了比賽的日期和兩隊的比分。

該轉換的結果就是一個(gè) HTML 文檔,該文檔在瀏覽器中的表示如圖 2 所示。


圖 2. 清單 2 中樣式表的結果

這是一種非常簡(jiǎn)單的表示信息的方法。然而,XSLT 的功能比這要強大得多。清單 3 包含了另一個(gè)可以操作相同源數據的樣式表。這次,樣式表計算一個(gè)比賽名次表,用來(lái)顯示錦標賽結束時(shí)各隊的名次。


清單3. 計算球隊名次表的樣式表
<xsl:transform                        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"                        version="1.0">                        <xsl:variable name="teams" select="http://team[not(.=preceding::team)]">                        <xsl:variable name="matches" select="http://match">                        <xsl:template match="results">                        <html><body>                        <h1>Results of Group <xsl:value-of select="@group"></h1>                        <table cellpadding="5">                        <tr>                        <td>Team</td>                        <td>Played</td>                        <td>Won</td>                        <td>Drawn</td>                        <td>Lost</td>                        <td>For</td>                        <td>Against</td>                        </tr>                        <xsl:for-each select="$teams">                        <xsl:variable name="this" select=".">                        <xsl:variable name="played" select="count($matches[team=$this])">                        <xsl:variable name="won"                        select="count($matches[team[.=$this]/@score > team[.!=$this]/@score])">                        <xsl:variable name="lost"                        select="count($matches[team[.=$this]/@score < team[.!=$this]/@score])">                        <xsl:variable name="drawn"                        select="count($matches[team[.=$this]/@score = team[.!=$this]/@score])">                        <xsl:variable name="for"                        select="sum($matches/team[.=current()]/@score)">                        <xsl:variable name="against"                        select="sum($matches[team=current()]/team/@score) - $for">                        <tr>                        <td><xsl:value-of select="."></td>                        <td><xsl:value-of select="$played"></td>                        <td><xsl:value-of select="$won"></td>                        <td><xsl:value-of select="$drawn"></td>                        <td><xsl:value-of select="$lost"></td>                        <td><xsl:value-of select="$for"></td>                        <td><xsl:value-of select="$against"></td>                        </tr>                        </xsl:for-each>                        </table>                        </body></html>                        </xsl:template>                        </xsl:transform>                        

這里沒(méi)有足夠的篇幅來(lái)完整地說(shuō)明這個(gè)樣式表,簡(jiǎn)而言之,它為球隊聲明了一個(gè)變量,變量值是一個(gè)節點(diǎn)集合,其中每個(gè)參賽球隊都有一個(gè)實(shí)例。然后它計算每支球隊的勝、平或負的比賽場(chǎng)次總數,以及球隊進(jìn)球或失球的總數。圖 3 顯示了它在瀏覽器中的最終輸出結果。


圖 3. 清單 3 中名次樣式表的結果

這個(gè)示例的目的是說(shuō)明 XSLT 不單單能夠對源文檔中出現的文本指定字體和布局。它是一個(gè)完整的編程語(yǔ)言,能夠以任何方式轉換源數據以供顯示,或者輸入另一個(gè)應用程序。





回頁(yè)首


XSLT 的優(yōu)點(diǎn)

您為什么考慮使用 XSLT?

XSLT 給了您傳統高級聲明編程語(yǔ)言的所有好處,特別是對于轉換 XML 文檔的任務(wù)。

高級語(yǔ)言帶來(lái)的實(shí)際好處是開(kāi)發(fā)生產(chǎn)力。但實(shí)際上,真正的價(jià)值源自于 更改的潛力 。與使用低級 DOM 和 SAX 接口編碼的過(guò)程性應用程序相比,用于轉換 XML 數據結構的 XSLT 應用程序更能適應對 XML 文檔細節的更改。在數據庫世界中,這種特性叫做 數據獨立性 ,正是由于數據獨立性導致了諸如 SQL 之類(lèi)聲明性語(yǔ)言的成功,并使舊的引導性數據訪(fǎng)問(wèn)語(yǔ)言走向衰亡。我堅信在 XML 世界中也會(huì )這樣。

當然與所有聲明性語(yǔ)言一樣,XSLT 也會(huì )降低性能。但是對于大多數應用程序,今天的 XSLT 處理器的性能已經(jīng)完全能夠滿(mǎn)足應用程序的需要,并且它會(huì )變得越來(lái)越好。在我的第二篇文章中,我將討論 XSLT 處理器中使用的一些優(yōu)化技巧,如我自己的 Saxon 產(chǎn)品。





回頁(yè)首


結束語(yǔ)

我想要在本文中展示的是 XSLT 是一種用于操作 XML 文檔的完整高級語(yǔ)言,就如同 SQL 是操作關(guān)系表的高級語(yǔ)言一樣。應該注意到 XSLT 不僅是一種樣式設計語(yǔ)言,它比 CSS(或者甚至 CSS2)的功能更強大。

我見(jiàn)到過(guò)一些應用程序,它們的所有商務(wù)邏輯都用 XSLT 編碼。在一個(gè)三層在線(xiàn)銀行系統中,我看到:

  • 從后端操作系統以 XML 消息的形式檢索所有數據。
  • 在聯(lián)機會(huì )話(huà)的持續時(shí)間內,用戶(hù)的帳戶(hù)數據在內存中以 XML DOM 形式表示。
  • 所有給用戶(hù)的信息首先封裝成 XML 消息,然后用服務(wù)器或客戶(hù)機附帶的 XSLT 轉換根據瀏覽器的性能將這些消息轉換成 HTML。

該應用程序的數據都是 XML 格式的,并且邏輯(包括數據訪(fǎng)問(wèn)邏輯、商務(wù)邏輯和顯示邏輯)都由 XSLT 來(lái)實(shí)現。我建議每個(gè)項目都采用那種體系結構,但這還需要很長(cháng)時(shí)間,我認為我們會(huì )在幾年之內見(jiàn)到那種系統。

作為一種編程語(yǔ)言,XSLT 有許多特性 -- 從它使用 XML 語(yǔ)法到其功能性編程原理的基礎 -- 還不為一般 Web 程序員所熟悉。那意味著(zhù)一條陡峭的學(xué)習曲線(xiàn)和通常遇到許多挫折。當初對于 SQL 也是如此,所有這些表示 XSLT 與以前的編程語(yǔ)言有著(zhù)本質(zhì)的區別。但不要放棄:它是功能非常強大的技術(shù),值得努力學(xué)習。





回頁(yè)首


參考資料

  • 您可以參閱本文在 developerWorks 全球站點(diǎn)上的 英文原文.

  • 同一個(gè)作者撰寫(xiě)的 Wrox 書(shū)籍 XSLT Programmer‘s Reference。XSLT 語(yǔ)言的綜合指南。

  • W3C 出版的 XSLT 1.0 Recommendation。XSLT 語(yǔ)言的權威性規范。

  • W3C 出版的 XPath 1.0 Recommendation 。XSLT 樣式表中使用的 XPath 表達式語(yǔ)法的權威性規范。

  • XSL-List ,一個(gè)有關(guān) XSLT 所有事物的繁忙郵件列表,它附帶有可搜索檔案,由 MulberryTech 進(jìn)行管理。

  • www.xslinfo.com ,一個(gè)很好的網(wǎng)絡(luò )中央頁(yè)面,帶有到 XSLT 資源的鏈接,內容包括軟件、書(shū)籍、教程和其它內容。




關(guān)于作者

Michael Kay 在 XML 界非常著(zhù)名,他是 Saxon XSLT 處理器和 Wrox 書(shū)籍 XSLT Programmer‘s Reference 的作者。多年以前,他就獲得了博士學(xué)位,他的研究領(lǐng)域是數據庫技術(shù)。自那時(shí)起,他設計了 Codasyl 數據庫、關(guān)系數據庫、面向對象數據庫和自由文本數據庫軟件。

在寫(xiě)作時(shí),Michael 還兼了幾份工作(并沒(méi)有休息)。他剛結束了在 ICL(一家英國 IT 服務(wù)公司)24 年的工作,并投奔 Software AG 成為體系結構小組的一員,該小組負責掌控未來(lái) XML 產(chǎn)品的方向。

作者選擇這張照片來(lái)證明他并非總是象他在 Wrox 書(shū)籍中所表現得那樣嚴肅。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
W3C XSL 活動(dòng) | 菜鳥(niǎo)教程
為什么要擴展Xslt樣式表功能
XSL基礎教程第一章
XSL基本概念
XSLT轉換XML小結
XML認證教程,第 4 部分: XSL樣式單
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久