欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

XSL教程之運算符和函數_Xml教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:解讀XSL的選擇模式
什么是選擇模式 選擇模式語句將數據從XML中提取出來,是一種簡單獲得數據的方法,這幾個標記都有一個select屬性,選取XML中特定的結點名的數據 注意,每個xsl文件都需要導入xsl的命名空間,TR/WD-xsl,例如在xml頭聲明之后加入: p xmlns:

 表一、運算符與特殊字符

運算符 描述
/
 選擇子元素,返回左側元素的直接子元素;如果"/"位于最左側表示選擇根結點的直接子元素
//
 遞歸下降,不論深度,搜索指定的元素;如果位于最左側表示從根結點出發遞歸下降搜索指定元素
.
 表示當前元素
*
 通配符,選擇任意元素,不考慮名字
@
 

取得屬性值,作為屬性名的前綴

@*
 

 

通配符,選擇任意屬性,不考慮名字

:
 名字作用范圍分隔符,將名字作用范圍前綴與元素或屬性名分隔開來
!*
 在相關節點上應用指定方法
()*
 分組,明確指定優先順序
[]
 應用過濾樣式
[]*
 下標運算符,用于在集合中指示元素

  表二、邏輯運算符

可選方式 描述
and and 或 &&
 邏輯與
or or 或 ||
 邏輯或
not() not
 邏輯非

  表三、關系運算符
 

可選方式 描述
= 或 eq
 相等
= 或 ieq
 相等(不區分大小寫)
!= 或 ne
 不等
ine
 不等(不區分大小寫)
< 或 lt
 小于
ilt
 小于(不區分大小寫)
<= 或 le
 小于等于
ile
 小于等于(不區分大小寫)
> 或 gt
 大于
igt
 大于(不區分大小寫)
>= 或 ge
 大于等于
ige
 大于等于(不區分大小寫)
all
 集合運算符,如果集合中所有項目均滿足條件則返回"真"
any
 集合運算符,如果集合中任意項目滿足條件則返回"真"
|
 集合運算符,返回兩個集合的聯合

  示例一:

  從個人簡歷中尋找具有具有"WEB開發"技能的人的姓名與E-Mail。假設文檔結構如下所示:

<document>
<resume>
<name>name</name>
<sex>sex</sex>
<birthday>birthday</birthday>
<skill>skill1</skill>
<skill>skill2</skill2>

<skill>skilln</skill>
</resume>
<resume>

</resume>

</document>

  為從以上結構的個人簡歷中尋找出所有具有WEB開發"技能的人的姓名與E-Mail的XSL文檔結構如下:

<TABLE border="1" cellspacing="0">
<TH>姓名</TH><TH>E-Mail</TH>
<xsl:for-each select="resume [anyskill="WEB開發"]">
<TR><TD><xsl:value-of select="name"/></TD>
<TD><xsl:value-of select="E-Mail"/></TD>
</TR>
</xsl:for-each>
</TABLE>

  說明:

  1.[ ] ── 表示選擇條件,只有滿足條件的個人簡歷才被顯示。

  2.any ── 由于每個人有多種技能,故加any作為前綴,以使每個人所有技能都能被比較。

  3.skill='WEB開發' ── 篩選條件。

  示例二、

  仍上面的XML文檔為例,如果欲選擇1977/1/1之前出生的人的姓名、技能與E-Mail,相應的XSL文檔結構如下(假定生日格式為yyyy/mm/dd):

<TABLE border="1" cellspacing="0">
<TH>姓名</TH><TH>技能</TH><TH>E-Mail</TH>
<xsl:for-each select="resume[birthdaylt"1977/1/1"]">
<TR>
<TD><xsl:value-of select="name"/></TD>
<TD>
<xsl:value-of select="skill[0]"/>
<xsl:for-each select="skill[index()>0]">、
<xsl:value-of select="."/>
</xsl:for-each>
</TD>
<TD><xsl:value-of select="E-Mail"/></TD>
</TR>
</xsl:for-each>
</TABLE>

  說明:

  1.birthday lt '1977/1/1' ── 搜索條件,在此處使用"< "會錯誤,故使用"lt"表示小于。

  2.skill [0] ── 表示選擇skill的第一項。

  3.skill [index()>0] ── 表示選擇skill的第二項以后(包括第二項)的項目。

  4.xsl:value-of select="." ── 表示選擇當前標記的值。

  相信大家應該注意到,在前面以及本次的例子中出現了一些函數,如index()、formatIndex()、childNumber(),也許大家還不完全明了其中的含義吧?敬請關注下一課。

  本期學習XSL樣式方法,即可用于XSL元素<xsl:for-each>、<xsl:value-of>、<xsl:template>的select屬性、<xsl:apply-templates>的match屬性、<xsl:if>、<xsl:when>的test屬性中,對元素的范圍進行篩選,從而提供更大的靈活性。


  XML與DHTML(動態HTML)一樣,這些節點都是一個個對象,而且這些對象都是有層次的,從根節點開始構成一顆層次清淅的樹狀結構,這就形成了文檔對象模型DOM(Document Object Model),通過對象的屬性、方法來達到訪問控制XML節點的目的。


  我們這里不打算就XML的DOM逐一詳細闡述,因為這完全可以寫成一個篇幅較多的教程,我們先就一些常見的方法作一些討論,以期對DOM的對象方法有一個大致的了解。

  注:從本期開始,所有示例不再提供完整源代碼,如有不明白之處,請仔細閱讀前面七期、并動手練手。

  一、end()

  含義:返回集合中最后一個元素。

  示例:輸出最后一份簡歷

  假定XML文件格式為:

……<resume>…</resume>……<resume>…</resume>……

  相應XSL文件內容為:

<xsl:for-each select="resume[end()]">……</xsl:for-each>

  或:

<xsl:templates match="resume[end()]">……</xsl:templates>

  或:

<xsl:apply-template select="resume[end()]">……</xsl:apply-template>

  二、index()

  含義:返回該元素在集合中的位置,返回值是一整數,其中第一個元素返回0。

  示例:返回前面三份簡歷。

resume[index()le3]

  注意:index()是與父元素相關的,請看下例:

<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>

  返回所有<x>中的第一個<y>

x/y[index()=0] 或x/y[0]

  三、nodeName()

  含義:返回元素的名字,即標記名。

  示例:選擇任意元素,假如其名字(即標記名)等于"name":

*[nodeName()='name'] 或 *[name]

  四、number()

  含義:將值轉換為數值形式,如果不是數值則返回空,要求參數。

  示例:年齡(age)小于30歲的人的簡歷(resume):

resume[number(age)lt30] 或 resume[agelt30]

  五、nodeType()

  含義:返回結點類型,結果為是數值。以下是返回值列表:

 

結點類型結點類型值結點的字符形式描述
Element1'element'
Element Attribute2'attribute'
Markup-Delimited Region of Text3'text'
Processing Instruction7'processing_instruction'
Comment8'comment'
Document Entity9'document'

  六、value()

  含義:返回元素或屬性的值。

  示例:value()是元素或屬性的缺省方法,以下表示是等價:

name!value()="NAME" 與 name="NAME"

@attr="attribute_value" 與 @attr="attribute_value"

  注:@是屬性前綴,@attr表示是屬性attr

  七、attribute()

  含義:返回所有屬性結點的集合,等價于"@*"。

  示例:尋找所有的resume元素,滿足條件至少有一個屬性的值為"ABC":

resume[anyattribute()='ABC'] 或 resume[any@*='ABC']

  尋找所有的resume元素,滿足條件至少有一個子元素有一個屬性的值為"ABC":

resume[any*/attribute()='ABC'] 或 resume[any*/@*='ABC']

  八、comment()

  含義:返回所有注釋結點。

  示例:

resume[anycomment()='禹希初的簡歷']

  表示尋找含有注釋語句:<!--禹希初的簡歷-->的<resume>元素。

  九、cdata()

  含義:返回所有CDATA類型的結點的集合。

  示例:

resume[anycdata()='禹希初的簡歷']

  表示尋找含有下述語句(必須是直接子結點)<![CDATA[禹希初的簡歷]]>的<resume>元素。

  十、node()

  含義:返回當前上下文環境中除根結點和屬性結點以外的所有結點的集合,等價于:

"*|pi()|comment()|text()"

  示例:尋找所有元素resume,其最后一個結點的名字為"skill":

resume[node()[end()]!nodeName()='skill']

  尋找所有resume元素的第一個結點:resume/node()[0]。

  十一、textnode()

  含義:返回所有文本類型的結點的集合。

  示例:尋找每一個p元素的第二個文本結點:

