Attributes | Values |
---|
type
| |
Title
| |
content
| -
Preliminaries
The sql:relation annotation maps an XML node in the XSD schema to a database table.
The name of a table (view) is specified as the value of the sql:relation annotation.
When sql:relation is specified on an element, the scope of this annotation applies to all attributes and
subelements that are described in the complex type definition of that element, therefore, providing a shortcut
in writing annotations.
The sql:relation annotation also may be used if identifiers that are valid in SQL
are not valid in XML. For example, 'Order Details' is a valid table name in SQL, but not in XML.
In such cases, the sql:relation annotation can be used to specify the mapping, for example:
<xsd:element name="OrderDetails" sql:relation="Order Details">
...
The sql:field annotation maps an XML node in the schema to a database column. It's not allowed to specify
sql:field on an empty content element.
Example
In this example, the XSD schema consists of an 'Emp' element of complex type with 'FirstName',
'LastName' and 'title' child elements and the 'EmpID' attribute.
The sql:relation annotation maps the 'Emp' element to the Demo.demo.Employees table. The sql:field
annotation maps the 'title' element to the 'Title' column and the 'EmpID' attribute
to the "EmployeeID" column.
No annotations are specified for the 'FirstName' and 'LastName' elements. This results in a
default mapping of the elements to the columns with the same names.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Emp" sql:relation="Demo.demo.Employees" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FirstName"
type="xsd:string" />
<xsd:element name="LastName"
type="xsd:string" />
<xsd:element name="title"
sql:field="Title"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="EmpID" sql:field="EmployeeID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Let the schema is written to the file 'EmpSchema.xsd', then after loading this file by
xml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:
XPATH [__view 'EmpSchema'] /*
the second example will produce a result for the XQuery query:
select xquery_eval('<doc>{for $r in xmlview("EmpSchema")/* return $r}</doc>', xtree_doc('<q/>'));
<doc> is necessary for serialization (any name instead 'doc' is possible)
|
has container
| |
description
| - Using sql:relation and sql:field
|
dcterms:created_at
| - Fri, 27 Dec 2019 14:12:54 GMT
|
content:encoded
| -
Preliminaries
The sql:relation annotation maps an XML node in the XSD schema to a database table.
The name of a table (view) is specified as the value of the sql:relation annotation.
When sql:relation is specified on an element, the scope of this annotation applies to all attributes and
subelements that are described in the complex type definition of that element, therefore, providing a shortcut
in writing annotations.
The sql:relation annotation also may be used if identifiers that are valid in SQL
are not valid in XML. For example, 'Order Details' is a valid table name in SQL, but not in XML.
In such cases, the sql:relation annotation can be used to specify the mapping, for example:
<xsd:element name="OrderDetails" sql:relation="Order Details">
...
The sql:field annotation maps an XML node in the schema to a database column. It's not allowed to specify
sql:field on an empty content element.
Example
In this example, the XSD schema consists of an 'Emp' element of complex type with 'FirstName',
'LastName' and 'title' child elements and the 'EmpID' attribute.
The sql:relation annotation maps the 'Emp' element to the Demo.demo.Employees table. The sql:field
annotation maps the 'title' element to the 'Title' column and the 'EmpID' attribute
to the "EmployeeID" column.
No annotations are specified for the 'FirstName' and 'LastName' elements. This results in a
default mapping of the elements to the columns with the same names.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Emp" sql:relation="Demo.demo.Employees" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FirstName"
type="xsd:string" />
<xsd:element name="LastName"
type="xsd:string" />
<xsd:element name="title"
sql:field="Title"
type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="EmpID" sql:field="EmployeeID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
Let the schema is written to the file 'EmpSchema.xsd', then after loading this file by
xml_load_mapping_schema_decl function, the first example will produce a result for the XPath query:
XPATH [__view 'EmpSchema'] /*
the second example will produce a result for the XQuery query:
select xquery_eval('<doc>{for $r in xmlview("EmpSchema")/* return $r}</doc>', xtree_doc('<q/>'));
<doc> is necessary for serialization (any name instead 'doc' is possible)
|
is container of
of | |