ddn.data.xml.relaxng
Relax NG 1.0 validation.
This module provides a native Relax NG representation and validator.
Supported patterns:
element(with@nameor name classesanyName/nsName/choicewith optionalexcept)attribute(with@nameor name classes)text,empty,data,valuegroup,choice,interleaveoptional,zeroOrMore,oneOrMoremixed,listnotAllowedgrammarwithstart,define, andref- Recursive grammar definitions
Supported datatypes (XSD subset):
string,token,boolean,int/integer,decimal,float,double,date,dateTime,time,anyURI,NMTOKEN,NMTOKENS,ID,IDREF
Remaining limitations:
includeandexternalRefare not supportedcombineattribute ondefineis not supporteddatatypeLibraryattribute is acknowledged but only the built-in XSD type set is validated- Namespace-qualified element/attribute name matching uses lexical names only (no namespace expansion in pattern names)
var RELAXNG_NS
alias Defs
fn canMatchEmpty canMatchEmptyList containsOnlyAttributes deepCopyNameClass deepCopyPattern deepCopyPatterns derive elementChildren extractAttributes findExcept hasElementChild hasNonWhitespaceText isAttributeOnlyPattern isNameClassElement matchAttributePattern matchAttributePatterns matchAttributePatternSet matchConsume matchContentPattern matchListTokens matchNameClass matchPattern matchSequence parseImplicitGroupChildren parseNameClass parseNameClassElement parseRelaxNg parseRelaxNgPattern resolveIfRef resolveRefs splitTokens textValue validateData validateRelaxNgDocument
Types 7
Relax NG pattern kind.
ELEMENTElement pattern.
EMPTYEmpty pattern.
ATTRIBUTEAttribute pattern.
TEXTText pattern.
DATADatatype pattern.
GROUPGroup (sequence) pattern.
CHOICEChoice pattern.
INTERLEAVEInterleave pattern.
OPTIONALOptional pattern.
ZERO_OR_MOREZero-or-more repetition.
ONE_OR_MOREOne-or-more repetition.
NOT_ALLOWEDNot-allowed pattern.
REFRef pattern (reference to a grammar definition).
MIXEDMixed pattern (interleave of text with child patterns).
LISTList pattern (whitespace-separated tokens).
VALUEValue pattern (literal value matching).
Relax NG name class kind.
NAMESimple name match.
ANY_NAMEAny-name wildcard with optional except.
NS_NAMENamespace-name wildcard with optional except.
CHOICEChoice of name classes.
structRelaxNgNameClass
Relax NG name class.
Fields
RelaxNgNameClassKind kindName class kind.string valueName for `NAME` kind, namespace URI for `NS_NAME` kind.RelaxNgNameClass[] alternativesChoice alternatives (for `CHOICE` kind).RelaxNgNameClass * exceptExcept name class (for `ANY_NAME` and `NS_NAME`). Heap-allocated to break self-reference.structRelaxNgPattern
Relax NG pattern.
Fields
RelaxNgPatternKind kindPattern kind.string nameName for `ELEMENT`, `ATTRIBUTE`, `DATA`, `VALUE`, `REF` patterns.RelaxNgPattern[] childrenChild patterns.RelaxNgNameClass nameClassName class for `ELEMENT` and `ATTRIBUTE` patterns.structRelaxNgGrammar
Relax NG grammar.
Fields
RelaxNgPattern rootRoot pattern.RelaxNgPattern[string] definitionsNamed definitions (for `ref` resolution).structRelaxNgValidationResult
Result of validating a document against a Relax NG grammar.
Fields
bool valid`true` if valid.string messageOptional error message if invalid.Functions 34
private fn
RelaxNgPattern[] parseImplicitGroupChildren(XmlElement parent, bool skipNameClass = false) @safefn
RelaxNgValidationResult validateRelaxNgDocument(XmlDocument doc, RelaxNgGrammar grammar) @safeValidates `doc` against `grammar`.private fn
bool matchPattern(RelaxNgPattern pattern, XmlElement el, out string message, Defs defs) @safeprivate fn
bool matchAttributePatterns(
RelaxNgPattern[] patterns,
XmlElement el,
out string message,
Defs defs) @safeprivate fn
bool matchAttributePatternSet(
RelaxNgPattern p,
XmlElement el,
out string message,
Defs defs) @safeprivate fn
void extractAttributes(
RelaxNgPattern p,
ref RelaxNgPattern[] attrs,
ref RelaxNgPattern[] content) @safeprivate fn
bool matchAttributePattern(RelaxNgPattern pattern, XmlElement el, out string message, Defs defs) @safeprivate fn
size_t[] matchSequence(RelaxNgPattern[] patterns, XmlElement[] children, size_t pos, Defs defs) @safeprivate fn
size_t[] matchConsume(RelaxNgPattern pattern, XmlElement[] children, size_t pos, Defs defs) @safeprivate fn
bool matchContentPattern(RelaxNgPattern pattern, XmlElement el, out string message, Defs defs) @safeprivate fn
bool matchListTokens(RelaxNgPattern[] patterns, string[] tokens, out string message) @safeVariables 1
private enumvar
RELAXNG_NS = "http://relaxng.org/ns/structure/1.0"