p/textnode(1) 或 p!textnode(1)

  十二、text()

  含義:返回所有表示文本字符串的結點的集合,等價于"cdata()|textnode()"。

  本期的內容就介紹至此,另有一個函數date()在本人的機器上一試就發生錯誤使瀏覽器自動關閉,還有一個函數pi()本人尚未找到適當的應用方法,就不介紹了,下期將講述如何XSL中使用腳本。

  有時,我們可能會希望XML文檔輸出時能對其中內容加上一些統計信息或者如編號什么的,利用前面的知識就不太容易實現了。今天將介紹兩個新元素<xsl:eval>與<xsl:script>,使我們能輕松處理這個難題。

<xsl:eval>

  含義:計算腳本表達式,輸出一個文本字符串。

  語法:

<xsl:eval language="language-name">

  屬性:

  language ── 規定所用腳本語言的名字,可用的屬性有"JavaScript"、"JScript"、"VBScript"、"VBS"等,缺省為"JScript"。

<xsl:script>

  含義:聲明全局變量或定義函數。

  語法:

<xsl:script language="language-name">

  屬性:同<xsl:eval>


  示例:

  不知大家對于第四期《跟我學XML》中的例子是否還有印象?其中的XML文檔并沒有對簡歷編號,但輸出中卻加上了大寫的羅馬數字序號。今天將再舉一稍為復雜一些的例子:

  假如我們編寫一份年終生產統計表,其中需要小計一項,常規的作法是事先將其算出來,現在不必了,我們可以只給出單項統計,顯示時再統計小計一項。請找出《跟我學XML》的第四期,XML文件不必修改,對XSL文件的修改如下:

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">

<xsl:template match="/">
<HTML><HEAD><TITLE>1999年生產統計</TITLE></HEAD>
<BODY><xsl:apply-templates select="document"/></BODY>
</HTML>
</xsl:template>

<xsl:template match="document">
<H3>1999年生產統計</H3>
<TABLE border="1" cellspacing="0">
<TH>班組</TH>
<TH>一季度</TH>
<TH>二季度</TH>
<TH>三季度</TH>
<TH>四季度</TH>
<xsl:apply-templates select="report"/>

<TR><TD>小計</TD>
<TD><xsl:eval>total(this,"q1")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q2")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q3")</xsl:eval></TD>
<TD><xsl:eval>total(this,"q4")</xsl:eval></TD>
</TR>


</TABLE>

<xsl:script>
function total(node,q)
{
  temp=0;
  mark='/document/report/'+q;
  v=node.selectNodes(mark);
  for(t=v.nextNode();t;t=v.nextNode())
  {
    temp+=Number(t.text);
  }
  return temp; //小計值
}
</xsl:script>

</xsl:template>

<xsl:template match="report">
<TR>
<TD><xsl:value-of select="class"/></TD>
<TD><xsl:apply-templates select="q1"/></TD>
<TD><xsl:apply-templates select="q2"/></TD>
<TD><xsl:apply-templates select="q3"/></TD>
<TD><xsl:apply-templates select="q4"/></TD>
</TR>
</xsl:template>

<xsl:template match="q1|q2|q3|q4">
<!--此處測試產量,如小于等于20則添加一STYLE屬性color,其值為red(紅色)-->
<xsl:if test=".[value() le 20]">
<xsl:attribute name="style">color:red</xsl:attribute>
</xsl:if>
<xsl:value-of/>
</xsl:template>

</xsl:stylesheet>

 

onmouseup="" oncontextmenu="" onmousemove="" onselectstart="" onmousedown="" ondrag="" ondragstart="" onbeforecopy="" oncopy="" align=center onselect>onmouseup="" oncontextmenu="" onmousemove="" onselectstart="" onmousedown="" ondrag="" ondragstart="" onbeforecopy="" oncopy="" alt=XSL學習教程:運算符和函數 src="http://www.webjx.com/upfiles/20070915/20070915201257_01.gif" _fcksavedurl="http://www.webjx.com/upfiles/20070915/20070915201257_01.gif" onselect>
上例在瀏覽器中的樣子(IE5.0或更新版本)

 

  說明:

  注意到執行結果的變化了嗎?黑體部分為添加部分,注意添加部分分為兩部分,<xsl:script></xsl:script>必須置于</TABLE>之后,切記。

  selectNodes() ── 是XMLDOMObject的一個方法,返回文檔中所有滿足條件的結點的集合,條件與< xsl:for-each >和select屬性的取值采用同樣的寫法,可以加篩選、下標等限制,如尋找一季度產量大于等于50的班組:

/document/report/q1[value() ge 50]

  以上寫法還有一個更簡單的寫法:

