specification icon indicating copy to clipboard operation
specification copied to clipboard

XML Schema HTML viewer generator script supports generating for one particular CDX version

Open Nicolas-Peiffer opened this issue 1 year ago • 0 comments

The XML Schema HTML viewer generator script docgen/xml/gen.sh supports generating only for one particular CycloneDX version, including the possibility of generating the HTML only for draft version of CycloneDX during dev time.

See also a similar PR for JSON: https://github.com/CycloneDX/specification/pull/507

Use Case

I want to propose new objects in the CycloneDX Specification. And for checking the XML XSD Schema, I like to locally use the HTML view to check the content of the XSD.

However, I found it not convenient that the script docgen/xml/gen.sh regenerate the HTML doc for every version of CycloneDX each time I run it when I only need the version I am working on.

Proposition

I modified the script docgen/xml/gen.sh to be able to run gen.sh only for a particular version of CycloneDX.

For example:

./gen.sh 1.6

But I also added a list DRAFT_CYCLONEDX_VERSIONS for when I am working on a draft proposition of CycloneDX spec. For example:

# I modify `docgen/xml/gen.sh` to add the name of my draft file
DRAFT_CYCLONEDX_VERSIONS=(my_cdx_dev_draft)

I create a JSON schema draft file schema/bom-my_cdx_dev_draft.xsd:

Then I run:

./gen.sh my_cdx_dev_draft

Which creates only the HTML for my_cdx_dev_draft

tree docgen/xml/
docgen/xml/
├── docs
│   └── 1.6
│       └── index.html
├── gen.sh
├── Saxon-HE-9.9.1-8.jar
└── xs3p.xsl

And in order not to disturb the way docgen/xml/gen.sh works now, running it without argument generates the HTML for all the CDX versions:

./gen.sh
ls -1 docgen/xml/docs/
1.0
1.1
1.2
1.3
1.4
1.5
1.6

I also added a small usage help message.

./gen.sh -h
Usage: Generate HTML XML Schema navigator for CyccloneDX
Usage: ./gen.sh <version> : runs only for <version>
       ./gen.sh           : loops over all valid and draft CycloneDX versions

Conclusion

There are probably other way to achieve this result. I think this one is the cheapest in terms of how the gen.sh script is modified.

Nicolas-Peiffer avatar Aug 29 '24 12:08 Nicolas-Peiffer