Add an XML ecosystem profile (XSD, RELAX NG, Schematron, XSLT)

Offen
#86 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
53/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python, xml
Bereich
testing, tooling

Rechercherichtung

Read the existing profile modules, tests/test_go.py, tests/support.py, and tests/test_ecosystem_contract.py to learn the registration and fixture conventions. Add project_validator/ecosystems/xml.py, register it in BUILT_IN, and add the XML fixture layout and profile tests. Done means the configured fixture passes applicable checks, the bare fixture passes none, snapshots are recorded, and the README “Applies to” column is updated.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Profile

Recognised by intent (#63): *.xsd, *.rng / *.rnc, *.sch, *.xsl / *.xslt, *.xspec. Supplies the schema practices from #85.

Practice Rule for this ecosystem
schema-declared XSDs declare a targetNamespace and elementFormDefault; instance documents name their schema (xsi:schemaLocation / xsi:noNamespaceSchemaLocation, or an <?xml-model?> processing instruction)
schema-validation CI runs xmllint --noout --schema / --relaxng, jing, or a Schematron processor (SchXslt)
schema-examples XSpec suites (*.xspec) for XSLT and Schematron, run in CI; for XSD / RELAX NG, valid and invalid example documents
tests-run XSpec runs in CI (xspec.sh, the XSpec Maven or Ant targets)
code-formatting xmllint --format checked in CI, or prettier with @prettier/plugin-xml

Notes

data-wellformed (#84) covers well-formedness. External DTDs and entities must never be fetched.

Definition of done

  • One profile module, project_validator/ecosystems/xml.py, registered in BUILT_IN. Nothing in project_validator/checks/ changes: a row marked later belongs to a check that does not exist yet and is recorded on that check's issue.
  • tests/fixtures/well_configured_xml passes every check that applies to it, and tests/fixtures/bare_xml passes none of the ecosystem's practices (tests/test_ecosystem_contract.py). Snapshots recorded with UPDATE_SNAPSHOTS=1.
  • A project layout in tests/support.py, profile tests like tests/test_go.py, and the README "Applies to" column (tests/test_documentation.py).
  • A practice with no good evidence for this ecosystem is left out (the check reports SKIP) rather than judged by weak evidence.
Vorherrschende Sprache
Python
Sterne
4
Forks
1
Ø Merge
10 Std. 41 Min.
Gemergte PRs (30 T.)
79

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus cpp-best-practices/project_validator

Alle Issues in cpp-best-practices/project_validator

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.