//q1[value()ge50]

  //表示從根結點出發遍歷所有結點,尋找滿足條件的結點,如果文檔內有同名但意義不同的結點則不能用此種方法,非不得已不建議使用。以此為例,如果希望統計年總產量,則可以下述字符串尋找結點(建議使用最后一種,此種描述將精確找到需要匯總的數據):

//*[value()gt0] 或 //(q1|q2|q3|q4) 或 /document/report/(q1|q2|q3|q4)

  nextNode() ── 返回結點集中的下一個結點

  Number() ── 將提供的參數轉換為數值


  下期介紹XSL函數2,用于<xsl:script>及<xsl:eval>中,以及<xsl:if>和<xsl:when>的expr屬性。建議讀者熟悉JavaScript、JScript、VBScript中至少一種,否你能用XSL完成的工作將十分有限。由于篇幅關系,此處不作詳細介紹。

  本期介紹多個XSL對于VBScript、JScript增加的方法、屬性,以充分發揮XML的優勢,用于<xsl:script>、<xsl:eval>標記內表達式的編寫或<xsl:if>、<xsl:when>的expr屬性。

 

  一、absoluteChildNumber

  含義:返回結點相對于它所有的兄弟(不論名字是否相同)的序號。

  語法:absoluteChildNumber(node)

  參數:node ── 對象,欲返回編號的結點。

  示例:

  1、假定文檔結構為:<document><head/><body/></document>,其中document為頂層結點,下述表達式將輸出:

<xsl:eval>
absoluteChildNumber(this.selectNodes('/document/body').item(0))
</xsl:eval>

  2、確定當前結點相對于其所有兄弟的序號:

<xsl:eval>
absoluteChildNumber(this)
</xsl:eval>

  二、ancestorChildNumber

  含義:從給定結點出發根據給定祖先結點名返回最近的祖先結點的序號(相對于同名結點)。如果找不祖先,則返回0。

  語法:ancestorChildNumber(bstrNodeName, pNode)

  參數:

  bstrNodeName ── 字符串。被搜索的祖先結點的名字。

  pNode ── 對象。搜索開始位置的結點。

  示例查找當前結點最近的名為report祖先結點:

ancestorChildNumber('report',this)

  三、attributes

  含義:返回結點屬性的集合。

  語法:object.attributes

  參數:object ── 結點對象。

  示例:當前結點屬性的個數

this.attributes.length

  當前結點第三個屬性的值

this.attributs.item(2).value



this.attributes.item(2).text



this.attributes(2).text

  注意:如果給定的下標大于屬性總和減1將出錯,第一個屬性的下標是0。

  四、baseName

  含義:返回有名字空間限制的基本名,即不包括名字前綴。

  語法:object.baseName

  參數:object ── 結點對象

  示例,當前結點的基本名:

this.baseName

  五、childNumber

  含義:返回結點相對于同名同胞的序號。

  語法:childNumber(object)

  參數:object ── 結點對象

  示例,假定XML文檔結構如下:

<x><y><z></z></y></x>

  如果當前結點是z,則childNumber(this)返回1,而absoluteChildNumber(this)返回3。

  六、dataType

  含義:設定或讀取結點的數據類型。

  語法:設定結點的數據類型 object.dataType=objValue
     讀取結點的數據類型 objValue=object.dataType

  參數:object ── 結點對象。

  示例,讀取當前結點的數據類型:

dtType=this.dataType

  七、depth

  含義:指定結點出現在文檔樹上的深度,即該結點位于文檔第幾層,頂層結點位于第一層,根結點(即用"/"表示的結點)位于第0層。

  語法:depth(pNode)

  參數:pNode ── 結點對象

  示例,當前結點的深度:

depth(this)

  八、firstChild、lastChild

  含義:返回結點的第一個子結點(或最后一個子結點)。

  語法:pNode.firstChild
     pNode.lastChild

  參數:pNode ── 結點對象

  示例,當前結點的第一個結點的名字:

this.firstChild.nodeName

  九、formatIndex

  含義:用指定的計數系統格式化提供的整數。

  語法:formatIndex(lIndex, bstrFormat)

  參數:

  lIndex ── 整型數值或變量

  bstrFormat ── 數據格式,可選值有a、A、i、I、1、01(以0打頭的數值形式,如果要求固定長度的編號如0001、0002則非常有用)。

  示例,當前結點的大寫羅馬數字編號:

formatIndex(childNumber(this),'I')

  十、formatNumber

  含義:以指定格式輸出數值。

  語法:formatNumber(dblNumber, bstrFormat)

  參數:說明同formatNumber,不同之處在于格式化的可以是小數。

  示例,對變量a的值格式化為兩位小數:

formatNumber(a,'#.00'):

  十一、hasChildNodes

  含義:如果結點有子結點則返回true(-1),否則為false(0)。

  語法:pNode.hasChildNodes()

  注意:與此前介紹的函數不同,此函數后必須帶一個空括號。

  示例,判斷當前結點是否有子結點:

this.hasChildNodes

  十二、namespaceURI、prefix

  含義:返回結點名字空間的全局資源標識符(或前綴)。

  語法:pNode.namespaceURI
     pNode.prifix

  十三、nextSibling、previousSibling、parentNode

  含義:返回結點的下一個兄弟(或前一個兄弟、或結點的父結點)。

  語法:pNode.nextSibling
     pNode.previousSibling
     pNode.parentNode

  注意:對根結點(即"/")應用parentNode方法、對第一個孩子結點應用previousSibling方法、對最后一個孩子結點應用nextSibling方法均會導致錯誤,可通過此過關系運算符==(等于)和!=(不等于)來判斷一個結點是否某一指定結點,格式為pNode1 = pNode2或pNode2 != pNode2。

  十四、nodeName

  含義:返回元素、屬性、入口的名字或其他類型結點的一個特定字符串。

  語法:pNode.nodeName

  示例,當前結點的名字:

this.nodeName

  十五、nodeType、NodeTypeString

  含義:返回結點的類型的數值形式(或字符串形式)。

  語法:pNode.nodeType 或 pNode.nodeTypeString

  返回值:

結點類型結點類型值結點的字符形式描述
Element1'element'
Element Attribute2'attribute'
Markup-Delimited Region of Text3'text'
Processing Instruction7'processing_instruction'
Comment8'comment'
Document Entity9'document'

  十六、nodeTypedValue

  含義:以結點預定義的數據類型返回結點的值。

  語法:pNode.nodeTypedValue

  示例,假定當前結點的數據類型是fixed.14.4,下例將以數值返回結點的值,而不是文本一個字符串:

this.nodeTypedValue

  十七、nodeValue

  含義:返回結點的文本。

  語法:pNode.nodeValue

  注意:該方法不用于元素類結點,可用于屬性、CDATA、注釋、文本等結點。

  示例,當前元素第一個屬性的值:

this.attributes(0).nodeValue

  當前元素內的文本(假定該元素內只有文本,無其它元素,即<mark>text</mark>,建議多嘗幾次掌握其確切的用法)。

this.firstChild.nodeValue

  十八、ownerDocument

  含義:返回包含該結點的文檔的根。

  語法:pNode.ownerDocument

  注意:該方法用于文檔的根結點將出錯。

  十九、selectNodes

  含義:給定的樣式匹配應用于當前結點并返回匹配的結點集合。

  語法:pNode.selectNodes('pattern')

  提示:pattern的編寫與<xsl:for-each>的select屬性的值類似,其中以"/"開頭表示從文檔的根出發搜索;以"//"開頭表遍歷文檔的所有結點;以".."開頭表示從當前結點的父結點開始;如果欲從當前結點向下搜索則不能有以上特殊字符打頭。

  示例,與當前結點同名的元素在其父元素內的個數:

childNumber(this.selectNodes("../"+this.nodeName+"[end()]").item(0))

  當前元素內名字為"skill"的元素的個數:

childNumber(this.selectNodes("skill[end()]").item(0))

  二十、selectSingleNode

  含義:與selectNodes類似,不同的只返回匹配的第一個結點、而不是結點集合。

  語法:pNode.selectSingleNode('pattern')

  示例,與當前結點同名的元素在其父元素內的個數:

childNumber(this.selectSingleNode("../"+this.nodeName+"[end()]"))

  當前元素內名字為"skill"的元素的個數:

childNumber(this.selectSingleNode("skill[end()]"))

  二十一、text

  含義:返回結點與它的子樹內的文字內容。

  語法:pNode.text

  示例,整個文檔內的文字內容:

this.ownerDocument.text

  當前元素及其子樹的文字內容:

this.text

  二十二、xml

  含義:返回結點及其后代的XML表示。

  語法:pNode.xml

  示例,當前文檔的XML內容:

this.ownerDocument.xml

  另有幾個函數不作介紹,列于其下以供參考,如感興趣,請訪問http://msdn.microsoft.com獲取詳細說明。

