Udostępnij przez


Korzystanie z adnotacjami schematy XSD w kwerendach (SQLXML 4.0)

Można określić kwerendy adnotacjami schematem do pobierania danych z bazy danych, określając wyrażenie XPath kwerendy w szablonie schematem XSD.

The <sql:xpath-query> element allows you to specify an XPath query against the XML view that is defined by the annotated schema.Schemat adnotacjami, od którego ma zostać wykonana kwerenda wyrażenie XPath jest identyfikowany za pomocą mapping-schema atrybut <SQL:XPath — kwerendy> element.

Szablony są prawidłowe dokumentów XML, które zawierają jeden lub więcej kwerend.Kwerendy FOR XML i wyrażenie XPath zwraca fragment dokumentu.Szablony działają jak kontenery dla fragmentów dokumentu; szablony w ten sposób umożliwiają określenie elementu najwyższego poziom, pojedyncze.

W przykładach w tym temacie określić kwerendę XPath schematem adnotacjami, aby pobierać dane z bazy danych za pomocą szablonów.

Na przykład należy wziąć pod uwagę 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.Contact" >
     <xsd:complexType>
       <xsd:attribute name="ContactID" type="xsd:string" /> 
       <xsd:attribute name="FirstName" type="xsd:string" /> 
       <xsd:attribute name="LastName"  type="xsd:string" /> 
     </xsd:complexType>
  </xsd:element>
</xsd:schema>

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

<sql:xpath-query 
     xmlns:sql="urn:schemas-microsoft-com:xmlsql"
     >
          Person.Contact[@ContactID="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 zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

Za pomocą wbudowanej mapowania schematów

Schemat adnotacjami można umieścić bezpośrednio w szablonie, a następnie można określić kwerendę XPath w szablonie schematem wbudowanej.W szablonie może być również updategram.

Szablon może zawierać wiele wbudowanych schematów.Aby użyć wbudowanego schematu dołączonego szablonu, należy określić Identyfikator atrybut z unikatową wartość na <xsd:schema> element, a następnie użyj #idvalue odwołać wbudowanego schematu.The id atrybut is identical in behavior to the sql:id ({urn:schemas-microsoft-com:xml-sql}id) used in XDR schemas.Aby uzyskać więcej informacji zobaczKorzystanie z adnotacjami schematy XDR w kwerendach (zaniechana w SQLXML 4.0).

Na przykład następującego szablonu określa dwa schematy odnotowany wbudowanej:

<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='Title' 
                     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='Contacts' ms:relation='Person.Contact'>
    <xsd:complexType>

      <xsd:attribute name='ContactID' 
                     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'>
    /Contacts[@ContactID='1']
</sql:xpath-query>
</ROOT>

Szablon określa także dwie kwerendy XPath.Każdy z <kwerendy XPath> elementy jednoznacznie identyfikuje schematu mapowania przez określenie mapping-schema atrybut.

Po określeniu schematu wbudowanych w szablonie, sql:is-mapping-schema należy także określić adnotacji na <xsd:schema> element. The sql:is-mapping-schema takes a logiczny value (0=false, 1=true). Schemat wbudowany z SQL: jest mapowanie schemacie = "1" jest traktowany jako wbudowany schemat adnotacjami i nie jest zwracany w dokumencie XML.

The sql:is-mapping-schema annotation belongs to the template namespace urn:schemas-microsoft-com:xml-sql.

Aby przetestować ten przykład, Zapisz szablon (InlineSchemaTemplate.xml) w przypadku katalogu lokalnego, a następnie utwórz i użyciem SQLXML 4.0 testowy skrypt (Sqlxml4test.vbs) do wykonać w szablonie.Aby uzyskać więcej informacji zobaczPrzy użyciu obiektu ADO do wykonywania SQLXML bada 4.0.

Oprócz określenia mapping-schema atrybut w <SQL:XPath — kwerendy> element w szablonie (jeśli istnieje kwerendę XPath) lub na <updg:Sync> element an updategram, można wykonać następujące czynności:

  • Określ mapping-schema atrybut w <KATALOG GŁÓWNY> element (deklaracja globalne) w szablonie. Ten schemat mapowania staje się domyślny schemat, używane przez wszystkie węzły XPath i updategram, których nie jawne mapping-schema adnotacja.

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

The mapping-schema atrybut that is specified on the <xpath-query> or <updg:sync> element has the highest precedence; the ADO Command object has the lowest precedence.

Należy zauważyć, że jeśli określić kwerendę XPath w szablonie, a nie określono mapowania schematu od którego jest wykonywane kwerendy XPath, wyrażenie XPath kwerendy jest traktowany jako dbobject typu kwerendy.Na przykład należy wziąć pod uwagę 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 mapowania schematu.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órych można pobrać wartości.