Orcus
|
Public Member Functions | |
orcus_xml (const orcus_xml &)=delete | |
orcus_xml & | operator= (const orcus_xml &)=delete |
orcus_xml (xmlns_repository &ns_repo, spreadsheet::iface::import_factory *im_fact, spreadsheet::iface::export_factory *ex_fact) | |
void | set_namespace_alias (std::string_view alias, std::string_view uri, bool default_ns=false) |
void | set_cell_link (std::string_view xpath, std::string_view sheet, spreadsheet::row_t row, spreadsheet::col_t col) |
void | start_range (std::string_view sheet, spreadsheet::row_t row, spreadsheet::col_t col) |
void | append_field_link (std::string_view xpath, std::string_view label) |
void | set_range_row_group (std::string_view xpath) |
void | commit_range () |
void | append_sheet (std::string_view name) |
void | read_stream (std::string_view stream) |
void | read_map_definition (std::string_view stream) |
void | detect_map_definition (std::string_view stream) |
void | write_map_definition (std::string_view stream, std::ostream &out) const |
void | write (std::string_view stream, std::ostream &out) const |
void orcus::orcus_xml::append_field_link | ( | std::string_view | xpath, |
std::string_view | label ) |
Append a field that is mapped to a specified path in the XML document to the current linked range.
xpath | path to the element or attribute to link as a field. |
label | custom header label to use in lieu of the name of the linked entity. |
void orcus::orcus_xml::append_sheet | ( | std::string_view | name | ) |
Append a new sheet to the spreadsheet document.
name | name of the sheet. |
void orcus::orcus_xml::commit_range | ( | ) |
Commit the mapping definition of the current range.
void orcus::orcus_xml::detect_map_definition | ( | std::string_view | stream | ) |
Read a stream containing the source XML document, automatically detect all linkable ranges and import them one range per sheet.
stream | stream containing the source XML document. |
void orcus::orcus_xml::read_map_definition | ( | std::string_view | stream | ) |
Read an XML stream that contains an entire set of mapping rules.
This method also inserts all necessary sheets into the document model.
stream | stream containing the XML string. |
void orcus::orcus_xml::read_stream | ( | std::string_view | stream | ) |
Read the stream containing the source XML document.
stream | stream containing the content of the source XML document. |
void orcus::orcus_xml::set_cell_link | ( | std::string_view | xpath, |
std::string_view | sheet, | ||
spreadsheet::row_t | row, | ||
spreadsheet::col_t | col ) |
Define a mapping of a single element or attribute to a single cell location.
xpath | path to the element or attribute to link. |
sheet | sheet index (0-based) of the linked cell location. |
row | row index (0-based) of the linked cell location. |
col | column index (0-based) of the linked cell location. |
void orcus::orcus_xml::set_namespace_alias | ( | std::string_view | alias, |
std::string_view | uri, | ||
bool | default_ns = false ) |
Define a namespace and its alias used in a map file.
alias | alias for the namespace. |
uri | namespace value. |
default_ns | whether or not to use this namespace as the default namespace. When this value is set to true, the namespace being set will be applied for all elements and attributes used in the paths without explicit namespace values. |
void orcus::orcus_xml::set_range_row_group | ( | std::string_view | xpath | ) |
Set the element located in the specified path as a row group in the current linked range.
If the element is defined as a row-group element, the row index will increment whenever that element closes.
xpath | path to the element to use as a row group element. |
void orcus::orcus_xml::start_range | ( | std::string_view | sheet, |
spreadsheet::row_t | row, | ||
spreadsheet::col_t | col ) |
Initiate the mapping definition of a linked range. The definition will get committed when the commit_range
method is called.
sheet | sheet index (0-based) of the linked cell location. |
row | row index (0-based) of the linked cell location. |
col | column index (0-based) of the linked cell location. |
void orcus::orcus_xml::write | ( | std::string_view | stream, |
std::ostream & | out ) const |
Write the linked cells and ranges in the spreadsheet document as an XML document using the same map definition rules used to load the content.
Note that this requires the source XML document stream, as it re-uses parts of the source stream.
stream | stream containing the source XML document. |
out | output stream to write the XML document to. |
void orcus::orcus_xml::write_map_definition | ( | std::string_view | stream, |
std::ostream & | out ) const |
Read a stream containing the source XML document, automatically detect all linkable ranges, and write a map definition file depicting the detected ranges.
stream | stream containing the source XML document. |
out | output stream to write the map definition file to. |