formatTime(varTime, bstrFormat,varDestLocale)
formatDate(varDate, bstrFormat,varDestLocale)
apendChild(newChild)
definition
CloneNode
insertBefore(newChild, refChild)
parsed
removeChild(oldChild)
replaceChild(newChild, oldChild)
specified
transformNode(stylesheet)
transformNodeToObject(stylesheet,outputObject)
uniqueID(pNode)

 

分享:如何使用XPath入門
什么是XPath XPath(可擴展路徑) 是給 XSL 轉換[XSLT]和 XPointer [XPointer]的共享功能提供一個共用的句法及語義的結果。XPath的主要的目是用于對 XML 文檔元件尋址。在支持這個主要目的的同時,它也為字符串,數字和布爾的操作提供了基本手段。XPath

來源:模板無憂//所屬分類:Xml教程/更新時間:2010-02-03
相關Xml教程
精品视频导航| 欧美成人性战久久| 国产精品入口日韩视频大尺度| 国产成人无码一二三区视频| 日韩精品一区二区亚洲av观看| 精品久久久久久久| 亚洲天堂2014| 97国产精品视频| 91激情视频在线| 99精品在线看| 久久精品导航| 欧美一区二区三区婷婷月色| 精品国产第一页| 人与嘼交av免费| 国产精品45p| 日本一区二区综合亚洲| 欧美另类xxx| 青青在线视频免费| 国产高清视频免费| 久久久久99| 欧美大片在线观看一区| 美女精品国产| 青青草在线观看视频| 国产日产精品_国产精品毛片| 亚洲欧美一区二区三区国产精品| 欧美做受高潮电影o| 国内精品国产三级国产aⅴ久| 在线亚洲人成| 国产精品一级黄| 尤物九九久久国产精品的特点| 国产成人亚洲综合无码| 黄色大全在线观看| 亚洲清纯自拍| 日韩欧美国产综合一区 | 欧美精品久久久久久久久老牛影院 | 午夜精品久久久久久久久 | 1769国产精品视频| 国产欧美精品一区二区三区四区 | 国产性做久久久久久| 欧美噜噜久久久xxx| 艹b视频在线观看| 黑人巨大亚洲一区二区久 | 成人免费毛片播放| 人妻偷人精品一区二区三区| 国产麻豆视频一区二区| 色av吧综合网| 在线观看免费成人av| 无码国产精品高潮久久99| 国产精品一区二区你懂的| 中文字幕精品网| 日韩av手机版| 青青热久免费精品视频在线18| 99re成人精品视频| 久久全球大尺度高清视频| 免费观看黄网站| 91久久精品无嫩草影院| 一区二区三区在线看| 亚洲综合第一页| 永久免费看黄网站| 午夜精品网站| 日韩欧美一二三| 91网站在线观看免费| 亚洲精品网站在线| 成人午夜在线免费| 91国偷自产一区二区三区的观看方式| 午夜福利三级理论电影 | 日本sm极度另类视频| 精品黑人一区二区三区观看时间| 小说区图片区色综合区| 色综合久久综合中文综合网| 欧美在线播放一区| 午夜一区二区三区四区| 蜜臀av性久久久久av蜜臀妖精 | 国内精品久久久久久久久| 在线看黄色的网站| 久久99国产精品久久99大师| 欧美性xxxxxxx| 亚洲ai欧洲av| 国产后入清纯学生妹| 丁香另类激情小说| 欧美性视频网站| 欧美三级视频网站| 亚洲国产精品91| 精品国产免费视频| 成年人视频在线免费| 国产亚洲精品精品国产亚洲综合| 中文字幕中文在线不卡住| 成人免费在线看片| 欧美一区二区三区四| 蜜桃一区二区三区四区| 欧美另类99xxxxx| 韩国无码一区二区三区精品| 日本道不卡免费一区| 日韩欧美激情一区| 精品免费国产一区二区| www一区二区三区| 亚洲丰满少妇videoshd| 欧洲一区二区在线| 国产av精国产传媒| 2021国产精品久久精品 | 亲子伦视频一区二区三区| 在线一区二区视频| 中文精品无码中文字幕无码专区| 波多野结衣久久精品| 1024精品合集| 久久影视中文粉嫩av| 一卡二卡三卡在线| 26uuu久久综合| 亚洲直播在线一区| 天天干,天天干| 成人一级视频在线观看| 国产精品美女久久| 国产精彩视频在线观看| 久久电影国产免费久久电影| 91精品国产乱码久久久久久蜜臀 | 日本三级中文字幕在线观看| 国产精品国产高清国产| 亚洲婷婷在线视频| 欧美日本韩国在线| 亚洲精品字幕在线观看| 中文字幕亚洲区| 欧洲精品在线一区| 性插视频在线观看| 亚洲影视在线观看| 一区在线电影| 日本在线视频一区二区| 午夜精品久久久久久久久久| 青青视频免费在线观看| 六九午夜精品视频| 91高清视频免费看| 成人av一级片| 久久久久观看| 欧美不卡一区二区三区| www.色就是色.com| 日韩精品久久久久久久电影99爱| 日韩精品一区二区三区第95| 日本一级大毛片a一| 亚洲欧洲中文字幕| 色av中文字幕一区| 中文字幕第24页| 日韩中文字幕麻豆| 奇米影视亚洲狠狠色| 青青草av在线播放| 成人综合婷婷国产精品久久| 成人在线视频网站| 国产一区二区在线视频聊天| 国产精品久久久久国产精品日日| 日本视频精品一区| 芒果视频成人app| 欧美日韩一区二区免费视频| 欧美色图色综合| 国产乱人伦丫前精品视频| 日韩精品一区二区三区四区视频| 手机在线国产视频| 91超碰国产精品| 久久夜色精品亚洲噜噜国产mv| 99精品中文字幕| 日本亚洲天堂网| 国产精品日韩欧美| 中文字幕网址在线| 最新成人av在线| 黄色a级在线观看| 欧美一区一区| 精品黑人一区二区三区久久| 一级黄色免费视频| 一本色道久久综合亚洲精品高清| 国内精品久久久久影院优 | 国产精品亚洲综合久久| 1769国内精品视频在线播放| 亚洲高清毛片一区二区| 久久久久久久久久电影| 日韩精品另类天天更新| 亚洲精品三区| 日韩一级高清毛片| 天堂www中文在线资源| 亚洲欧美日韩在线观看a三区| 欧美自拍视频在线| 在线观看中文字幕网站| 亚洲欧美日韩久久精品| 青草视频在线观看视频| 同性恋视频一区| 一本色道久久88亚洲综合88| 久艹在线观看视频| www.欧美.com| 日本在线高清视频一区| 国产精品国产三级在线观看| 欧美本精品男人aⅴ天堂| 日本黄色免费观看| 免费不卡在线观看| 成人在线观看av| 高清不卡亚洲| 正在播放亚洲一区| a视频免费观看| 久久99精品国产| 国产伦精品一区| 欧美jizz18| 日韩成人高清在线| 国产精品久久久免费看| av不卡一区二区三区| 日韩片电影在线免费观看| 亚洲午夜免费| 国产亚洲aⅴaaaaaa毛片| 全程偷拍露脸中年夫妇| 国产午夜亚洲精品羞羞网站| 大地资源网在线观看免费官网| 日韩精品欧美大片| 久久天天躁狠狠躁老女人| 亚洲免费在线观看av| 亚洲乱码日产精品bd| 欧美成人免费高清视频| 欧美精品一线| 国产精品久久久久久超碰 | y111111国产精品久久婷婷| 都市激情亚洲综合| 日韩欧美在线网站| 女人黄色一级片| 久久综合av免费| 91国在线高清视频| 色综合久久网| 国产成人精品av在线| 国产综合在线播放| 91精品免费观看| 午夜时刻免费入口| 91在线国产福利| 国产一级大片免费看| 久久中文亚洲字幕| 欧美在线中文字幕| 免费观看黄色一级视频| 日韩一区国产二区欧美三区| 美女av免费看| 国产午夜精品一区二区三区视频| 国产一二三在线视频| 久久久久午夜电影| 国产精品美乳一区二区免费| 日本综合字幕| 亚洲精品电影在线| 国产污视频在线看| 亚洲一二三四在线| 又色又爽又黄18网站| 久久99精品久久久久久| 水蜜桃一区二区| 国产一区二区三区网| 91精品国产高清自在线 | 99久久精品国产一区二区三区| 91嫩草国产丨精品入口麻豆 | 国产乱人伦精品一区二区| 亚洲一级大片| 久久久久久国产精品| 国产黄色小视频在线观看| 欧美一级高清片| 99久久婷婷国产综合| 综合久久一区二区三区| 91精品999| 国产一区二区调教| 国产又黄又爽免费视频| 天天影视天天精品| 国产一区红桃视频| 9999精品| 久久99久久99精品免观看粉嫩| xxxwww在线观看| 欧美sm极限捆绑bd| 男人的天堂一区| 欧美日韩另类在线| 无码人妻aⅴ一区二区三区69岛| 国产亚洲成aⅴ人片在线观看| xxxx一级片| 黑人巨大精品欧美黑白配亚洲| 亚洲成人动漫在线| 国产综合自拍| 精品一区日韩成人| 第一会所亚洲原创| 亚洲一区二区三区视频| 99re8这里有精品热视频8在线| 午夜精品一区二区三区在线| 亚洲欧美韩国| 中文字幕av一区中文字幕天堂 | 国产亚洲欧美一区在线观看| 在线观看免费成人av| 韩国毛片一区二区三区| 真人做人试看60分钟免费| 日韩午夜黄色| 色综合久久久久久久久五月| 欧美福利视频| 久久精品99久久| 青青草成人影院| 成人国产一区二区| 深爱激情久久| 91免费看片在线| 天堂资源在线亚洲| 国产日韩欧美在线观看| 成人资源在线| 国产精品久久久久久av下载红粉 | 99久久99久久综合| 成年人在线观看视频免费| 国产久卡久卡久卡久卡视频精品| 久在线观看视频| 韩国午夜理伦三级不卡影院| 国产免费黄色小视频| 理论片日本一区| 国产午夜大地久久| 精品亚洲国产成人av制服丝袜| 丰满的少妇愉情hd高清果冻传媒| 老司机精品视频网站| 天天想你在线观看完整版电影免费| 噜噜噜91成人网| 蜜桃网站在线观看| 麻豆精品视频在线| 69堂免费视频| 国产成人av资源| 污版视频在线观看| 久久综合九色综合欧美98| 毛毛毛毛毛毛毛片123| 日本一区二区三区dvd视频在线| 成人啪啪18免费游戏链接| 国产精品午夜在线| 亚洲天堂网一区二区| 一区二区三区日韩在线观看| xxxxx99| 色网站国产精品| 久久精品视频日本| 日韩免费性生活视频播放| 中文字幕日韩经典| 国产一区二区黄| 西西人体44www大胆无码| 欧美日韩高清在线观看| 国产麻豆一区二区三区| 国产精品免费一区二区三区都可以| 天堂99x99es久久精品免费| av一区二区三区四区电影| 91成人超碰| 欧美 日韩 国产 在线观看 | 台湾无码一区二区| 激情综合网最新| 亚洲欧美国产日韩综合| 国产三级精品在线| 99久久久久久久久久| 天天操天天干天天综合网| 天堂资源在线播放| 亚洲电影免费观看| 亚洲第一黄色片| 久久91精品国产| 99re8这里有精品热视频免费| 91欧美激情另类亚洲| 国产精品99一区二区三| 亚洲国产精品一区二区第一页 | av高清久久久| 涩视频在线观看| 婷婷国产在线综合| 日韩网红少妇无码视频香港| 亚洲福利视频久久| 天堂网在线播放| 96精品视频在线| 美女久久久久| 日韩av一级大片| 蜜桃av一区二区| 中文字幕在线观看日 | 一区二区免费在线观看视频| 亚洲成人一区二区在线观看| 日韩伦人妻无码| 亚洲欧美精品在线| a∨色狠狠一区二区三区| 美日韩精品视频免费看| 久久久久久久久成人| 亚洲综合日韩中文字幕v在线| 香蕉久久网站| 成人高清dvd| 99国产精品视频免费观看| 老司机福利av| 欧美日韩一级视频| 99久久精品国产一区色| 久久久久久久久久久人体| 日韩精品免费一区二区夜夜嗨 | 久久精品国产亚洲av高清色欲| 精品伦理精品一区| 亚洲av成人无码网天堂| 国产精品久久久久av| 欧美成人一品| 欧美一级在线看| 国产精品二区一区二区aⅴ污介绍| 久久精品视频免费在线观看| 亚洲第一综合天堂另类专| 欧美va视频| 亚洲自拍小视频免费观看| 国产精品久久久免费| 色七七在线观看| 亚洲精品你懂的| 四虎精品永久在线| 久久最新资源网| 天天久久夜夜| 黄色www在线观看| 99国产精品一区| 成人做爰视频网站| 日韩精品免费在线| 自拍偷拍欧美日韩| 国产综合欧美在线看| 精品伊人久久久久7777人| 最新国产精品自拍| 欧美性大战久久| 少妇精品视频一区二区| 国产美女精彩久久|