• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種XML解析器技術(shù)的研究與實(shí)現(xiàn)

    2011-08-20 05:18:20曹風(fēng)華
    關(guān)鍵詞:解析器詞法文檔

    曹風(fēng)華

    (內(nèi)蒙古財(cái)經(jīng)學(xué)院 計(jì)算機(jī)信息管理學(xué)院,內(nèi)蒙古 呼和浩特 010070)

    XML[1](Extensible Markup Language)是一種可擴(kuò)展標(biāo)記語(yǔ)言,可以用來(lái)定義其他的標(biāo)記語(yǔ)言。自從XML成為W3C推薦標(biāo)準(zhǔn)以來(lái),XML以其簡(jiǎn)單、可擴(kuò)展性、自描述性、平臺(tái)中立的特點(diǎn),正迅速成為Web上信息表示與數(shù)據(jù)交換的標(biāo)準(zhǔn)[2]。目前眾多國(guó)際著名公司都宣稱(chēng)其產(chǎn)品中支持XML,促使XML成為下一代Web的發(fā)展方向。越來(lái)越多的網(wǎng)站和Web的應(yīng)用使用XML技術(shù)進(jìn)行信息發(fā)布和數(shù)據(jù)交換,XML已成為一種備受矚目的技術(shù),甚至被譽(yù)為互聯(lián)網(wǎng)上的世界語(yǔ)。XML現(xiàn)已被廣泛應(yīng)用在各種領(lǐng)域,如電子商務(wù)、企業(yè)協(xié)作、Web服務(wù)等。XML解析器是XML應(yīng)用的基礎(chǔ),XML本身只是以純文本對(duì)數(shù)據(jù)進(jìn)行編碼的一種格式,要想利用XML,或是利用XML文件中所編碼的數(shù)據(jù),必須先將數(shù)據(jù)從純文本中解析出來(lái)。因此,要求必須有一個(gè)能夠識(shí)別XML文檔信息的文本文件閱讀器(即XML解析器),用來(lái)解析XML文檔并提取其中的內(nèi)容。為了提高數(shù)據(jù)的正確性和提高系統(tǒng)的可靠性,XML解析器還要檢查XML實(shí)例文檔是否符合模式的定義和約束,這個(gè)過(guò)程稱(chēng)為XML文檔的有效性驗(yàn)證[3]。但帶有驗(yàn)證功能的解析器通常效率比較低[4]。近年來(lái),有很多旨在提高XML的解析和基于Schema驗(yàn)證性能的研究,本文在詳細(xì)分析了XML解析器的解析過(guò)程的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)特定Schema解析器的生成工具。生成器根據(jù)特定的Schema,自動(dòng)產(chǎn)生一個(gè)遞歸下降的XML解析器。這個(gè)生成解析器能夠?qū)ML文檔同時(shí)進(jìn)行解析和有效性驗(yàn)證。

    1 XML與Schema簡(jiǎn)介

    可擴(kuò)展標(biāo)記語(yǔ)言XML是由World Wide Web Consortium(W3C)于1998年2月發(fā)布的一種基于文本的數(shù)據(jù)描述語(yǔ)言的通行標(biāo)準(zhǔn),與HTML類(lèi)似,XML是一種標(biāo)記語(yǔ)言,兩者在語(yǔ)法上有密切的聯(lián)系。不同的是,HTML著重于如何顯示數(shù)據(jù),而XML的設(shè)計(jì)宗旨是存儲(chǔ)和傳輸數(shù)據(jù),著重于如何描述數(shù)據(jù)。XML來(lái)源于標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言SGML(Standard Generalized Markup Language),是 SGML 的一個(gè)精簡(jiǎn)子集[5]。XML有如下的特點(diǎn):

    (1)可擴(kuò)展性:XML是一種元標(biāo)記語(yǔ)言,即XML可用來(lái)設(shè)計(jì)和定義標(biāo)記語(yǔ)言,XML強(qiáng)大的功能體現(xiàn)在它可以用來(lái)制定自己的標(biāo)記語(yǔ)言。不同的具體應(yīng)用領(lǐng)域可以制定專(zhuān)用的標(biāo)記語(yǔ)言,作為該領(lǐng)域共享數(shù)據(jù)和交換信息的基礎(chǔ)。

    (2)內(nèi)容與表現(xiàn)分離:XML使得用戶(hù)界面和結(jié)構(gòu)數(shù)據(jù)之間保持獨(dú)立。XML描述數(shù)據(jù)的內(nèi)容 (即數(shù)據(jù)是什么),而數(shù)據(jù)呈現(xiàn)方式則通過(guò)樣式單來(lái)表示。內(nèi)容與表現(xiàn)分離,使相同的數(shù)據(jù)可以不同的格式在不同的媒體上表現(xiàn)。

    (3)結(jié)構(gòu)化:XML以結(jié)構(gòu)化的方式描述數(shù)據(jù)。這個(gè)特點(diǎn)使得XML能夠描述復(fù)雜的數(shù)據(jù)結(jié)構(gòu),同時(shí)也為關(guān)系數(shù)據(jù)和層次數(shù)據(jù)提供一種方便的描述方式。

    (4)可驗(yàn)證:XML文檔的結(jié)構(gòu)和內(nèi)容由XML模式語(yǔ)言(如 DTD,XML Schema等)定義。利用 XML文檔所對(duì)應(yīng)的DTD或Schema,可以對(duì)XML文檔有效性進(jìn)行驗(yàn)證,提高了數(shù)據(jù)的可靠性和可用性。

    XML模式(Schema)指的是一類(lèi)XML文檔的結(jié)構(gòu)或是模型,這個(gè)模型描述了一個(gè)有效XML文檔內(nèi)的元素層次結(jié)構(gòu)和允許的內(nèi)容。模式定義了一個(gè)XML詞匯表,包括元素名稱(chēng)、屬性名稱(chēng)等。模式規(guī)定了一個(gè)XML文檔允許出現(xiàn)的元素、相應(yīng)的元素允許出現(xiàn)的屬性以及這些元素的層次結(jié)構(gòu)關(guān)系。XML的模式語(yǔ)言有很多,其中包括文檔類(lèi)型定義 DTD(Document Type Definition)、XML Schema、XML規(guī)則語(yǔ)言描述 RELAX(REgular LAnguage description forXML)、XML樹(shù) 形 規(guī) 則 表 示 TREX(Tree Regular Expressions for XML)和下一代RELAX NG(RELAX Next Generation)[6]。

    XML Schema是一種使用XML語(yǔ)法的XML模式語(yǔ)言。DTD曾是描述、約束XML文檔最廣泛的方法,但在應(yīng)用的過(guò)程中,DTD體現(xiàn)出一些局限性。主要表現(xiàn)在語(yǔ)法與XML語(yǔ)法不一致,只支持有限的數(shù)據(jù)類(lèi)型而不支持命名空間等方面。作為DTD的后繼者,XML Schema克服了這些缺陷。XML Schema區(qū)別于DTD的主要特性表現(xiàn)在[7]:

    (1)XMLSchema本身就是XML文檔,使得XML Schema的處理可以與XML一樣,一些用來(lái)處理XML的技術(shù)也可以用來(lái)處理XML Schema。

    (2)定義了豐富的數(shù)據(jù)類(lèi)型,如布爾型、整型、日期時(shí)間、URI、十進(jìn)制數(shù)等簡(jiǎn)單數(shù)據(jù)類(lèi)型。

    (3)支持用戶(hù)自定義數(shù)據(jù)類(lèi)型。XML Schema支持從現(xiàn)有的數(shù)據(jù)類(lèi)型派生出新的數(shù)據(jù)類(lèi)型,類(lèi)似于面向?qū)ο笾械睦^承。

    (4)充分支持命名空間。

    因此,XML Schema成為W3C的正式推薦標(biāo)準(zhǔn),并正逐步取代XML DTD。

    2 Schema解析器生成工具的設(shè)計(jì)與實(shí)現(xiàn)

    基于特定Schema的XML解析器的基本思想是根據(jù)某一特定的Schema,構(gòu)造一個(gè)專(zhuān)用的解析器,這個(gè)解析器能夠?qū)斎氲腦ML文檔進(jìn)行良構(gòu)檢查,同時(shí)驗(yàn)證其有效性?;谔囟⊿chema解析器將XML的解析和驗(yàn)證結(jié)合在一起,在一定程度上提高了基于XML應(yīng)用的效率和性能。但這個(gè)解析器只適用于由這個(gè)Schema定義的XML實(shí)例文檔,對(duì)于由其他Schema定義的XML實(shí)例文檔則無(wú)能為力。當(dāng)Schema改變時(shí)或者需要另外一個(gè)Schema定義時(shí),必須重新構(gòu)造一個(gè)解析器。而本文設(shè)計(jì)并實(shí)現(xiàn)了利用JavaCC工具自動(dòng)生成一個(gè)特定Schema解析器的方法。該方法以一個(gè)Schema文件為輸入,生成一個(gè)基于這個(gè)Schema的解析器。

    自動(dòng)生成特定解析器的基本流程如圖1所示。由于Schema文檔本身也是一種XML文檔,所以完全可以使用通用的XML解析器對(duì)其解析,也可以構(gòu)造一個(gè)專(zhuān)用于解析Schema的解析器,但由于Schema的語(yǔ)法比較復(fù)雜,構(gòu)造起來(lái)比較困難。一種較容易實(shí)現(xiàn)的方法是先將Schema轉(zhuǎn)化為XML樹(shù)模型的表示,再轉(zhuǎn)換為Schema的抽象模型表示?;谔囟⊿chema的XML解析器生成工具的基本步驟如下:

    (1)首先利用JavaCC構(gòu)造一個(gè)通用的XML解析器(GeneralParser)。

    (2)通用XML解析器將Schema輸入文件解析成一個(gè)XML語(yǔ)法的元素節(jié)點(diǎn)樹(shù)。

    (3)遍歷這一XML語(yǔ)法的樹(shù)模型,將其轉(zhuǎn)換為Schema語(yǔ)法的抽象模型。

    (4)根據(jù)Schema抽象模型,生成特定解析器的詞法和語(yǔ)法規(guī)格說(shuō)明。

    (5)利用 JavaCC,生成基于輸入 Schema的專(zhuān)用 XML解析器。

    2.1 構(gòu)造XML解析器

    構(gòu)造XML解析器的目的在于解析Schema文檔,提取其描述和約束XML文檔結(jié)構(gòu)和內(nèi)容的信息。XML Schema遵循XML語(yǔ)法,因此可以使用任何通用的XML解析器對(duì)其解析。下面介紹一個(gè)用于解析XML Schema文檔的XML解析器的構(gòu)造。

    由于XML文檔是可以包含DTD聲明和DTD子集的,所以處理XML文檔時(shí)也應(yīng)該包含DTD的語(yǔ)法的處理。但是XML Schema也是一種XML文檔,一般不會(huì)包含DTD聲明和定義。另外,由XML Schema定義的XML實(shí)例文檔通常也不會(huì)再用DTD定義,所以也不會(huì)包含DTD的聲明或DTD子集。因此,在處理XML Schema文檔時(shí)不考慮DTD語(yǔ)法的處理;在生成這個(gè)Schema定義的XML實(shí)例文檔的解析器時(shí),也不考慮DTD語(yǔ)法的處理。這樣有助于簡(jiǎn)化設(shè)計(jì)和實(shí)現(xiàn)。

    2.1.1構(gòu)造詞法分析器

    JavaCC能根據(jù)輸入的詞法規(guī)格說(shuō)明,產(chǎn)生一個(gè)基于DFA的詞法分析器。因此需要提供一個(gè)合適的詞法規(guī)格說(shuō)明。

    JavaCC的詞法規(guī)格說(shuō)明使用正則表達(dá)式定義詞法結(jié)構(gòu),每一個(gè)詞法記號(hào)(Token)名稱(chēng)對(duì)應(yīng)著一個(gè)正則表達(dá)式,例如:<S:(""|" "|" "|" ")+>表示空白空間的詞法構(gòu)成,其中S是助記符,而(""|" "|" "|" ")+是相應(yīng)的正則表達(dá)式,表示由一個(gè)或多個(gè)分隔字符組成的字符串 , 分 隔 字 符 包 括 空 格 、 制 表 符 ′ ′、 換 行 符 ′ ′和 ′ ′。

    XML規(guī)范中表示詞法結(jié)構(gòu)的表達(dá)式,很多可以比較容易地轉(zhuǎn)換為JavaCC詞法規(guī)格說(shuō)明的正則表達(dá)式形式。但有一些需要特殊的處理才能轉(zhuǎn)換為JavaCC可以識(shí)別的表示形式。

    JavaCC的詞法規(guī)格說(shuō)明由一些詞法狀態(tài)和定義在各個(gè)詞法狀態(tài)內(nèi)的正則表達(dá)式組成。生成的詞法分析器在分析詞法的任何時(shí)候都只能處于一個(gè)詞法狀態(tài)中。這種機(jī)制能夠有效地解決多個(gè)正則表達(dá)式發(fā)生沖突的問(wèn)題。例如,識(shí)別標(biāo)記間的字符數(shù)據(jù)的正則表達(dá)式可以表示 為 :<CHAR_DATA:(~["<","&","]"]|"]"~["< ","&","]"]|"]"("]")+~["<","&",">"])+("]")*>,這與其他很多記號(hào)的正則表達(dá)式相沖突,包括標(biāo)記中的元素名<IDENTIFIER:<NAME>>。這是因?yàn)閮蓚€(gè)正則表達(dá)式表示的語(yǔ)言有公共子集,當(dāng)出現(xiàn)公共子集中的一個(gè)串時(shí),詞法分析器不知道應(yīng)該匹配哪一個(gè)正則表達(dá)式。實(shí)際上JavaCC只將其匹配為在詞法規(guī)格文件中較早出現(xiàn)的那個(gè)表達(dá)式。利用詞法狀態(tài)可以解決這類(lèi)問(wèn)題,使元素名只會(huì)出現(xiàn)在標(biāo)記中,而字符數(shù)據(jù)只出現(xiàn)在標(biāo)記外,因而可以定義兩種詞法狀態(tài):在標(biāo)記中的狀態(tài)和標(biāo)記外狀態(tài),使它們分別在這兩個(gè)詞法狀態(tài)中識(shí)別。詞法狀態(tài)之間的轉(zhuǎn)移可以通過(guò)在匹配一個(gè)記號(hào)后,指定要轉(zhuǎn)移的下一個(gè)詞法狀態(tài)來(lái)實(shí)現(xiàn)。另一種更靈活的方法是在執(zhí)行詞法動(dòng)作(定義在匹配表達(dá)式后執(zhí)行的Java代碼)時(shí),調(diào)用詞法分析器的SwitchTo()方法,轉(zhuǎn)移到某一指定的狀態(tài)中。

    2.1.2構(gòu)造語(yǔ)法分析器

    JavaCC使用自頂向下遞歸下降的分析方法,并且在需要選擇候選式的地方默認(rèn)向前看一個(gè)符號(hào)進(jìn)行判斷,因此JavaCC使用的也是一種LL(1)的分析方法。XML標(biāo)準(zhǔn)中的EBNF不是LL(1)的文法,這樣會(huì)導(dǎo)致一些選擇的沖突,使得語(yǔ)法分析器不能正確地分析語(yǔ)法。雖然JavaCC也支持LL(k)(k>1)的分析方法,即在所有的選擇點(diǎn)向前看k個(gè)符號(hào),但這樣會(huì)很大程度地降低解析的效率。解決的方法是對(duì)XML標(biāo)準(zhǔn)中的EBNF表示的文法進(jìn)行改寫(xiě),使其成為L(zhǎng)L(1)文法。將非LL(1)文法改寫(xiě)為L(zhǎng)L(1)的過(guò)程包括消除左遞歸和提取左因子。XML標(biāo)準(zhǔn)中的文法幾乎不存在左遞歸,因此只需要提取左因子。

    XML標(biāo)準(zhǔn)中語(yǔ)法的產(chǎn)生式存在公共左因子的典型例子是元素的產(chǎn)生式。元素及其相關(guān)的EBNF表達(dá)式如表1所示。

    表1 元素及其相關(guān)的EBNF表達(dá)式

    元素產(chǎn)生式的右部是空元素標(biāo)記或開(kāi)始標(biāo)記后跟元素內(nèi)容和結(jié)束標(biāo)記。其中空元素標(biāo)記和開(kāi)始標(biāo)記有比較長(zhǎng)的公共左因子′<′N(xiāo)ame(S Attribute)*S?,當(dāng)語(yǔ)法分析器當(dāng)前的輸入符號(hào)為′<′時(shí),無(wú)法確定選擇EmptyElemTag還是STag content ETag進(jìn)行推導(dǎo),這時(shí)解析器就會(huì)報(bào)錯(cuò),因此首先要將左因子提取出來(lái)。改寫(xiě)元素的產(chǎn)生式為:

    element::=′<′N(xiāo)ame(S Attribute)*S? (′/>′|′>′content ETag)(1)

    這樣語(yǔ)法分析器遇到′<′時(shí),就不存在選擇的問(wèn)題,當(dāng)遇到′/>′或′>′時(shí)也能確定唯一的子式。但產(chǎn)生式還不是LL(1)的。其原因在于子式(S Attribute)*S?也存在選擇的沖突。因?yàn)镕IRST ((S Attribute)*)∩FOLLOW((S Attribute)*)={S},當(dāng)語(yǔ)法分析器遇到S符號(hào)時(shí),不知道應(yīng)將其匹配為(S Attribute)*中的S,還是匹配為后面的S?中的S。因此還需要對(duì)產(chǎn)生式進(jìn)行進(jìn)一步的改寫(xiě)。

    先將子式 AttS::=((S Attribute)*S?)改寫(xiě)為等價(jià)的上下文無(wú)關(guān)文法,然后如圖2所示提取左因子。

    上下文無(wú)關(guān)文法用EBNF表示為:

    element改寫(xiě)為:

    式(2)中,AttS是一個(gè)非終結(jié)符,語(yǔ)法分析的過(guò)程中對(duì)應(yīng)于一個(gè)過(guò)程調(diào)用,并且AttS中存在著遞歸,頻繁的調(diào)用與返回會(huì)使系統(tǒng)的消耗較大。因此本文考慮了更好的處理方法:首先對(duì)式(2)進(jìn)析分析,式(2)中存在選擇沖突的原因在于(S Attribute)*的后面存在著S?,S表示空白空間,而一般的程序語(yǔ)言的語(yǔ)法分析是不處理空白空間的,通常在詞法分析階段就把它忽略。是否可以簡(jiǎn)單地采取忽略空白的做法呢?答案似乎是不可以。因?yàn)楹雎钥瞻讜?huì)導(dǎo)致一些良構(gòu)約束的檢查變得困難。例如屬性間必須有空白,而且有時(shí)XML文檔中的空白是有意義的,應(yīng)用程序可能會(huì)用到這些空白。但是標(biāo)記內(nèi)部的空白是不會(huì)提交給應(yīng)用程序的,為此可以采取靈活的處理方法: 由于 XML 的 EBNF 語(yǔ)法 中′>′或′/>′前面 都必有S? ,因此可以把 S? 與′>′或′/>′合并為一個(gè)單詞。在詞法描述中,定義記號(hào)<SRANGLE:(<S>)? ">">和<SCLOSEDTAG:(<S>)? "/>">分別代替<RANGLE:">">和<CLOSEDTAG:"/>">,這樣就消除了式(1)中的 S? ,而(SAttribute)*中的S可以保留下來(lái),使得FIRST((S Attribute)*)∩FOLLOW((S Attribute)*)=φ,得到元素的產(chǎn)生式為式(4)。式(4)每識(shí)別一個(gè)屬性比式(2)少了一次過(guò)程調(diào)用,并且消除了遞歸。

    把XML標(biāo)準(zhǔn)的EBNF文法改寫(xiě),使得JavaCC可以用LL(1)分析法對(duì)其處理。但這種改寫(xiě)有時(shí)需要一些技巧,并且不能保證一定有效,改寫(xiě)后的表達(dá)式通常比較復(fù)雜,也不夠直觀。一種折中的方法是在少數(shù)的一些選擇點(diǎn)向前看2個(gè)符號(hào)。

    2.1.3 語(yǔ)義分析

    XML中元素間是層次嵌套的關(guān)系,因而可以用樹(shù)來(lái)表示元素間的關(guān)系,如圖3所示。樹(shù)中的節(jié)點(diǎn)表示一個(gè)XML元素,根節(jié)點(diǎn)就是XML。

    Schema文檔唯一的根元素(Schema),各個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)對(duì)應(yīng)于各個(gè)元素的子元素。元素的屬性作為節(jié)點(diǎn)的屬性。圖4是元素節(jié)點(diǎn)及其屬性的UML類(lèi)圖。

    XML解析器采用語(yǔ)法制導(dǎo)的翻譯方法進(jìn)行語(yǔ)義分析,即語(yǔ)義分析在語(yǔ)法分析的過(guò)程中完成。在XML文法產(chǎn)生式的右部中,嵌入相應(yīng)的語(yǔ)義動(dòng)作,如創(chuàng)建節(jié)點(diǎn)、添加子節(jié)點(diǎn)和添加屬性等。在分析的過(guò)程中,執(zhí)行所遇到的語(yǔ)義動(dòng)作。當(dāng)語(yǔ)法分析結(jié)束而沒(méi)有產(chǎn)生任何錯(cuò)誤時(shí),就可以得到一棵包含Schema文檔元素和屬性信息的樹(shù)。

    2.2 模型轉(zhuǎn)換

    用本文構(gòu)造的XML解析器分析Schema文檔,得到一棵以元素為節(jié)點(diǎn)的樹(shù)。這棵樹(shù)隱含了所需要的描述約束信息,但它是基于XML語(yǔ)法的,無(wú)法被直接利用,因此必須將其轉(zhuǎn)換為Schema語(yǔ)法的對(duì)象模型。

    2.2.1 XML Schema抽象模型

    為了能夠生成一個(gè)基于特定Schema的解析器,需要一個(gè)合適的模型來(lái)描述Schema文檔的結(jié)構(gòu)和各種成分。XML Schema標(biāo)準(zhǔn)中定義了一個(gè)抽象模型。

    XML Schema抽象模型由13種模式成分構(gòu)成,可分為3組:主模式成分、二級(jí)模式成分、助手模式成分。主模式成分包括簡(jiǎn)單類(lèi)型定義、復(fù)雜類(lèi)型定義、屬性聲明、元素聲明;二級(jí)模式成分包括屬性組定義、本體約束定義、模型組定義、記號(hào)聲明;助手模式成分包括注解、模型組、粒子、通配符、屬性使用。

    主模式成分構(gòu)成模式抽象模型的大部分,其中的聲明主要描述了XML實(shí)例文檔的內(nèi)容,而類(lèi)型定義尤其是復(fù)雜類(lèi)型定義則描述了XML實(shí)例文檔的結(jié)構(gòu)信息。對(duì)XML實(shí)例文檔的驗(yàn)證主要是對(duì)XML文檔的內(nèi)容和結(jié)構(gòu)兩方面的驗(yàn)證。

    復(fù)雜類(lèi)型定義使用了其他的模式成分來(lái)定義一個(gè)元素的內(nèi)容,這些模式成分包括屬性聲明、屬性組聲明、粒子、模型組等,使用屬性聲明和屬性組定義元素的屬性,是使用一個(gè)粒子類(lèi)型來(lái)定義一個(gè)復(fù)雜的元素內(nèi)容模型。復(fù)雜類(lèi)型可以派生新的復(fù)雜類(lèi)型,派生的方式有擴(kuò)展與約束兩種。

    粒子(particle)是描述元素內(nèi)容的一個(gè)術(shù)語(yǔ),一個(gè)粒子包含兩個(gè)出現(xiàn)次數(shù)約束和一個(gè)項(xiàng)。出現(xiàn)次數(shù)約束包括最大出現(xiàn)次數(shù)和最少出現(xiàn)次數(shù)約束。粒子的項(xiàng)可以是一個(gè)元素或一個(gè)模型組或一個(gè)通配符。

    一個(gè)模型組包含了一組粒子,這些粒子的組合關(guān)系是以下三種之一:順序關(guān)系 (sequence)、選擇關(guān)系(choice)、全體關(guān)系(all)。順序關(guān)系的粒子必須以順序的次序出現(xiàn);選擇關(guān)系則只出現(xiàn)一個(gè)粒子;全體關(guān)系的粒子可以任意的次序出現(xiàn),每一個(gè)粒子最多只能出現(xiàn)一次,而且其粒子的項(xiàng)只能是元素。模型組與模型組定義緊密聯(lián)系而又有所區(qū)別,模型組定義是具有名字模式成分,相應(yīng)的 XML元素是<group>,而模型組相應(yīng)的 XML元素是<all>、<choice>和<sequence>。

    XMLSchema只定義了概念上的抽象模型,具體的實(shí)現(xiàn)還需要自己來(lái)完成。本文提供了Schema抽象模型的一個(gè)簡(jiǎn)化實(shí)現(xiàn)。這個(gè)簡(jiǎn)化的實(shí)現(xiàn)暫時(shí)忽略了記號(hào)聲明、本體約束定義、注解和通配符。其他各模式成分也作了相應(yīng)的簡(jiǎn)化。簡(jiǎn)化后實(shí)現(xiàn)包含以下各類(lèi):

    SchemaModel Schema模型類(lèi):包含各種模式成分,如元素聲明、屬性聲明、類(lèi)型定義、模型組定義等。

    XSComponent抽象的模式成分類(lèi):所有模式成分類(lèi)的父類(lèi),實(shí)現(xiàn)轉(zhuǎn)換文法接口。

    XSElement元素聲明類(lèi):表示元素聲明模式成分。

    XSAttribute屬性聲明類(lèi):表示屬性聲明和屬性使用模式成分。

    XSAttGroup屬性組類(lèi):表示屬性組定義的模式成分,以及復(fù)雜類(lèi)型定義中所有屬性聲明的集合。

    XSType抽象類(lèi)型類(lèi):作為簡(jiǎn)單類(lèi)型和復(fù)雜類(lèi)型父類(lèi)。

    XSComplexType復(fù)雜類(lèi)型定義類(lèi):表示復(fù)雜類(lèi)型定義模式成分。

    XSSimpleType簡(jiǎn)單類(lèi)型定義類(lèi):表示簡(jiǎn)單類(lèi)型定義模式成分。

    XSModelGroup模型組類(lèi):表示模型組及模型組定義模式成分。

    XSParticle粒子類(lèi):表示粒子模式成分。

    2.2.2遍歷轉(zhuǎn)換

    XML語(yǔ)法的模型轉(zhuǎn)換為Schema抽象模型通過(guò)遍歷元素節(jié)點(diǎn)樹(shù)來(lái)完成,遍歷使用遞歸的方式進(jìn)行。對(duì)于元素節(jié)點(diǎn)樹(shù)中的每一個(gè)非葉子節(jié)點(diǎn),遍歷其子節(jié)點(diǎn),得到相應(yīng)的子模式成分,然后返回本節(jié)點(diǎn)表示的模式成分。

    對(duì)XML的元素節(jié)點(diǎn)樹(shù)的遍歷過(guò)程實(shí)際上也是對(duì)Schema文檔有效性驗(yàn)證的過(guò)程。

    本文介紹了XML解析的詳細(xì)過(guò)程,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)特定Schema的XML解析器的自動(dòng)生成工具。這個(gè)生成工具以一個(gè)XML Schema文件作為輸入,輸出一個(gè)JavaCC詞法和語(yǔ)法規(guī)格說(shuō)明文件,然后在JavaCC工具的幫助下,生成一個(gè)基于特定XML Schema的XML解析器。這個(gè)解析器能夠?qū)ML文檔進(jìn)行解釋的同時(shí),驗(yàn)證其有效性。

    [1]劉芳,肖鐵軍.XML應(yīng)用的基石:XML解析技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),26(19):2823-2839.2005.

    [2]CHIU K,LU W.A Compiler-based approach to schemaspecific XML parsing [C].In: The FirstInternational Workshop on High PerformanceXML Processing, New York, USA, May, 2004:17-22.

    [3]MATSA M, PERKINS E, HEIFETS A, et al.A highperformance interpretive approach to schema-directed parsing[C].In: WWW ‘07: Proceedings of the 16th international conference on World Wide Web, New York,NY, USA, ACM.2007:1093-1102.

    [4]ZHANG W, ENGELEN R V.TDX:a high-performance table-driven XML parser[C].In: ACM-SE 44: Proceedings of the44th annual Southeast regional conference,New York, NY, USA, ACM.2006:726-731.

    [5]ZHANG W,ENGELEN R V.A table-driven streaming XML parsing methodology for high-performance Web services[C].In: ICWS ‘06: Proceedings of the IEEE International Conference on Web Services(ICWS’06),Washington, DC, USA, IEEE Computer Society.2006:197-204.

    [6]KOSTOULAS M G,MATSA M,MENDELSOHN N,et al.Xml screamer:an integrated approach to high performance xml parsing, validation and deserialization[C].In: WWW‘06: Proceedings of the 15th international conference on World Wide Web, New York, NY, USA, ACM.2006:93-102.

    [7]左偉明.即用即查XML數(shù)據(jù)標(biāo)記語(yǔ)言參考手冊(cè) [M].北京:人民郵電出版社,2007.

    猜你喜歡
    解析器詞法文檔
    詞法 名詞、代詞和冠詞
    有人一聲不吭向你扔了個(gè)文檔
    基于多解析器的域名隱私保護(hù)機(jī)制
    基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實(shí)現(xiàn)
    如何防御DNS陷阱?常用3種DNS欺騙手法
    一種基于無(wú)關(guān)DNS的通信隱私保護(hù)技術(shù)研究
    電子世界(2018年14期)2018-04-15 16:14:25
    應(yīng)用于詞法分析器的算法分析優(yōu)化
    談對(duì)外漢語(yǔ)“詞法詞”教學(xué)
    基于RI碼計(jì)算的Word復(fù)制文檔鑒別
    Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
    中文乱码字字幕精品一区二区三区| 日本91视频免费播放| 国产一区二区 视频在线| 中文字幕人妻丝袜制服| 九色亚洲精品在线播放| 精品少妇内射三级| 黑人欧美特级aaaaaa片| 丰满人妻熟妇乱又伦精品不卡| 亚洲欧洲精品一区二区精品久久久| 夫妻午夜视频| 欧美精品av麻豆av| 黄片播放在线免费| 黄片播放在线免费| 亚洲中文日韩欧美视频| 亚洲欧美清纯卡通| 亚洲一区中文字幕在线| av电影中文网址| 美女视频免费永久观看网站| 深夜精品福利| 观看av在线不卡| 久久国产精品人妻蜜桃| 亚洲精品中文字幕在线视频| 人人妻人人爽人人添夜夜欢视频| 亚洲精品久久久久久婷婷小说| www.精华液| 久久精品亚洲熟妇少妇任你| 欧美精品高潮呻吟av久久| 成人亚洲欧美一区二区av| 亚洲av成人精品一二三区| 精品一区二区三区av网在线观看 | 欧美在线一区亚洲| www.精华液| 欧美日韩精品网址| 国产av一区二区精品久久| 免费观看人在逋| e午夜精品久久久久久久| 亚洲国产欧美网| 伊人久久大香线蕉亚洲五| 亚洲中文av在线| 99香蕉大伊视频| 高潮久久久久久久久久久不卡| 国产视频一区二区在线看| 80岁老熟妇乱子伦牲交| 麻豆av在线久日| 一级毛片电影观看| 在线观看www视频免费| 18禁国产床啪视频网站| 一区在线观看完整版| 黄色怎么调成土黄色| 妹子高潮喷水视频| av有码第一页| 精品国产一区二区久久| 天天躁日日躁夜夜躁夜夜| 国产在线一区二区三区精| 亚洲av日韩精品久久久久久密 | 国产精品一区二区精品视频观看| 午夜福利乱码中文字幕| 男女边摸边吃奶| 激情五月婷婷亚洲| 国产精品久久久久久人妻精品电影 | 久久精品国产a三级三级三级| 十八禁网站网址无遮挡| 午夜老司机福利片| 亚洲国产欧美网| 午夜免费成人在线视频| 少妇裸体淫交视频免费看高清 | 久久综合国产亚洲精品| 另类精品久久| 国产免费现黄频在线看| 国产一区亚洲一区在线观看| 五月天丁香电影| 少妇精品久久久久久久| 中国美女看黄片| www.熟女人妻精品国产| 超碰97精品在线观看| 欧美人与善性xxx| 十八禁人妻一区二区| 久久综合国产亚洲精品| 精品人妻一区二区三区麻豆| 久久精品国产亚洲av高清一级| 国产精品人妻久久久影院| av不卡在线播放| 国产精品香港三级国产av潘金莲 | 精品国产超薄肉色丝袜足j| 亚洲精品一二三| 在线观看免费日韩欧美大片| 亚洲欧美日韩高清在线视频 | 欧美精品亚洲一区二区| 日韩欧美一区视频在线观看| 国产精品久久久久久人妻精品电影 | 久久久久久久久久久久大奶| 欧美国产精品一级二级三级| 丰满饥渴人妻一区二区三| 99re6热这里在线精品视频| 国产一区二区三区av在线| xxxhd国产人妻xxx| videos熟女内射| 你懂的网址亚洲精品在线观看| 少妇的丰满在线观看| 老司机影院成人| 一区福利在线观看| 成年人黄色毛片网站| 久久99热这里只频精品6学生| 久久久久久人人人人人| 性色av乱码一区二区三区2| 亚洲综合色网址| 国产黄色视频一区二区在线观看| 尾随美女入室| 99热网站在线观看| 在线 av 中文字幕| 国产精品久久久人人做人人爽| 免费人妻精品一区二区三区视频| 国产99久久九九免费精品| 精品人妻1区二区| 你懂的网址亚洲精品在线观看| av网站在线播放免费| 狂野欧美激情性bbbbbb| 国产一区二区激情短视频 | 亚洲精品国产av成人精品| 日本欧美视频一区| 欧美日韩成人在线一区二区| 国精品久久久久久国模美| www.自偷自拍.com| 国产精品久久久久久人妻精品电影 | 免费人妻精品一区二区三区视频| 丁香六月欧美| 男女无遮挡免费网站观看| 视频在线观看一区二区三区| 久久青草综合色| 嫩草影视91久久| 精品免费久久久久久久清纯 | 色94色欧美一区二区| 少妇的丰满在线观看| 久热爱精品视频在线9| 国产成人一区二区在线| 99热国产这里只有精品6| 99久久99久久久精品蜜桃| 国产精品麻豆人妻色哟哟久久| 久久久久久久久久久久大奶| 脱女人内裤的视频| 午夜影院在线不卡| 国产一区二区三区av在线| 大片免费播放器 马上看| 国产成人系列免费观看| 两性夫妻黄色片| 99久久综合免费| 国产在线观看jvid| 亚洲人成电影观看| 一级毛片我不卡| 一区二区日韩欧美中文字幕| 国产精品一国产av| 亚洲一区中文字幕在线| 亚洲中文av在线| 777米奇影视久久| 亚洲五月色婷婷综合| 看免费成人av毛片| 免费久久久久久久精品成人欧美视频| 国产成人欧美| 母亲3免费完整高清在线观看| 欧美日韩视频高清一区二区三区二| 黑人巨大精品欧美一区二区蜜桃| 男的添女的下面高潮视频| 亚洲情色 制服丝袜| 久久人人97超碰香蕉20202| 亚洲欧美精品自产自拍| 精品少妇久久久久久888优播| 日本五十路高清| 亚洲国产精品一区二区三区在线| 久久热在线av| 亚洲欧美色中文字幕在线| 欧美亚洲 丝袜 人妻 在线| 国产成人免费无遮挡视频| 国产精品久久久av美女十八| 香蕉国产在线看| 99久久99久久久精品蜜桃| 午夜福利乱码中文字幕| 少妇人妻久久综合中文| 一区二区三区激情视频| 亚洲欧美一区二区三区黑人| xxxhd国产人妻xxx| 午夜免费观看性视频| 男人操女人黄网站| 九色亚洲精品在线播放| 久久久国产精品麻豆| 午夜激情久久久久久久| 91字幕亚洲| 国产福利在线免费观看视频| 国产av国产精品国产| 欧美精品高潮呻吟av久久| 久久精品亚洲av国产电影网| 女人爽到高潮嗷嗷叫在线视频| 两个人免费观看高清视频| 久久久精品免费免费高清| 欧美日韩视频精品一区| 亚洲欧美清纯卡通| 岛国毛片在线播放| 飞空精品影院首页| 国产精品 国内视频| 高清不卡的av网站| 久久毛片免费看一区二区三区| 精品国产一区二区久久| 侵犯人妻中文字幕一二三四区| 成人亚洲精品一区在线观看| 激情五月婷婷亚洲| 巨乳人妻的诱惑在线观看| 欧美日韩视频精品一区| 97精品久久久久久久久久精品| 成人亚洲精品一区在线观看| 青春草亚洲视频在线观看| 亚洲伊人色综图| 亚洲激情五月婷婷啪啪| 久久精品亚洲熟妇少妇任你| 久久鲁丝午夜福利片| 大片电影免费在线观看免费| 中文字幕亚洲精品专区| av网站免费在线观看视频| av在线播放精品| 美女午夜性视频免费| 欧美人与性动交α欧美精品济南到| 欧美精品啪啪一区二区三区 | 精品免费久久久久久久清纯 | 成人亚洲欧美一区二区av| 日本一区二区免费在线视频| 我要看黄色一级片免费的| 久久精品aⅴ一区二区三区四区| 免费观看av网站的网址| 一区二区三区四区激情视频| 精品人妻在线不人妻| 国产成人av教育| 九色亚洲精品在线播放| 男女免费视频国产| 咕卡用的链子| av有码第一页| 精品少妇久久久久久888优播| 男女无遮挡免费网站观看| 操出白浆在线播放| 天堂俺去俺来也www色官网| 精品国产乱码久久久久久男人| 国产成人av激情在线播放| 男人添女人高潮全过程视频| 少妇人妻 视频| 亚洲专区国产一区二区| 99国产精品一区二区蜜桃av | 永久免费av网站大全| 亚洲,一卡二卡三卡| 成人午夜精彩视频在线观看| 操美女的视频在线观看| 晚上一个人看的免费电影| 日韩人妻精品一区2区三区| 亚洲中文日韩欧美视频| 19禁男女啪啪无遮挡网站| 国产男女内射视频| 免费少妇av软件| 99热国产这里只有精品6| 国产亚洲av高清不卡| 欧美激情高清一区二区三区| 久久精品久久精品一区二区三区| 考比视频在线观看| 亚洲国产欧美在线一区| 日本五十路高清| 成人黄色视频免费在线看| 美女国产高潮福利片在线看| 国产高清不卡午夜福利| 亚洲,一卡二卡三卡| 免费看不卡的av| 91麻豆av在线| tube8黄色片| 欧美日韩一级在线毛片| 侵犯人妻中文字幕一二三四区| 欧美激情高清一区二区三区| 中文字幕高清在线视频| 在线天堂中文资源库| 欧美国产精品一级二级三级| 久久国产精品男人的天堂亚洲| 欧美日韩福利视频一区二区| 超碰97精品在线观看| 国产精品 国内视频| 亚洲欧美清纯卡通| 久久中文字幕一级| 午夜91福利影院| 欧美人与善性xxx| 黑人猛操日本美女一级片| 日本91视频免费播放| 欧美日韩福利视频一区二区| 妹子高潮喷水视频| 青草久久国产| 亚洲三区欧美一区| 亚洲一区二区三区欧美精品| 欧美 亚洲 国产 日韩一| 国产免费现黄频在线看| 午夜福利视频精品| 性高湖久久久久久久久免费观看| 亚洲精品久久午夜乱码| 亚洲成人国产一区在线观看 | 中文字幕人妻丝袜一区二区| www.熟女人妻精品国产| av视频免费观看在线观看| 成人国语在线视频| 丝袜喷水一区| 国产成人免费观看mmmm| 国产日韩欧美亚洲二区| 国产极品粉嫩免费观看在线| 欧美日韩黄片免| 久久免费观看电影| 下体分泌物呈黄色| 99国产精品一区二区蜜桃av | 国产黄频视频在线观看| 国产精品一二三区在线看| 亚洲国产欧美一区二区综合| 亚洲一区中文字幕在线| 天天操日日干夜夜撸| 最近手机中文字幕大全| 美女脱内裤让男人舔精品视频| 国产免费视频播放在线视频| 欧美日本中文国产一区发布| 色视频在线一区二区三区| 国产91精品成人一区二区三区 | 最新在线观看一区二区三区 | 日本av免费视频播放| 亚洲欧美精品综合一区二区三区| 国产成人精品久久二区二区91| 99九九在线精品视频| 国产精品.久久久| 人人妻人人添人人爽欧美一区卜| 尾随美女入室| 50天的宝宝边吃奶边哭怎么回事| 人人妻人人爽人人添夜夜欢视频| 9色porny在线观看| 91精品三级在线观看| 亚洲欧洲精品一区二区精品久久久| 成年动漫av网址| 久久久久视频综合| 欧美av亚洲av综合av国产av| 精品久久蜜臀av无| 国产真人三级小视频在线观看| 亚洲成国产人片在线观看| 亚洲图色成人| 99热网站在线观看| 少妇精品久久久久久久| 婷婷丁香在线五月| h视频一区二区三区| e午夜精品久久久久久久| av线在线观看网站| 亚洲免费av在线视频| 亚洲图色成人| e午夜精品久久久久久久| 乱人伦中国视频| 国产极品粉嫩免费观看在线| 黑人巨大精品欧美一区二区蜜桃| 亚洲国产av影院在线观看| 亚洲精品国产av蜜桃| 69精品国产乱码久久久| 在线亚洲精品国产二区图片欧美| av福利片在线| av线在线观看网站| 久久久久久亚洲精品国产蜜桃av| 少妇精品久久久久久久| 亚洲综合色网址| 日本欧美视频一区| 国产欧美日韩一区二区三 | 男男h啪啪无遮挡| 大香蕉久久网| 久久精品国产综合久久久| 国产男女超爽视频在线观看| 亚洲国产最新在线播放| 黄频高清免费视频| 国产精品久久久久久精品电影小说| 精品免费久久久久久久清纯 | 后天国语完整版免费观看| 久久久久久免费高清国产稀缺| 国产精品成人在线| 欧美成人精品欧美一级黄| 后天国语完整版免费观看| 国产成人欧美| 午夜老司机福利片| 丝袜喷水一区| 美女扒开内裤让男人捅视频| 午夜福利一区二区在线看| 男女国产视频网站| 男女床上黄色一级片免费看| 久久 成人 亚洲| 岛国毛片在线播放| 咕卡用的链子| 国产成人精品久久二区二区91| 男人爽女人下面视频在线观看| 国产女主播在线喷水免费视频网站| 在现免费观看毛片| 亚洲一区二区三区欧美精品| 婷婷色av中文字幕| 欧美日韩一级在线毛片| 97在线人人人人妻| 国产一区亚洲一区在线观看| 成人午夜精彩视频在线观看| 青青草视频在线视频观看| 精品人妻熟女毛片av久久网站| 欧美日韩视频高清一区二区三区二| www.999成人在线观看| 午夜免费鲁丝| 九草在线视频观看| 亚洲成人手机| 男女之事视频高清在线观看 | 欧美日韩综合久久久久久| 一本久久精品| 久久久久久久久久久久大奶| 亚洲精品在线美女| 亚洲av成人精品一二三区| 亚洲少妇的诱惑av| 自拍欧美九色日韩亚洲蝌蚪91| 日韩电影二区| 亚洲av电影在线观看一区二区三区| 男女床上黄色一级片免费看| 国产成人a∨麻豆精品| 国产成人精品在线电影| 夜夜骑夜夜射夜夜干| 久久人妻熟女aⅴ| 亚洲国产精品成人久久小说| 一区二区三区精品91| 热re99久久精品国产66热6| 美女主播在线视频| 丁香六月天网| 一边亲一边摸免费视频| 成人午夜精彩视频在线观看| 高潮久久久久久久久久久不卡| 大香蕉久久网| 欧美 亚洲 国产 日韩一| 国产精品久久久久久人妻精品电影 | 国产精品欧美亚洲77777| 另类亚洲欧美激情| 亚洲色图综合在线观看| 久久人妻福利社区极品人妻图片 | 两性夫妻黄色片| 在线亚洲精品国产二区图片欧美| 十分钟在线观看高清视频www| 男女无遮挡免费网站观看| 国产高清videossex| 99国产精品免费福利视频| 日日爽夜夜爽网站| 叶爱在线成人免费视频播放| 97人妻天天添夜夜摸| 久久性视频一级片| 久久人人97超碰香蕉20202| 在线av久久热| 久久毛片免费看一区二区三区| 50天的宝宝边吃奶边哭怎么回事| 国产男女超爽视频在线观看| 9热在线视频观看99| 一区二区三区精品91| 午夜精品国产一区二区电影| 国产成人欧美在线观看 | 亚洲熟女精品中文字幕| 91精品伊人久久大香线蕉| 亚洲视频免费观看视频| 午夜激情久久久久久久| 精品亚洲成a人片在线观看| 亚洲色图 男人天堂 中文字幕| 侵犯人妻中文字幕一二三四区| 亚洲国产精品一区二区三区在线| 丰满少妇做爰视频| 黄色一级大片看看| 国产精品一区二区在线不卡| 一区二区日韩欧美中文字幕| 可以免费在线观看a视频的电影网站| 老熟女久久久| 欧美日韩一级在线毛片| 啦啦啦啦在线视频资源| 亚洲精品久久久久久婷婷小说| 亚洲欧美一区二区三区国产| 欧美xxⅹ黑人| 夜夜骑夜夜射夜夜干| 成人亚洲欧美一区二区av| 亚洲中文日韩欧美视频| 99国产精品一区二区蜜桃av | 两人在一起打扑克的视频| 日韩精品免费视频一区二区三区| 午夜免费鲁丝| 一级毛片黄色毛片免费观看视频| 99热全是精品| 人人妻人人澡人人看| 国产一区有黄有色的免费视频| av一本久久久久| 男女床上黄色一级片免费看| av电影中文网址| 日韩av在线免费看完整版不卡| 每晚都被弄得嗷嗷叫到高潮| 欧美黄色淫秽网站| 欧美老熟妇乱子伦牲交| netflix在线观看网站| 国产成人精品无人区| 久久久精品区二区三区| 国产成人免费观看mmmm| 国产一卡二卡三卡精品| netflix在线观看网站| 一级片免费观看大全| 欧美日韩亚洲高清精品| xxx大片免费视频| 18禁国产床啪视频网站| 午夜91福利影院| 色精品久久人妻99蜜桃| 亚洲 国产 在线| 自拍欧美九色日韩亚洲蝌蚪91| 国产伦理片在线播放av一区| 天天躁日日躁夜夜躁夜夜| 1024视频免费在线观看| 韩国精品一区二区三区| 国产精品欧美亚洲77777| 欧美激情极品国产一区二区三区| 久久久久网色| 中文字幕人妻熟女乱码| 青春草视频在线免费观看| 9色porny在线观看| 国产亚洲精品久久久久5区| 午夜两性在线视频| 色婷婷av一区二区三区视频| 国产一卡二卡三卡精品| 咕卡用的链子| 亚洲五月婷婷丁香| av在线老鸭窝| 黄色怎么调成土黄色| 性色av乱码一区二区三区2| 国产精品一二三区在线看| 亚洲av男天堂| 免费在线观看完整版高清| 一区二区三区乱码不卡18| 国产成人影院久久av| 国产深夜福利视频在线观看| www.熟女人妻精品国产| 夫妻性生交免费视频一级片| 秋霞在线观看毛片| 七月丁香在线播放| 久久久精品免费免费高清| 美女福利国产在线| 亚洲一区二区三区欧美精品| 亚洲国产精品国产精品| 国产精品一区二区在线不卡| 人体艺术视频欧美日本| 激情视频va一区二区三区| 首页视频小说图片口味搜索 | 一本久久精品| 亚洲美女黄色视频免费看| 国产野战对白在线观看| 人人澡人人妻人| 亚洲欧美精品自产自拍| 午夜视频精品福利| 夫妻午夜视频| 成人亚洲欧美一区二区av| 午夜两性在线视频| 各种免费的搞黄视频| 亚洲男人天堂网一区| 2021少妇久久久久久久久久久| 亚洲熟女精品中文字幕| 国产淫语在线视频| 丁香六月欧美| 日韩av在线免费看完整版不卡| 人人妻,人人澡人人爽秒播 | 一区二区日韩欧美中文字幕| 亚洲av片天天在线观看| 只有这里有精品99| 在线观看一区二区三区激情| 久久99热这里只频精品6学生| 天天操日日干夜夜撸| 嫩草影视91久久| 中文字幕最新亚洲高清| 丝袜喷水一区| 久久99热这里只频精品6学生| 大型av网站在线播放| 亚洲国产成人一精品久久久| 国产激情久久老熟女| 国产成人精品在线电影| 国产精品国产三级国产专区5o| 操出白浆在线播放| 午夜免费男女啪啪视频观看| 9191精品国产免费久久| 久久九九热精品免费| 欧美97在线视频| 国产成人a∨麻豆精品| 日韩大码丰满熟妇| 91成人精品电影| 精品少妇久久久久久888优播| 精品福利永久在线观看| 亚洲国产精品国产精品| 人人澡人人妻人| 人成视频在线观看免费观看| 99久久人妻综合| 久久人人爽av亚洲精品天堂| 男女下面插进去视频免费观看| 午夜精品国产一区二区电影| 精品一区在线观看国产| 免费观看av网站的网址| 18禁观看日本| 成人影院久久| 人人妻人人澡人人爽人人夜夜| 亚洲精品成人av观看孕妇| 最新在线观看一区二区三区 | 欧美大码av| 亚洲七黄色美女视频| 久久人人97超碰香蕉20202| 成人18禁高潮啪啪吃奶动态图| 男女免费视频国产| av线在线观看网站| 黄色a级毛片大全视频| 母亲3免费完整高清在线观看| 国产日韩欧美亚洲二区| av国产精品久久久久影院| 免费看十八禁软件| 国产在线观看jvid| 热re99久久国产66热| 欧美成狂野欧美在线观看| 国产淫语在线视频| 丰满少妇做爰视频| 美女主播在线视频| kizo精华| 国产片特级美女逼逼视频| 少妇人妻久久综合中文| 捣出白浆h1v1| 国产亚洲av高清不卡|