[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XML Schema newbie - are multiple unordered childrenoccurre
jcowan@r... wrote: >Max Chappell scripsit: > > > >>Taking the example you gave - >>You can't say if <ParentNode> has @flavour='B' Then only allow child >>elements of type <B>. >> >>Tall order I know, but something I come up against on a daily basis. >> >> > >Consider using RELAX NG, then, in which such things are easily accomplished >using fixed-value attributes and a choice. > > Or Schematron: <rule context="ParentNode[@flavour='B']"> <assert test="count(B) = count(*)"> A ParentNode with flavour attribute of B only can have children of type B </assert> </rule> Even RELAX NG, with enormous respect to it, only allows very simple, linear context constraints: it is a lot more idiomatic than WXS (allowing you to treat the element name and attribute values as the same kind of thing) but still all the current grammar systems share the same intrinsic shortcoming: there is no reason to expect that an arbitrary database will naturally form a tree that has a grammar that expresses all the relations. So grammars force you to use use some other layer (with different concepts) for the "tricky" (embarrassing?) relations: ID/IDREF, key/keyref, external links etc etc. If your data is such that you has occurrence constraints that cannot be expressed by XPaths using the ancestor, attribute and previous-sibling axes, then you should consider using some path-based schema language such as Schematron. Cheers Rick Jelliffe
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|