Syntax
OPENXML(idoc int [in],rowpattern nvarchar[in],[flags byte[in]])
[WITH (SchemaDeclaration | TableName)]
Arguments
idoc
Is the document handle of the internal representation of an XML document. The internal representation of an XML document is created by calling sp_xml_preparedocument.
rowpattern
Is the XPath pattern used to identify the nodes (in the XML document whose handle is passed in the idoc parameter) to be processed as rows.
flags
Indicates the mapping that should be used between the XML data and the relational rowset, and how the spill-over column should be filled. flags is an optional input parameter, and can be one of these values.
Byte Value | Description |
---|---|
0 | Defaults to attribute-centric mapping. |
1 | Use the attribute-centric mapping. Can be combined with XML_ELEMENTS; in which case, attribute-centric mapping is applied first, and then element-centric mapping is applied for all columns not yet dealt with. |
2 | Use the element-centric mapping. Can be combined with XML_ATTRIBUTES; in which case, attribute-centric mapping is applied first, and then element-centric mapping is applied for all columns not yet dealt with. |
8 | Can be combined (logical OR) with XML_ATTRIBUTES or XML_ELEMENTS. In context of retrieval, this flag indicates that the consumed data should not be copied to the overflow property @mp:xmltext. |
SchemaDeclaration
Is the schema definition of the form:
ColName ColType [ColPattern | MetaProperty][, ColName ColType [ColPattern | MetaProperty]...]
-
ColName
-
Is the column name in the rowset.
ColType
-
Is the SQL data type of the column in the rowset. If the column types differ from the underlying XML data type of the attribute, type coercion occurs. If the column is of type
timestamp, the present value in the XML document is disregarded when selecting from an OPENXML rowset, and the autofill values are returned.
ColPattern
-
Is an optional, general XPath pattern that describes how the XML nodes should be mapped to the columns. If the
ColPattern is not specified, the default mapping (attribute-centric or element-centric mapping as specified by
flags) takes place.
The XPath pattern specified as ColPattern is used to specify the special nature of the mapping (in case of attribute-centric and element-centric mapping) that overwrites or enhances the default mapping indicated by flags.
The general XPath pattern specified as ColPattern also supports the metaproperties.
MetaProperty
- Is one of the metaproperties provided by OPENXML. If the metaproperty is specified, the column contains information provided by the metaproperty. The metaproperties allow you to extract information (such as relative position, , namespace information) about XML nodes, which provides more information than is visible in the textual representation.
TableName
Is the table name that can be given (instead of SchemaDeclaration) if a table with the desired schema already exists and no column patterns are required.
The WITH clause provides a rowset format (and additional mapping information as necessary) using either SchemaDeclaration or specifying an existing TableName. If the optional WITH clause is not specified, the results are returned in an edge table format. Edge tables represent the fine-grained XML document structure (e.g. element/attribute names, the document hierarchy, the namespaces, PIs etc.) in a single table.
This table describes the structure of the edge table.
Column name | Data type | Description |
---|---|---|
id | bigint | Is the unique ID of the document node. The root element has an ID value 0. The negative ID values are reserved. |
parentid | bigint | Identifies the parent of the node. The parent identified by this ID is not necessarily the parent element, but it depends on the NodeType of the node whose parent is identified by this ID. For example, if the node is a text node, the parent of it may be an attribute node. If the node is at the top level in the XML document, its ParentID is NULL. |
nodetype | int | Identifies the node type. Is an integer that corresponds to the XML DOM node type numbering (see DOM for node information). The node types are: 1 = Element node |
localname | nvarchar | Gives the local name of the element or attribute. Is NULL if the DOM object does not have a name. |
prefix | nvarchar | Is the namespace prefix of the node name. |
namespaceuri | nvarchar | Is the namespace URI of the node. If the value is NULL, no namespace is present. |
datatype | nvarchar | Is the actual data type of the element or attribute row and is NULL otherwise. The data type is inferred from the inline DTD or from the inline schema. |
prev | bigint | Is the XML ID of the previous sibling element. Is NULL if there is no direct previous sibling. |
text | ntext | Contains the attribute value or the element content in text form (or is NULL if the edge table entry does not need a value). |
The following illustration shows the parsed XML tree of the previous XML document that was created by using sp_xml_preparedocument.
Using OPENXML
http://msdn.microsoft.com/en-us/library/aa226522(v=sql.80).aspx