Re: FW: Jing & Trang errors when processing RNC grammar
Bob Foster <[email protected]> Tue, 27 Apr 2004 19:34:44 -0500
| Newsgroups | gmane.text.xml.relaxng.general |
|---|---|
| Message-ID | <[email protected]> |
This fix removes the occurrence of oneOrMore//group//attribute by
changing all the groups to choices. This certainly has pedagogic value
and works in the sense that it gets rid of the error message, but one
can't be sure it's what the author meant. Why is the platform attribute
optional and the name attribute not? Both are optional in the revised
version. It is possible the following would be a more faithful fix:
namespace rng = "http://relaxng.org/ns/structure/1.0"
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
start = element ConfigRoot { ConfigGroup* }
NamedElementAttributes =
attribute name { text },
attribute platform { text }?
StringValue = element StringValue { xsd:string }
IntValue = element IntValue { xsd:integer }
FloatValue = element FloatValue { xsd:float }
BooleanValue = element BooleanValue { xsd:boolean }
PrimitiveValue = (StringValue | IntValue | FloatValue | BooleanValue)
Map = element Map { (MapEntry)* }
MapEntry = element MapEntry { PrimitiveValue }
Array = element Array { (PrimitiveValue)* }
ConfigValue = ( PrimitiveValue | Map | Array )
ConfigGroupEntry = (ConfigGroup | ConfigValue)
ConfigGroup = element ConfigGroup {
ConfigGroupEntry*,
NamedElementAttributes
}
Bob
MURATA Makoto (FAMILY Given) wrote:
> This works.
>
> Cheers,
>
> Makoto
>
>
-------------------------------------------------------------------------------------
> namespace rng = "http://relaxng.org/ns/structure/1.0"
> datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
>
> start = element ConfigRoot { ConfigGroup* }
>
> NamedElementAttributes =
> attribute name { text } |
> attribute platform { text }?
>
> StringValue = element StringValue { xsd:string }
> IntValue = element IntValue { xsd:integer }
> FloatValue = element FloatValue { xsd:float }
> BooleanValue = element BooleanValue { xsd:boolean }
> PrimitiveValue = (StringValue | IntValue | FloatValue | BooleanValue)
>
> Map = element Map { (MapEntry)* }
> MapEntry = element MapEntry { PrimitiveValue }
> Array = element Array { (PrimitiveValue)* }
>
> ConfigValue = ( PrimitiveValue | Map | Array ) | NamedElementAttributes
>
> ConfigGroupEntry = (ConfigGroup | ConfigValue)
>
> ConfigGroup = element ConfigGroup {
> ConfigGroupEntry*
> }