Udostępnij za pośrednictwem


Korzystanie z adnotacjami schematów XSD w kwerendach (SQLXML 4.0)

Można określić kwerend adnotacjami schematu do pobierania danych z bazy danych, określając wyrażenie XPath kwerend w szablonie względem schematu XSD.

<Sql:xpath-query> element pozwala określić kwerendę XPath przeciwko Widok XML, który jest zdefiniowany przez adnotacjami schematu.Schemat adnotacjami, przeciwko której ma zostać wykonana kwerenda XPath jest identyfikowany za pomocą mapping-schema atrybut <sql:xpath-query> elementu.

Szablony są prawidłowe dokumenty XML, które zawierają jeden lub więcej kwerend.Kwerendy dla XML i XPath zwracają fragment dokumentu.Szablony działają jako pojemniki dla fragmentów dokumentu; Szablony w ten sposób umożliwiają określenie elementu najwyższego poziom, pojedyncze.

Przykłady w tym temacie określić kwerendę XPath schematem adnotacjami, aby pobrać dane z bazy danych za pomocą szablonów.

Rozważmy na przykład tego schematu adnotacjami:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Person.Person" >
     <xsd:complexType>
       <xsd:attribute name="BusinessEntityID" type="xsd:string" /> 
       <xsd:attribute name="FirstName" type="xsd:string" /> 
       <xsd:attribute name="LastName"  type="xsd:string" /> 
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

W rozumieniu ilustracji tego schematu XSD jest przechowywany w pliku o nazwie Schema2.xml.Następnie może mieć kwerendę XPath schematem adnotacjami, określonego w następujący plik szablonu (Schema2T.xml):

<sql:xpath-query 
     xmlns:sql="urn:schemas-microsoft-com:xmlsql"
     >
          Person.Person[@BusinessEntityID="1"]
</sql:xpath-query>

Następnie można utworzyć i wykonać kwerendę jako część pliku szablonu za pomocą skryptu testu 4.0 SQLXML (Sqlxml4test.vbs).Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Za pomocą wbudowanego mapowania schematów

Adnotacjami schematu mogą być dołączane bezpośrednio szablon, a następnie można określić kwerendę XPath w szablonie przeciwko wbudowany schemat.Szablon można także wierzchołki.

Szablon może zawierać wiele schematy wbudowane.Aby zastosować wbudowany schemat, który znajduje się w szablonie, należy określić identyfikatora atrybut z unikatową wartość na <xsd: schema> element, a następnie użyj #idvalue do odwołania wbudowany schemat.Identyfikatora atrybut jest identyczne w zachowanie sql:id ({urn: schemas-microsoft-com: XML-sql} identyfikator) używane w schematy XDR.Aby uzyskać więcej informacji, zobacz Korzystanie z adnotacjami schematy XDR w kwerendach (zaniechane w SQLXML 4.0).

Na przykład następujący szablon określa dwa schematy adnotacje wbudowane:

<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
        id='InLineSchema1' sql:is-mapping-schema='1'>
  <xsd:element name='Employees' ms:relation='HumanResources.Employee'>
    <xsd:complexType>
      <xsd:attribute name='LoginID' 
                     type='xsd:string'/>
      <xsd:attribute name='JobTitle' 
                     type='xsd:string'/>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'
        id='InLineSchema2' sql:is-mapping-schema='1'>
  <xsd:element name='Persons' ms:relation='Person.Person'>
    <xsd:complexType>

      <xsd:attribute name='BusinessEntityID' 
                     type='xsd:string' />
      <xsd:attribute name='FirstName' 
                     type='xsd:string' />
      <xsd:attribute name='LastName' 
                     type='xsd:string' />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql' 
        mapping-schema='#InLineSchema1'>
    /Employees[@LoginID='adventure-works\guy1']
</sql:xpath-query>

<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql' 
        mapping-schema='#InLineSchema2'>
    /Persons[@BusinessEntityID='1']
</sql:xpath-query>
</ROOT>

Szablon określa także dwie kwerendy XPath.Każdy z <kwerendę xpath> elementów unikatowo identyfikuje schematu mapowanie określając mapping-schema atrybut.

Po określeniu schemat wbudowany w szablonie, sql:is-mapping-schema Adnotacja musi być także wyszczególniony na <xsd: schema> elementu.sql:is-mapping-schema Przyjmuje wartość logiczna (0 = false, 1 = true).Schemat wbudowany z sql: jest mapowanie schemacie = "1" jest traktowana jako wbudowany schemat adnotacjami i nie jest zwracana w dokumencie XML.

sql:is-mapping-schema Adnotacji należy do obszaru nazw szablonu urn:schemas-microsoft-com:xml-sql.

Aby przetestować ten przykład, Zapisz szablon (InlineSchemaTemplate.xml) w katalogu lokalnym a następnie utwórz i umożliwia SQLXML 4.0 przetestować skrypt (Sqlxml4test.vbs) wykonać szablonu.Aby uzyskać więcej informacji, zobacz Przy użyciu ADO SQLXML wykonanie kwerendy 4.0.

Oprócz określenia mapping-schema atrybut na <sql:xpath-query> elementu w szablonie, (gdy jest kwerendę XPath), lub na <updg:sync> element w wierzchołki można wykonać następujące czynności:

  • Określ mapping-schema atrybut na <głównego> (deklaracja globalne) elementu w szablonie.Ten schemat mapowanie staje się domyślny schemat, używany przez wszystkie węzły XPath i wierzchołki, które mają jawny nie mapping-schema adnotacji.

  • Określ mapping schema atrybut przy użyciu ADO Command obiektu.

mapping-schema Atrybut, który jest określony na <kwerendę xpath> lub <updg:sync> element ma najwyższy priorytet; ADO Command obiekt ma najniższy priorytet.

Należy zauważyć, że jeśli określić kwerendę XPath w szablonie i nie określono schematu mapowanie, przeciwko której kwerenda XPath jest wykonywana kwerenda XPath jest traktowany jako dbobject typu kwerendy.Rozważmy na przykład tego szablonu:

<sql:xpath-query 
     xmlns:sql="urn:schemas-microsoft-com:xmlsql">
          Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto
</sql:xpath-query>

Szablon określa kwerendę XPath, ale nie określono schematu mapowania.Therefore, this query is treated as a dbobject type query in which Production.ProductPhotois the table name and @ProductPhotoID='100' is a predicate that finds a product photo with the ID value of 100.@ LargePhoto jest kolumna, z której można pobrać wartość.