[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: [relax-ng] trang instance input module
> About Examplotron, I plan to add some additional features to get to the
> 80/20 point (probably including simple types, control over attributes,
> mixed contents and interleave) and then "import" the RNG patterns in the
> Examplotron namespace for users who would like to stay with Examplotron
> for the remaining 20%.
This seems like a good approach to me. I think there should be a
bidirectional mapping between RNG and Examplotron: any RNG schema should be
straightforwardly transformable into Examplotron. By "importing" the RNG
patterns, you almost get this. I think the only missing thing would be the
ability to do annotation elements. One way to solve this would be to add
an eg:annotation element to Examplotron:
<eg:annotation>
<anyNonRelaxNGElement>...</>
<eg:annotation>
which would be transformed into RNG simply by removing the eg:annotation
attribute.
As for the 80%, I would want:
a) Control over whether an attribute is required or optional. One approach
would be to have 3 attributes: an inherited attribute saying whether
attributes are by default required or optional; an attribute that lists the
names of attributes that are optional for this element (when the default is
required); an attribute that lists the names of attributes that are
required for this element (when the default is optional).
b) Datatyping. This is crucial but I don't immediately see a good design.
It would be nice to be able to write:
<th align="left|center|right" valign="middle|top|bottom" colspan="Number"
rowspan="Number" abbr="Text">
...
</th>
and have it turn into:
element th {
attribute align { "left" | "center" | "right" }?,
attribute valign { "middle" | "top" | "bottom" }?,
attribute colspan { Number },
attribute rowspan { Number },
attribute abbr { Text }
...
}
On the other hand, in some cases it might be preferable to stick to a purer
example metaphor:
<th align="left" valign="middle" colspan="2" rowspan="2" abbr="any old
text">
...
</th>
But then you need some way to specify a mapping from example values into
datatypes, and that starts to get complicated for the user. One way might
be to point to a file containing a list of datatype definitions (ordered
from least general to most general), and you use the first one that matches
the example value. This would be hard to implement in pure XSLT though.
One thing I think is important if users are going to maintain there schemas
in Examplotron: I think they need be able to conveniently reference
definitions not just builtin datatypes.
James
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC