## Purpose
Data lossy stored in HTML format can be interpreted as a data source using the htmltable keyword.
The expression specifies a master path within the context of which the rows are evaluated using the column specifications.
The passing option specifies the source of the data in HTML format. The source is often the outcome of a read_file() table function or a URL download using httpdownload(). Full adherence to the HTML format is not required; the parser often automatically corrects many HTML format errors.
The columns are specified using their path relative to the master path.
```sql
--
-- Retrieve all anchors from a webpage.
--
select htable.*
from httpdownload@datadictionary('https://www.invantive.com') dld
join htmltable
( '//a'
passing dld.content_clob
columns href varchar2 path '@href'
, rel varchar2 path '@rel'
, title varchar2 path '@title'
)
htable
```
## Syntax
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart TD
htmlTableSpec_start((START))
htmlTableSpec_start --> htmlTableSpec_0_0[HTMLTABLE]:::quoted
htmlTableSpec_0_0 --> htmlTableSpec_0_1["("]:::quoted
htmlTableSpec_0_1 --> htmlTableSpec_0_2[htmlTableExpression]
htmlTableSpec_0_2 --> htmlTableSpec_0_3[htmlTablePassing]
htmlTableSpec_0_3 --> htmlTableSpec_0_4[htmlTableLiteral]
htmlTableSpec_0_4 --> htmlTableSpec_0_5[htmlTableColumns]
htmlTableSpec_0_5 --> htmlTableSpec_0_6[")"]:::quoted
htmlTableSpec_0_6 --> htmlTableSpec_end((END))
```
## htmlTableLiteral
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart LR
htmlTableLiteral_start((START))
htmlTableLiteral_start --> htmlTableLiteral_0_0[LITERAL]:::quoted
htmlTableLiteral_0_0 --> htmlTableLiteral_0_1[<a href="Invantive UniversalSQL/Grammar/Expression" class="internal-link">expression</a>]
htmlTableLiteral_0_1 --> htmlTableLiteral_end((END))
```
## htmlTablePassing
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart LR
Start((START)) --> htmlTablePassing
htmlTablePassing -->| | passingSourceOrPathExpression
passingSourceOrPathExpression --> End((END))
```
## htmlTableExpression
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart LR
Start((START)) --> htmlTableExpression
htmlTableExpression -->| | stringConstant
stringConstant --> End((END))
```
## htmlTableColumns
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart TD
htmlTableColumns_start((START))
htmlTableColumns_start --> htmlTableColumns_0_0["COLUMNS"]:::quoted
htmlTableColumns_0_0 --> htmlTableColumns_0_1[htmlTableColumnSpec]
htmlTableColumns_0_1 --> htmlTableColumns_0_2[","]:::quoted
htmlTableColumns_0_2 --> htmlTableColumns_0_3[htmlTableColumnSpec]
htmlTableColumns_0_3 --> htmlTableColumns_end((END))
```
## Purpose
A list of HTML table column specifications.
## htmlTableColumnSpec
```mermaid
%%{init: {
'theme': 'base',
'flowchart': { 'padding': '7', 'nodeSpacing': '20', 'rankSpacing': '20' },
'themeVariables': {
'fontSize': '11px',
'fontFamily': 'Arial'
}
}}%%
flowchart TD
htmlTableColumnSpec_start((START))
htmlTableColumnSpec_start --> htmlTableColumnSpec_0_0[<a href="Invantive UniversalSQL/Grammar/Identifier" class="internal-link">identifier</a>]
htmlTableColumnSpec_0_0 --> htmlTableColumnSpec_0_1[sqlDataTypeExtended]
htmlTableColumnSpec_0_1 --> htmlTableColumnSpec_0_2[PATH]:::quoted
htmlTableColumnSpec_0_2 --> htmlTableColumnSpec_0_3[stringConstant]
htmlTableColumnSpec_0_3 --> htmlTableColumnSpec_end((END))
```
## Purpose
Each HTML table column is mapped to a data source column using the path relative to the master path.