OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

ubl message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]

Subject: Completed UBL NDR 2.1 XSD schema and CVA generation environment

Fellow UBL TC members,

I've completed the first draft of the XSD/CVA generator for UBL NDR 2.1. This reads a genericode serialization of the UBL NDR spreadsheets and generates documented and runtime XSD schemas and a CVA context/value association file

When thinking last week about an upcoming code list task at UN/CEFACT, I was reminded of arguments raised during a similar development process in the OASIS Code List Representation Technical Committee: that the TC should *not* be in the business of publishing running executable code in support of its standards. The two main arguments are:

 (1) - who is going to maintain the code if it breaks and the author
       is no longer on the committee?
 (2) - the TC should not be in competition with any organization that
       may wish to write code to fulfill the same requirements

One of the arguments for producing code was "but this is a reference implementation" and that was deemed insufficient to address the two concerns.

The case study is the CVA to Schematron conversion tool that I wrote, donated to OASIS, and then repatriated back to Crane because of the committee decision:


The same also happened for the presentation stylesheets at the same time:


With this in mind, I've posted the "Genericode to UBL NDR" environment as a free Crane resource with the invitation to the OASIS UBL TC to take it on as a committee resource if you wish (at which point I would then take it off my web site):


I think it is fully documented, but I hope TC members will recommend improvements to the documentation that I'm sure will help because I'm too close to the code to know if it is well documented. The demonstration environment is turnkey for both Unix and Windows environments, taking the UBL 2.1 PRD2 genericode file and recreating the UBL 2.1 PRD2 schemas and the schema-specific portion of the context/value association file.

The documentation will be updated when the UBL NDR 2.1 rules are written to include hyperlinked references into the UBL NDR 2.1 document.

The stylesheet is generalized so that other committees who work with their own UBL NDR spreadsheets can use it to create their own XSD and CVA files. One feature I added that I'll be recommending to NDR editors is to allow either "UBLName" or "ComponentName" as the title of the first spreadsheet column. That way we keep our legacy and other projects don't have a distracting use of the UBL abbreviation in their work.

The package includes a copy of the UBL 2.1 PRD2 genericode entities file:


... and you can create your own equivalent to the UBL 2.1 PRD2 schemas by running a single included batch file. It is a version of the batch file I'll be using when I create PRD3 schemas. Execution on my machine takes under 10 seconds to recreate the UBL 2.1 schemas and CVA file using the free Saxon http://saxon.sf.net Home Edition XSLT 2.0 processor.

The stylesheet has only 674 lines of code and 772 lines of documentation. The readme file is synthesized from the embedded stylesheet documentation so it includes documentation on both using and maintaining the stylesheet.

I'm not planning to announce minor revisions of this, but if you wish you can follow our RSS feed for free resources where notifications of updates are always posted (no doubt someone will suggest improvements):


I look forward to any feedback and recommendations.

. . . . . . . . . . . . Ken

Contact us for world-wide XML consulting and instructor-led training
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/o/
G. Ken Holman                   mailto:gkholman@CraneSoftwrights.com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]