Skip to content

Vendor W3C MathML 4 grammar, rework metanorma-mathml wrapper (MathML 3 → 4) #39

Description

@opoudjis

Refs metanorma/metanorma#585

Child of the MathML 3 → 4 migration: swap the vendored grammar at the source of truth.

Scope

  • Vendor the W3C MathML 4 RelaxNG Compact grammar (https://www.w3.org/Math/RelaxNG/mathml4/mathml4.rnc, mathml4-presentation.rnc, mathml4-content.rnc, mathml4-strict-content.rnc; generated from https://github.com/w3c/mathml-schema) into grammars/mathml/, replacing mathml3*.rnc. Pin to a dated draft snapshot and record provenance (source URL, retrieval date, licence, spec status) in grammars/mathml/README.adoc — MathML 4 is a Working Draft nearing CR; re-sync at CR and at REC.
  • Rework the wrapper grammars/mathml/metanorma-mathml.rnc: include "mathml4.rnc"; re-apply the data-metanorma-numberformat augmentation on mn; re-apply the foreign-markup bans (annotation-xml &= notAllowed, anyElement &= notAllowed) — re-audit both against MathML 4's restructured content/annotation model; the combine-form encoding exists for libxml2 compatibility and must be preserved.
  • Update basicdoc.rnc:1074 external reference if filenames change; update the README statement that "v4 is not yet officially published".
  • Confirm jing/libxml2 compatibility of the compiled grammar, including whether the xsd:ID collision that currently forces id_check: false in metanorma-standoc (schema.rb) behaves the same under the v4 grammar.

Non-goals

  • No dual-version validation: the schema validates exactly one MathML model (MathML 4 full — not MathML Core, which drops Content MathML).
  • No v3→v4 ingestion transform here (design position recorded on the umbrella).

Downstream compile/propagation is metanorma/metanorma-standoc#1212.

🤖

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

Status
✅ Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions