ddn.data.xml.relaxng
Relax NG support (phased).
This module provides a minimal, native Relax NG representation and validator.
Current scope (phased native subset):
- Supports
element,attribute,text,empty,group,choice, and a limitedinterleave. - Supports both direct pattern roots and
<grammar><start>...</start></grammar>. - Validation is currently limited to element/attribute structure and basic text/empty checks.
For full correctness and broader schema coverage, keep using the CLI oracle (xmllint --relaxng) while this native implementation is extended.
var RELAXNG_NS
enum RelaxNgPatternKind
Types 4
Relax NG pattern kind.
ELEMENTElement pattern.
EMPTYEmpty pattern.
ATTRIBUTEAttribute pattern.
TEXTText pattern.
DATADatatype pattern.
GROUPGroup (sequence) pattern.
CHOICEChoice pattern.
INTERLEAVEInterleave pattern (limited).
OPTIONALOptional pattern.
ZERO_OR_MOREZero-or-more repetition.
ONE_OR_MOREOne-or-more repetition.
NOT_ALLOWEDNot allowed pattern (internal use for derivatives).
structRelaxNgPattern
Relax NG pattern.
Fields
RelaxNgPatternKind kindPattern kind.string nameName for `ELEMENT` and `ATTRIBUTE` patterns.RelaxNgPattern[] childrenChild patterns.structRelaxNgGrammar
Relax NG grammar.
Fields
RelaxNgPattern rootRoot pattern.structRelaxNgValidationResult
Result of validating a document against a Relax NG grammar.
Fields
bool valid`true` if valid.string messageOptional error message if invalid.Functions 16
fn
RelaxNgValidationResult validateRelaxNgDocument(XmlDocument doc, RelaxNgGrammar grammar) @safeValidates `doc` against `grammar`.private fn
bool matchAttributePattern(RelaxNgPattern pattern, XmlElement el, out string message) @safeprivate fn
size_t[] matchSequence(RelaxNgPattern[] patterns, XmlElement[] children, size_t pos) @safeVariables 1
private enumvar
RELAXNG_NS = "http://relaxng.org/ns/structure/1.0"