Project

xseed

0.0
The project is in a healthy, maintained state
Generate comprehensive XSD documentation with SVG diagrams (via xsdvi gem) and HTML reference (XS3P port)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Dependencies

Runtime

~> 1.16
~> 1.3
~> 1.0
 Project Readme

Xseed: Ruby XSD Documentation Generator

RubyGems Version License Build Parity Coverage

Purpose

Xseed provides comprehensive XSD documentation generation with a single command:

  • Automatic SVG generation - When generating HTML, xseed automatically creates SVG diagrams for all elements using the xsdvi gem

  • HTML documentation - Complete schema reference with embedded SVG diagrams (XS3P port)

  • Single-command workflow - One command generates everything: HTML + all SVG diagrams

Features

  • Single-command generation - xseed html automatically generates HTML documentation and all SVG diagrams

  • Integrated SVG diagrams - Uses xsdvi gem Ruby API to generate diagram for each element

  • Comprehensive HTML - Schema properties, component listings, type hierarchies, XML samples

  • Professional CLI - Thor-based with verbose mode and progress indicators

  • High performance - Generates complete documentation in milliseconds

  • Robust error handling - Graceful degradation with helpful messages

  • 21 complete features - All P0, P1, and P2 features implemented

Quick Start

# Install the gem (includes xsdvi for SVG generation)
gem install xseed

# Generate complete documentation (HTML + all SVG diagrams)
xseed html schema.xsd -o docs/index.html

# Result:
#   docs/index.html           (HTML with embedded SVG references)
#   docs/diagrams/*.svg       (SVG diagram for each element)

# View schema information
xseed info schema.xsd

# Display help
xseed help

Complete Workflow

Single-command integrated documentation

One command does everything - xseed automatically generates all SVG diagrams when creating HTML:

# This single command generates EVERYTHING:
xseed html schema.xsd -o docs/index.html

What it generates:

  • docs/index.html - Complete HTML documentation

  • docs/diagrams/*.svg - SVG diagram for EVERY element (auto-generated using xsdvi)

  • Proper <object> tag integration in HTML

That’s it! No need for separate SVG generation commands.

Example 1. Real-world example with UnitsML (54 elements)
$ xseed html unitsml-v1.0.xsd -o output/index.html --title "UnitsML Docs" --verbose

  → Creating HTML generator for: unitsml-v1.0.xsd
  → HTML generator initialized
  → Generating HTML documentation...
    ✓ Complete
✓ HTML documentation generated: output/index.html
  → Generation completed in 0.341s

# Generated files:
#   output/index.html               (752KB HTML)
#   output/diagrams/Unit.svg        (54 SVG files, one per element)
#   output/diagrams/Quantity.svg
#   output/diagrams/Prefix.svg
#   ... (and 51 more)

$ open output/index.html

The HTML automatically includes all 54 SVG diagrams with proper <object> tags.

</commands> * -o, --output PATH - Output HTML file path (required) * -t, --title TEXT - Custom documentation title * -d, --diagrams-dir DIR - Custom SVG directory name (default: "diagrams") * --css PATH - External CSS file URL * -v, --verbose - Show detailed progress * -f, --force - Overwrite without confirmation

import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } import@<interface> QPushButton{ {name}: {instruction} } /** * Define a QPushButton class * @class {class_name} * @burnsPanel {bool} * @order {number} * @classname {string} * @compName {string} * @instruction {string} * @defaultValues {any} * @interface {any} */ class ${currentSymbol}(${interface}) { :