## Purpose Data stored in XML format can be interpreted as a data source using the xmltable keyword. The expression specifies a master XPath expression within the context of which the rows are evaluated using the column specifications. The passing option specifies the source of the data in XML format. The source is often the outcome of a read_file() table function, a URL download using httpget() or a previous xmlformat() SQL function. The columns are specified using their XPath relative to the master path. ```sql select xtable.item_code from ( select '&lt;root&gt;&lt;item&gt;&lt;code&gt;mycode&lt;/code&gt;&lt;description&gt;description&lt;/description&gt;&lt;/item&gt;&lt;/root&gt;' xmlfragment ) xmlsource join xmltable ( '/root' passing xmlsource.xmlfragment columns item_code varchar2 path 'item/code' , item_description varchar2 path 'item/description' ) xtable ``` ## xmlTableSpec ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart TD xmlTableSpec_start((START)) xmlTableSpec_start --> xmlTableSpec_0_0["XMLTABLE("]:::quoted xmlTableSpec_0_0 --> xmlTableSpec_0_2[<a href="Invantive UniversalSQL/Grammar/Expression" class="internal-link">expression</a>] xmlTableSpec_0_2 --> xmlTableSpec_0_3[null] xmlTableSpec_0_3 --> xmlTableSpec_0_4[xmlTablePassing] xmlTableSpec_0_4 --> xmlTableSpec_0_5[xmlTableLiteral] xmlTableSpec_0_5 --> xmlTableSpec_0_6[xmlTableColumns] xmlTableSpec_0_6 --> xmlTableSpec_0_7[")"]:::quoted xmlTableSpec_0_7 --> xmlTableSpec_end((END)) ``` ## xmlTablePassing ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart LR Start((START)) --> xmlTablePassing xmlTablePassing -->| | passingSourceOrPathExpression passingSourceOrPathExpression --> End((END)) ``` ## xmlTableLiteral ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart LR xmlTableLiteral_start((START)) xmlTableLiteral_start --> xmlTableLiteral_0_0[LITERAL]:::quoted xmlTableLiteral_0_0 --> xmlTableLiteral_0_1[<a href="Invantive UniversalSQL/Grammar/Expression" class="internal-link">expression</a>] xmlTableLiteral_0_1 --> xmlTableLiteral_end((END)) ``` ## Purpose A literal value containing a valid XML document. ## xmlTableColumns ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart TD xmlTableColumns_start((START)) xmlTableColumns_start --> xmlTableColumns_0_0[COLUMNS]:::quoted xmlTableColumns_0_0 --> xmlTableColumns_0_1[xmlTableColumnSpec] xmlTableColumns_0_1 --> xmlTableColumns_0_2[","]:::quoted xmlTableColumns_0_2 --> xmlTableColumns_0_3[xmlTableColumnSpec] xmlTableColumns_0_3 --> xmlTableColumns_end((END)) ``` ## Purpose A list of XML table column specifications. ## xmlTableColumnSpec ```mermaid %%{init: { 'theme': 'base', 'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' }, 'themeVariables': { 'fontSize': '11px', 'fontFamily': 'Arial' } }}%% flowchart TD xmlTableColumnSpec_start((START)) xmlTableColumnSpec_start --> xmlTableColumnSpec_0_0[<a href="Invantive UniversalSQL/Grammar/Identifier" class="internal-link">identifier</a>] xmlTableColumnSpec_0_0 --> xmlTableColumnSpec_0_1[sqlDataTypeExtended] xmlTableColumnSpec_0_1 --> xmlTableColumnSpec_0_2["PATH"]:::quoted xmlTableColumnSpec_0_2 --> xmlTableColumnSpec_0_3[stringConstant] xmlTableColumnSpec_0_3 --> xmlTableColumnSpec_end((END)) ``` ## Purpose The columns are specified using their XPath relative to the master path.