MoonBit XML base and RDF/XML parser: spec-shaped document model, namespace-aware pull parsing with BOM/encoding detection, canonical serialization, with W3C XML Conformance and RDF/XML test-suite coverage.
moon add thy1016/moonxmlmatch @base.parse("<r><a>1</a><b x=\"2\"/></r>") {
Ok(doc) => println(doc.to_xml())
Err(_) => println("parse failed")
}// XML 1.0 四版次全表名字面(Edition5 为现行第五版紧凑面)
let opts_edition = @base.parse_edition(
source,
edition: @base.XmlEdition::Editions1to4,
)
// 非 NS 面:名字原文直通,xmlns 即普通属性
let ns_off = @base.parse_edition(
source,
edition: @base.XmlEdition::Edition5,
ns: @base.NsMode::Off,
)// BOM 嗅探 + 声明面编码决策;不支持面返回 Encoding 错
match @base.decode_source(bytes) {
Ok(text) => println("decoded \{text.length()} chars")
Err(_) => println("unsupported encoding")
}// resolver : &EntityResolver——实现 resolve(public_id, system_id, base)
// 返回 None 表示拒取;构造时经 parse_edition 的 resolver 参数注入。// RDF 1.1/1.2 XML → Dataset(Quad{subject, predicate, object, graph})
match @rdf.parse_rdf_xml(xml) {
Ok(dataset) =>
for quad in dataset.quads {
println(quad.predicate)
}
Err(msg) => println(msg)
}
// 带基准 IRI(xml:base 相对引用解析锚)
match @rdf.parse_rdf_xml_with_base(xml, base="https://example.org/doc") {
Ok(dataset) => println(dataset.quads.length())
Err(msg) => println(msg)
}| 入口 | 作用 |
|---|---|
| parse | 字符串 → Document(NS-aware,实体已展开) |
| parse_edition | 全参入口:版次面 + NS 面 + 实体解析器 |
| decode_source | Bytes → 文本(BOM 嗅探 + 声明面编码决策) |
| Document::to_xml | 规范化序列化(往返稳定形) |
| is_name_start_char_11 等 | 名字产生式区间表谓词(1.0 四版次 / 1.1 双面) |
| @rdf.parse_rdf_xml | RDF/XML 字符串 → Dataset |
| @rdf.parse_rdf_xml_with_base | 同上 + 基准 IRI(相对引用解析锚) |
| @rdf.resolve_reference | RFC 3986 相对引用解析(// 网络路径 / 片不继承) |
moon test --target native| 面 | 读数 |
|---|---|
| W3C XML Conformance(xmlts20130923,2585 案) | 2572 passed / 13 deferred / 0 failed |
| W3C RDF/XML 套件(rdf11+rdf12,197 案) | 197 judged / 0 deferred / 0 failed |
| 单元与契约门 | 126 / 126 |
Install
Download zipMoonBit XML base and RDF/XML parser: spec-shaped document model, namespace-aware pull parsing with BOM/encoding detection, canonical serialization, with W3C XML Conformance and RDF/XML test-suite coverage.