#![allow(dead_code)]
use std::fmt::Display;
use xml_dom::level2::convert::*;
use xml_dom::level2::ext::dom_impl::get_implementation_ext;
use xml_dom::level2::ext::options::ProcessingOptions;
use xml_dom::level2::*;
pub const DC_NS: &str = "http://purl.org/dc/elements/1.1/";
pub const RDF_NS: &str = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
pub const XML_NS_URI: &str = "http://www.w3.org/XML/1998/namespace";
pub const XMLNS_NS: &str = "http://www.w3.org/2000/xmlns/";
pub fn create_empty_rdf_document() -> RefNode {
let implementation = get_implementation();
implementation
.create_document(Some(RDF_NS), Some("rdf:RDF"), None)
.unwrap()
}
//
//
//
//
// Rose Bush
// A Guide to Growing Roses
// Describes process for planting & nurturing different kinds of rose bushes.
// 2001-01-20
//
//
//
pub fn create_example_rdf_document() -> RefNode {
create_example_rdf_document_options(ProcessingOptions::default())
}
#[allow(unused_must_use)]
pub fn create_example_rdf_document_options(options: ProcessingOptions) -> RefNode {
let implementation = get_implementation_ext();
let mut document_node = implementation
.create_document_with_options(Some(RDF_NS), Some("rdf:RDF"), None, options)
.unwrap();
let document = as_document_mut(&mut document_node).unwrap();
let mut root_node = document.document_element().unwrap();
let root_element = as_element_mut(&mut root_node).unwrap();
root_element.set_attribute_ns(XMLNS_NS, "xmlns:rdf", RDF_NS);
root_element.set_attribute("id", "main");
let mut description_node = document
.create_element_ns(RDF_NS, "rdf:Description")
.unwrap();
let description_element = as_element_mut(&mut description_node).unwrap();
root_element.set_attribute_ns(
RDF_NS,
"rdf:about",
"http://media.example.com/audio/guide.ra",
);
root_element.set_attribute_ns(XMLNS_NS, "xmlns:rdf", RDF_NS);
description_element.append_child(create_element_with(
document,
DC_NS,
"dc:creator",
"Rose Bush",
));
let mut new_element =
create_element_with(document, DC_NS, "dc:title", "A Guide to Growing Roses");
new_element.set_attribute_ns(XML_NS_URI, "xml:id", "title");
description_element.append_child(new_element);
let mut new_element = create_element_with(
document,
DC_NS,
"dc:Description",
"Describes process for planting & nurturing different kinds of rose bushes.",
);
new_element.set_attribute("id", "description");
description_element.append_child(new_element);
description_element.append_child(create_element_with(
document,
DC_NS,
"dc:date",
"2001-01-20",
));
root_element.append_child(description_node);
document_node
}
#[allow(unused_must_use)]
pub fn create_element_with(document: RefDocument, ns: &str, qn: &str, content: &str) -> RefNode {
let mut node = document.create_element_ns(ns, qn).unwrap();
let element = as_element_mut(&mut node).unwrap();
element.append_child(document.create_text_node(content));
node
}
#[inline]
pub fn sub_test(primary: &str, secondary: &str) {
println!("**[{}]** sub-case: `{}`", primary, secondary);
}
#[inline]
pub fn sub_test_result(primary: &str, secondary: &str, result: T) {
println!("**[{}]** sub-case: `{}` -> {}", primary, secondary, result);
}
#[inline]
pub fn sub_test_error(primary: &str, secondary: &str, result: T) {
println!(
"**[{}]** sub-case: `{}` ERROR {}",
primary, secondary, result
);
}