[relaxng-user] Modules, start patterns, driver files,
trang - sanity check
Sean McGrath
sean.mcgrath at propylon.com
Mon Feb 23 13:29:39 ICT 2004
All,
I'm soliciting advise on how best to implement Relax modules that are both
usable "standalone" and usable as modules in larger modules and larger
standalone schemas.
My first thought was to give each module its own start pattern. So, lets
say I have modules A and B that I wish to use standalone and also as parts
of a bigger module AB.
1) I give each module a start pattern.
2) When I include a module in a larger module, I override its
start pattern
Example:
File A.rnc - a standalone schema and a module
A = element a { text }
start = A
File B.rnc - a standalone schema and a module
B = element b { text }
start = B
File AB.rnc - a standalone schema and a module. It includes two
sub-modules, A and B
include "a.rnc" { start = AB }
include "b.rnc" { start = AB }
AB = element ab { A , B }
start = AB
However, trang complains with this approach, when generating XSD's:
- multiple definitions of "#start" without "combine" attribute
If it is the case that I can only override the start pattern once per
schema, then I can switch to using driver schemas.
1) Do not put a start pattern into any module
2) Create a "driver" schema that includes the module and provides
a start pattern
Example:
File A.rnc - a module
A = element a { text }
File A_driver.rnc - driver file to make schema A work standalone
include "A.rnc"
start = A
File B.rnc - a module
B = element b { text }
File B_driver.rnc - driver file to make schema B work standalone
include "B.rnc"
start = B
File AB.rnc - a module that includes two sub-modules, A and B
include "a.rnc"
include "b.rnc"
AB = element ab { A , B }
File AB_driver.rnc - driver file to make schema AB work standalone
include "AB.rnc"
start = AB
Am I correct that the start patten can only be overridden once per schema?
Is the driver approach a good way to go or are there better alternatives?
regards,
Sean McGrath
http://seanmcgrath.blogspot.com
More information about the relaxng-user
mailing list