<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # QAbstractXmlNodeModel Class Reference ## [[QtXmlPatterns](index.htm) module] 該QAbstractXmlNodeModel類是模擬非XML數據看起來像XML作為一個抽象基類[QXmlQuery](qxmlquery.html)。[More...](#details) 通過繼承[QSimpleXmlNodeModel](qsimplexmlnodemodel.html)。 ### Types * `enum SimpleAxis { Parent, FirstChild, PreviousSibling, NextSibling }` ### Methods * `__init__ (self)` * `list-of-QXmlNodeModelIndex attributes (self, QXmlNodeModelIndex?element)` * `QUrl baseUri (self, QXmlNodeModelIndex?ni)` * `QXmlNodeModelIndex.DocumentOrder compareOrder (self, QXmlNodeModelIndex?ni1, QXmlNodeModelIndex?ni2)` * `QXmlNodeModelIndex createIndex (self, int?data)` * `QXmlNodeModelIndex createIndex (self, int?data, int?additionalData)` * `QXmlNodeModelIndex createIndex (self, object?pointer, int?additionalData?=?0)` * `QUrl documentUri (self, QXmlNodeModelIndex?ni)` * `QXmlNodeModelIndex elementById (self, QXmlName?NCName)` * `QXmlNodeModelIndex.NodeKind kind (self, QXmlNodeModelIndex?ni)` * `QXmlName name (self, QXmlNodeModelIndex?ni)` * `list-of-QXmlName namespaceBindings (self, QXmlNodeModelIndex?n)` * `QXmlNodeModelIndex nextFromSimpleAxis (self, SimpleAxis?axis, QXmlNodeModelIndex?origin)` * `list-of-QXmlNodeModelIndex nodesByIdref (self, QXmlName?NCName)` * `QXmlNodeModelIndex root (self, QXmlNodeModelIndex?n)` * `QSourceLocation sourceLocation (self, QXmlNodeModelIndex?index)` * `QString stringValue (self, QXmlNodeModelIndex?n)` * `QVariant typedValue (self, QXmlNodeModelIndex?n)` * * * ## Detailed Description 該QAbstractXmlNodeModel類是模擬非XML數據看起來像XML作為一個抽象基類[QXmlQuery](qxmlquery.html)。 該QAbstractXmlNodeModel指定一個節點模型必須實現該節點模型的接口可以訪問用于處理查詢引擎[XQuery](index.htm)查詢。一個節點的模型數據表示為可查詢,就好像數據是XML的結構。 通過QAbstractXmlNodeModel的子類表示的節點模型是指由被訪問[QtXmlPatterns](index.htm)查詢引擎。如果API似乎有點怪在一些地方,這是因為成員函數是由查詢引擎稱為它的評估[XQuery](index.htm)。它們并不意味著被編程使用。 ### Usage QAbstractXmlNodeModel橋樑要查詢的非XML數據的任意的結構和良好定義的由理解的XML數據的結構之間的間隙[QXmlQuery](qxmlquery.html)。 想想看,讀取文件中的化學中的應用`chemistryData`,其中包含代表分子和原子組成的化學結構非XML數據。該應用程序將查詢該化學數據與[XQuery](index.htm)它從文件中讀取`queryFile`。我們寫QAbstractXmlNodeModel的自定義子類(`ChemistryNodeModel`)讀取`chemistryData`并建立一個數據結構,也許是由我們自己的類的對象`molecule`和`atom`。顯然,這種數據結構是不是XML。我們的自定義子類就知道如何遍歷這個非XML結構,并通過展示它的[XPath Data Model interface](http://www.w3.org/TR/xpath-datamodel/)。 ``` [QFile](qfile.html) queryFile(argv[1]); [QFile](qfile.html) chemistryData(argv[2]); [QString](qstring.html) moleculeName = argv[3]; [QXmlQuery](qxmlquery.html) query; query.setQuery(&queryFile, [QUrl](qurl.html).fromLocalFile(queryFile.fileName())); ChemistryNodeModel myNodeModel(query.namePool(), chemistryData); [QXmlNodeModelIndex](qxmlnodemodelindex.html) startNode = myNodeModel.nodeFor(moleculeName); query.bindVariable("queryRoot", startNode); [QFile](qfile.html) out; out.open(stdout, [QIODevice](qiodevice.html).WriteOnly); [QXmlSerializer](qxmlserializer.html) serializer(query, &out); query.evaluateTo(&serializer); ``` 應用程序首先創建的實例[QXmlQuery](qxmlquery.html)并呼吁[setQuery()](qxmlquery.html#setQuery) to read `queryFile`含[XQuery](index.htm)我們要運行。然后,它創建了我們自定義的節點模型類的實例,`ChemistryNodeModel`,這是QAbstractXmlNodeModel的子類。它的構造函數被調用,[name pool](qxmlnamepool.html)從我們獲得的[QXmlQuery](qxmlquery.html)以及與`chemistryFile`含分子和原子的待查詢的結構。該[name pool](qxmlnamepool.html)是必需的,因為我們的自定義節點模型具有成員函數[name()](qabstractxmlnodemodel.html#name),它返回[name](qxmlname.html)的模型中的任何節點。該[query](qxmlquery.html)和自定義節點模型必須使用相同的名稱池構造這些[names](qxmlname.html)。該構造函數將改為`chemistryFile`并建立自定義節點模型結構。 連接`query`到自定義節點模型,我們必須綁定在查詢中使用到模型中的一個節點的變量名。該變量可以被用來在查詢中作為起始節點。首先,將[index](qxmlnodemodelindex.html)為所需的起始節點被檢索到通過調用[QAbstractXmlNodeModel.createIndex](qabstractxmlnodemodel.html#createIndex)( ) 。然后索引綁定到變量名,在此情況下`queryRoot`,通過將名字和索引[QXmlQuery.bindVariable](qxmlquery.html#bindVariable)( ) 。然后,查詢可以使用一個變量引用`$queryRoot`指起始節點。需要注意的是,如果[query](qxmlquery.html)使用多個變量引用,調用[QXmlQuery.bindVariable](qxmlquery.html#bindVariable)( )需要在每個不同的變量名稱綁定到模型中的一個節點。 當應用程序調用的一個查詢被執行[QXmlQuery](qxmlquery.html)評價職能。該應用程序使用QXmlQuery.evaluateTo ([QAbstractXmlReceiver](qabstractxmlreceiver.html)* ) ,因為它然后使用[serializer](qxmlserializer.html)到了查詢結果作為XML來`stdout`。我們也可以使用QXmlQuery.evaluateTo ([QXmlResultItems](qxmlresultitems.html)* )來獲取結果的項目,或QXmlQuery.evaluateTo列表([QStringList](qstringlist.html)* )如果查詢評估,以一序列`xs:string`值。 在查詢執行時,引擎遍歷節點模型使用[nextFromSimpleAxis](qabstractxmlnodemodel.html#nextFromSimpleAxis)( )來獲得[index](qxmlnodemodelindex.html)的下一個節點進行訪問。該發動機可以通過調用得到一個節點的名稱[name](qabstractxmlnodemodel.html#name)( )與該節點的[index](qxmlnodemodelindex.html)。[stringValue](qabstractxmlnodemodel.html#stringValue)( )[baseUri](qabstractxmlnodemodel.html#baseUri)( )[documentUri](qabstractxmlnodemodel.html#documentUri)()和[kind](qabstractxmlnodemodel.html#kind)()根據需要與節點也被稱為[index](qxmlnodemodelindex.html)。 該示例演示了標準模式使用QAbstractXmlNodeModel的一個子類與組合[QXmlQuery](qxmlquery.html)要執行的[XQuery](index.htm)。 1. 實例[QXmlQuery](qxmlquery.html)并給它[XQuery](index.htm)要運行; 2. 實例QAbstractXmlNodeModel的子類或[QSimpleXmlNodeModel](qsimplexmlnodemodel.html); 3. 檢索[QXmlNodeModelIndex](qxmlnodemodelindex.html)對于模型中的節點,其中[QXmlQuery](qxmlquery.html)應開始查詢; 4. 使用[QXmlQuery.bindVariable](qxmlquery.html#bindVariable)()來綁定[QXmlNodeModelIndex](qxmlnodemodelindex.html)至`$variable name`; 5. 呼叫之一[QXmlQuery](qxmlquery.html)評價函數來執行查詢。 ### Subclassing 因為[XPath Data Model interface](http://www.w3.org/TR/xpath-datamodel/)通過QAbstractXmlNodeModel允許提出[QXmlQuery](qxmlquery.html)對非XML數據進行操作,就好像它是XML ,實施QAbstractXmlNodeModel的子類可以涉及一個顯著的工作量。該[QSimpleXmlNodeModel](qsimplexmlnodemodel.html)類提供簡化的實施對于許多常見的用例。 ### Thread Safety 因為節點模型可以同時通過線程的訪問[QtXmlPatterns](index.htm)模塊, QAbstractXmlNodeModel的子類必須被編寫成[thread-safe](index.htm)。能夠簡化執行的線程安全類包括[QReadLocker](qreadlocker.html)和[QWriteLocker](qwritelocker.html)。 請參閱示例[File System Example](index.htm)演示。 * * * ## Type Documentation ``` QAbstractXmlNodeModel.SimpleAxis ``` 四個軸,每個包含一個節點而已。 | Constant | Value | Description | | --- | --- | --- | | `QAbstractXmlNodeModel.Parent` | `0` | 上下文節點的父 | | `QAbstractXmlNodeModel.FirstChild` | `1` | 上下文節點的第一個孩子 | | `QAbstractXmlNodeModel.PreviousSibling` | `2` | 上下文節點的上一個孩子 | | `QAbstractXmlNodeModel.NextSibling` | `3` | 上下文節點的下一個子 | * * * ## Method Documentation ``` QAbstractXmlNodeModel.__init__ (self) ``` 默認構造函數。 ``` list-of-QXmlNodeModelIndex QAbstractXmlNodeModel.attributes (self, QXmlNodeModelIndex?element) ``` 這種方法是抽象的,應在任何子類中重新實現。 返回的屬性_element_。調用者保證_element_是在該節點模型的元素。 ``` QUrl QAbstractXmlNodeModel.baseUri (self, QXmlNodeModelIndex?ni) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 返回其索引節點的基URI_n_。調用者保證_n_不`null`并且,它屬于在該節點模型的一個節點。 一個節點的基URI可使用提取出的`fn:base-uri()`功能。基URI通常用于解決出現在節點或它的孩子相對URI 。這是符合標準的,只是返回文檔的URI ,盡管這可能無法正確反映基礎數據。 這個函數映射到`dm:base-uri`訪問器,根據下面的返回一個基URI : * For document nodes, the base URI and the document URI are the same. * For elements, the base URI is the URI appearing in the element's `xml:base` attribute, if present, or it is resolved to the parent element's base URI. * Namespace nodes have no base URI. * The base URI for a processing instruction, comment, attribute, or text node is the base URI of the node's parent element. ](qurl.html) [實施保證返回一個有效的](qurl.html)[QUrl](qurl.html)或默認構造[QUrl](qurl.html)。如果一個節點沒有基URI ,如在注釋沒有家長的情況下,默認的構造[QUrl](qurl.html)返回。 **See also** [XQuery 1.0 and XPath 2.0 Data Model (XDM), 5.2 base-uri Accessor](http://www.w3.org/TR/xpath-datamodel/#dm-base-uri)。 ``` QXmlNodeModelIndex.DocumentOrder QAbstractXmlNodeModel.compareOrder (self, QXmlNodeModelIndex?ni1, QXmlNodeModelIndex?ni2) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 該函數返回由索引節點的相對順序文件_ni1_和_ni2_。它被用于`Is`運營商和文檔順序排序節點。 調用者保證_ni1_和_ni2_不`null`并且這兩個標識在這個節點模型節點。 ](qxmlnodemodelindex.html#DocumentOrder-enum) [If _ni1_是相同的_ni2_,](qxmlnodemodelindex.html#DocumentOrder-enum)[QXmlNodeModelIndex.Is](qxmlnodemodelindex.html#DocumentOrder-enum)返回。如果_ni1_先于_ni2_按文檔順序,[QXmlNodeModelIndex.Precedes](qxmlnodemodelindex.html#DocumentOrder-enum)返回。如果_ni1_ follows _ni2_按文檔順序,[QXmlNodeModelIndex.Follows](qxmlnodemodelindex.html#DocumentOrder-enum)返回。 **See also** [XQuery 1.0 and XPath 2.0 Data Model (XDM), 2.4 Document Order](http://www.w3.org/TR/xpath-datamodel/#document-order)。 ``` QXmlNodeModelIndex QAbstractXmlNodeModel.createIndex (self, int?data) ``` [ 創建一個具有節點索引_data_作為它的內部數據。_data_沒有限制。 ](qxmlnodemodelindex.html) ``` QXmlNodeModelIndex QAbstractXmlNodeModel.createIndex (self, int?data, int?additionalData) ``` [ 創建一個具有節點索引_pointer_和_additionalData_作為它的內部數據。 什么_pointer_和_additionalData_是,不是限制。 ](qxmlnodemodelindex.html) ``` QXmlNodeModelIndex QAbstractXmlNodeModel.createIndex (self, object?pointer, int?additionalData?=?0) ``` [ 這是一個重載函數。 ](qxmlnodemodelindex.html) [創建](qxmlnodemodelindex.html)[QXmlNodeModelIndex](qxmlnodemodelindex.html) containing _data_和_additionalData_。 ``` QUrl QAbstractXmlNodeModel.documentUri (self, QXmlNodeModelIndex?ni) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 返回的文檔URI_n_。該文件的URI標識的是該文件的資源。例如,該文件可能是一個普通文件,例如:`file:/`或者它可以是`http://`一個文件的位置的URL。該文件的URI用于解析URI和簡單地知道該文件是。 如果節點模型映射到URI以自然的方式,返回的URI 。否則,返回公司或產品的URI 。文檔的URI可以是任意的URI ,只要其有效和絕對的。 ](qurl.html) [調用者保證_n_不`null`并且,它屬于本](qurl.html)[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)。 這個函數映射到`dm:document-uri`訪問器,根據下面的返回一個文件的URI : * If _n_ is a document node, return an absolute [QUrl](qurl.html) containing the document URI, or a default constructed [QUrl](qurl.html). The latter signals that no document URI is available for the document node. * For all other nodes, return a default constructed [QUrl](qurl.html). **See also** [XQuery 1.0 and XPath 2.0 Data Model (XDM), 5.4 document-uri Accessor](http://www.w3.org/TR/xpath-datamodel/#dm-document-uri),[QUrl.isValid](qurl.html#isValid)()和[QUrl.isRelative](qurl.html#isRelative)( ) 。 ``` QXmlNodeModelIndex QAbstractXmlNodeModel.elementById (self, QXmlName?NCName) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 ](qxmlnodemodelindex.html) [返回標識為元素的索引_id_。](qxmlnodemodelindex.html)[XQuery](index.htm)的`id()`函數調用這個函數。 返回的節點的索引將其值類型的元素節點`ID`和equals_id_,或者這將是一個具有屬性,其類型化值的類型的元素節點`ID`和equals_id_。如果不存在這樣的元素,一個默認的構造[QXmlNodeModelIndex](qxmlnodemodelindex.html)實例返回。實現者保證,如果返回的節點的索引不為空,它標識元素。 它是不足夠的,以只被稱為屬性或元素`id`。它的值類型也必須是`ID`。然而,保留的名稱`xml:id`就足夠了。 In _id_時,`namespace URI`和`prefix`是不確定的,并且`local name`是應該抬頭的ID。 **See also** [XQuery 1.0 and XPath 2.0 Functions and Operators, 15.5.2 fn:id](http://www.w3.org/TR/xpath-functions/#func-id)。 ``` QXmlNodeModelIndex.NodeKind QAbstractXmlNodeModel.kind (self, QXmlNodeModelIndex?ni) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 返回一個值,指示確定了節點的類型_ni_。調用者保證_ni_不為null ,并且它標識了此節點模型的節點。這個函數映射到`dm:node-kind()`訪問。 ](qxmlnodemodelindex.html#NodeKind-enum) [**See also**](qxmlnodemodelindex.html#NodeKind-enum) [XQuery 1.0 and XPath 2.0 Data Model (XDM), 5.10 node-kind Accessor](http://www.w3.org/TR/xpath-datamodel/#dm-node-kind)。 ``` QXmlName QAbstractXmlNodeModel.name (self, QXmlNodeModelIndex?ni) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 ](qxmlname.html) [返回的名稱_ni_。調用者保證_ni_不`null`并且,它屬于本](qxmlname.html)[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)。 如果一個節點沒有一個名稱,例如,注釋節點,空[QXmlName](qxmlname.html)返回。 QXmlNames必須的實例被創建[QXmlQuery](qxmlquery.html)正被用于使用這個評估查詢[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)。 這個函數映射到`dm:node-name()`訪問。 If _ni_是一個處理指令,一個[QXmlName](qxmlname.html)返回的本地名稱作為目標名稱和命名空間URI和前綴都為空。 **See also** [XQuery 1.0 and XPath 2.0 Data Model (XDM), 5.11 node-name Accessor](http://www.w3.org/TR/xpath-datamodel/#dm-node-name)和[QXmlName](qxmlname.html)。 ``` list-of-QXmlName QAbstractXmlNodeModel.namespaceBindings (self, QXmlNodeModelIndex?n) ``` 這種方法是抽象的,應在任何子類中重新實現。 返回在范圍的命名空間_n_。調用者保證_n_不`null`并且,它屬于本[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)。 此功能對應的`dm:namespace-nodes`訪問。 命名空間聲明的返回向量包括的祖先命名空間_n_。 調用者保證_n_是屬于這樣的一個元素[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)。 ``` QXmlNodeModelIndex QAbstractXmlNodeModel.nextFromSimpleAxis (self, SimpleAxis?axis, QXmlNodeModelIndex?origin) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 ](qxmlnodemodelindex.html) [When](qxmlnodemodelindex.html) [QtXmlPatterns](index.htm)計算路徑表達式,它效仿他們通過電話的結合[QSimpleXmlNodeModel.SimpleAxis](qabstractxmlnodemodel.html#SimpleAxis-enum)值。因此,該功能的實現必須返回該節點,如果有的話,就出現_axis_從發出_origin_。 如果沒有這樣的節點可用,默認的構造[QXmlNodeModelIndex](qxmlnodemodelindex.html)返回。 [QSimpleXmlNodeModel](qsimplexmlnodemodel.html)無需通過保證它永遠不會要求來處理多馀的邊角情況: * Children or siblings for attributes. * Children for comments, processing instructions, and text nodes. * Siblings or parents for document nodes. 一個典型的實現執行`switch`上的值_axis_: ``` [QXmlNodeModelIndex](qxmlnodemodelindex.html) MyTreeModel.nextFromSimpleAxis(SimpleAxis axis, const [QXmlNodeModelIndex](qxmlnodemodelindex.html) &origin) const { // Convert the QXmlNodeModelIndex to a value that is specific to what we represent. const MyValue value = toMyValue(ni); switch(axis) { case Parent: return toNodeIndex(value.parent()); case FirstChild: case PreviousSibling: case NextSibling: // and so on } } ``` ``` list-of-QXmlNodeModelIndex QAbstractXmlNodeModel.nodesByIdref (self, QXmlName?NCName) ``` 這種方法是抽象的,應在任何子類中重新實現。 返回具有一個元素和/或屬性`IDREF`值等于_idref_。[XQuery](index.htm)的`idref()`函數調用這個函數。 實現者保證所確定的返回索引節點是元素或屬性。 它是不足夠的,以只被稱為屬性或元素`idref`。它也必須是類型`IDREF`。元素必須鍵入為`xs:IDREF` or `xs:IDREFS`或者,在屬性的情況下,如`IDREF` or `IDREFS`在架構中。 In _idref_時,`namespace URI`和`prefix`是不確定的,并且`local name`是應該抬頭的ID。 **See also** [XQuery 1.0 and XPath 2.0 Functions and Operators, 15.5.3 fn:idref](http://www.w3.org/TR/xpath-functions/#func-idref)。 ``` QXmlNodeModelIndex QAbstractXmlNodeModel.root (self, QXmlNodeModelIndex?n) ``` [ 這種方法是抽象的,應在任何子類中重新實現。 返回該樹包含其索引是該節點的根節點_n_。調用者保證_n_不`null`而且它標識了此節點模型的節點。 ](qxmlnodemodelindex.html) [If _n_標識一個節點是根,父母的直接子( )將返回相同的](qxmlnodemodelindex.html)[QXmlNodeModelIndex](qxmlnodemodelindex.html)這個函數返回。 ``` QSourceLocation QAbstractXmlNodeModel.sourceLocation (self, QXmlNodeModelIndex?index) ``` [](qsourcelocation.html) [與給定返回該對象的源位置_index_或默認構造](qsourcelocation.html)[QSourceLocation](qsourcelocation.html)在任何情況下,位置信息是可用的。 此功能被引入Qt的4.6 。 ``` QString QAbstractXmlNodeModel.stringValue (self, QXmlNodeModelIndex?n) ``` 這種方法是抽象的,應在任何子類中重新實現。 返回節點的字符串值_n_。 調用者保證_n_不`null`而且它屬于此[QAbstractXmlNodeModel](qabstractxmlnodemodel.html)實例。 這個函數映射到`dm:string-value()`訪問器,其規格完全指定。這里有一個總結: * For processing instructions, the string value is the data section(excluding any whitespace appearing between the name and the data). * For text nodes, the string value equals the text node. * For comments, the content of the comment * For elements, the concatenation of all text nodes that are descendants. Note, this is not only the children, but the childrens' childrens' text nodes, and so forth. * For document nodes, the concatenation of all text nodes in the document. **See also** [XQuery 1.0 and XPath 2.0 Data Model (XDM), 5.13 string-value Accessor](http://www.w3.org/TR/xpath-datamodel/#dm-string-value)。 ``` QVariant QAbstractXmlNodeModel.typedValue (self, QXmlNodeModelIndex?n) ``` 這種方法是抽象的,應在任何子類中重新實現。 返回節點的類型值_node_。 類型化值是原子值,該元素或屬性包含。 調用者保證_node_或者是一個元素或屬性。返回的實施者擔保[QVariant](qvariant.html)有被支撐在一個值[XQuery](index.htm)。它不能是任意的[QVariant](qvariant.html)值。實現者也保證[stringValue](qabstractxmlnodemodel.html#stringValue)()返回的TypedValue的詞匯表示( ) (這是由擔保[QSimpleXmlNodeModel.stringValue](qsimplexmlnodemodel.html#stringValue)())。 如果返回的[QVariant](qvariant.html)是一個默認的構造變形,它預示著,_node_沒有類型化值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看