Repository navigation
Viewer and version comparison (from #2 and #3) - #4
Merged
Merged
Conversation
The web viewer reads XSD sets indexed by the core: dropped files and folders are indexed in a WebAssembly worker, bundles open by URL (?bundle=, &sources= for the source view), and the CLI serves the embedded viewer with a pre-built bundle and the source files. - Sidebar with virtualised lists of complex and simple types, global elements, groups and files, a namespace filter, and search over names and documentation. - Pages for complex types, elements (global and local), simple types, groups, attribute groups, attributes, identity constraints and files: derivation chain, effective content model with inherited rows grouped and foldable, attributes, facets and enumerations, where used, and the component's XSD cut from its file with linked type names. - UML-like class diagrams laid out by ELK in a worker (extension, restriction, composition with multiplicities, enumeration boxes), expandable, with depth/direction options, full screen and SVG, PNG, PlantUML and Mermaid export; content-model trees in the style of XML editors, expanded on demand; an overview map per namespace or folder. - Share links restore page, tab, diagram options, expanded boxes, open tree nodes and zoom; light and dark themes; a short manual. - core: expand() restores what the compact form leaves out; the wasm module exposes it for compact bundles. - Pages: an examples catalog with NeTEx only, cloned and pre-indexed at build time (scripts/build-examples.sh).
build-examples.sh fetches each schema set from its publisher's pinned URL (cached in tests/fixtures/downloads, restored by actions/cache in pages.yml), pre-indexes it with the CLI and writes a catalog entry with version and source link. An example whose download fails is left out with a warning. The example cards show the version and link to the source. Attribution and reuse terms (ERA, OASIS IPR Policy, W3C Document License) are in the README and third-party notices.
diff(old, new) matches global components by qualified name, falling back to kind and local name when the target namespace changed, and reports fine-grained changes with their impact (breaking, non-breaking, info), possible renames and summaries per kind, namespace and file. The CLI's diff command writes the diff as JSON, Markdown or HTML.
Two schema sets can be loaded side by side (two drop zones on the open page, or ?bundle=<new>&compare=<old>). The changes overview has counts per kind, namespace and file, a filterable list kept in the link and Markdown, HTML and JSON downloads; each changed component gets a page with both versions side by side. Diagrams and content trees mark added (+, green), removed (−, red, struck through) and changed (~, amber) boxes, lines and arrows, in both themes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Mathias · project thread
PRs #2 and #3 were merged into their stacked base branches (
xsd-modelandviewer-mvp) instead ofmain, so their changes never reachedmain. This PR brings them over: the same four commits rebased onto currentmain, with the already-merged step 1 commits dropped. The content matchesviewer-mvpexactly.serve(Viewer MVP: pages, diagrams, content trees and serve #2)Generated by Claude Code