Esclusione di elementi dello schema dal documento XML con sql:mapped
Si applica a: SQL Server Database SQL di Azure
A causa del mapping predefinito, viene eseguito il mapping di ogni elemento e attributo nello schema XSD a una vista/tabella e a una colonna di database. Se si desidera creare un elemento nello schema XSD che non esegue il mapping ad alcuna tabella di database (vista) o colonna e che non viene visualizzato nel codice XML, è possibile specificare l'annotazione sql:mapped .
L'annotazione sql:mapped è particolarmente utile se lo schema non può essere modificato o se lo schema viene usato per convalidare XML da altre origini e contiene dati non archiviati nel database. L'annotazione sql:mapped differisce da sql:is-constant in quanto gli attributi e gli elementi non mappati non vengono visualizzati nel documento XML.
L'annotazione sql:mapped accetta un valore booleano (0 = false, 1 = true). I valori possibili sono 0, 1, true e false.
Esempi
Per creare esempi reali utilizzando gli esempi seguenti, è necessario soddisfare alcuni requisiti. Per altre informazioni, vedere Requisiti per l'esecuzione di esempi SQLXML.
R. Specifica dell'annotazione sql:mapped
Si supponga di disporre di uno schema XSD di un'altra origine. Questo schema XSD è costituito da un elemento Person.Contact> con attributi ContactID, FirstName, LastName e HomeAddress.<
Nel mapping di questo schema XSD alla tabella Person.Contact nel database AdventureWorks, sql:mapped viene specificato nell'attributo HomeAddress perché la tabella Employees non archivia gli indirizzi home dei dipendenti. Di conseguenza, questo attributo non viene mappato al database e non viene restituito nel documento XML risultante quando viene specificata una query XPath sullo schema di mapping.
Per il resto dello schema viene eseguito il mapping predefinito. L'elemento <Person.Contact> esegue il mapping alla tabella Person.Contact e tutti gli attributi eseguono il mapping alle colonne con lo stesso nome nella tabella Person.Contact.
<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:attribute name="HomeAddress" type="xsd:string"
sql:mapped="false" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Per testare una query Xpath di esempio sullo schema
Copiare il codice dello schema precedente e incollarlo in un file di testo. Salvare il file con il nome sql-mapped.xml.
Copiare il modello seguente e incollarlo in un file di testo. Salvare il file con il nome sql-mappedT.xml nella stessa directory in cui è stato salvato il file sql-mapped.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sql-mapped.xml"> /Person.Contact[@ContactID < 10] </sql:xpath-query> </ROOT>
Il percorso di directory specificato per lo schema di mapping (MySchema.xml) è relativo alla directory in cui è salvato il modello. È possibile specificare anche un percorso assoluto, ad esempio:
mapping-schema="C:\MyDir\sql-mapped.xml"
Creare e utilizzare lo script di test SQLXML 4.0 (Sqlxml4test.vbs) per eseguire il modello.
Per altre informazioni, vedere Uso di ADO per eseguire query SQLXML.
Set di risultati:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong" />
<Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel" />
<Person.Contact ContactID="3" FirstName="Kim" LastName="Abercrombie" />
<Person.Contact ContactID="4" FirstName="Humberto" LastName="Acevedo" />
<Person.Contact ContactID="5" FirstName="Pilar" LastName="Ackerman" />
<Person.Contact ContactID="6" FirstName="Frances" LastName="Adams" />
<Person.Contact ContactID="7" FirstName="Margaret" LastName="Smith" />
<Person.Contact ContactID="8" FirstName="Carla" LastName="Adams" />
<Person.Contact ContactID="9" FirstName="Jay" LastName="Adams" />
</ROOT>
Si noti che sono presenti ContactID, FirstName e LastName, ma HomeAddress non è perché lo schema di mapping specificato 0 per l'attributo sql:mapped .
Vedi anche
Mapping predefinito di elementi e attributi XSD a tabelle e colonne (SQLXML 4.0)