So I'm trying to parse a schema that has the following in it:
property-attach = element attach {
element parameters {
fmttypeparam? &
encodingparam?
}?,
value-uri | value-binary
}
In order to get this to work with cxml-rng, I have to do the following:
property-attach = element attach {
element parameters {
fmttypeparam? &
encodingparam?
}?,
( value-uri | value-text )
}
Is the former invalid RNC or is cxml-rng's parser barfing where it shouldn't? A complete, minimal-ish example is shown below and attempting to parse it gives:
failed to parse compact syntax at char 552, file://+/Users/sly/projects/cl-vcard/foo.rnc:
Unexpected terminal CXML-RNG::|\|| (value CXML-RNG::|\||). Expected one of: (NIL
CXML-RNG::}
CXML-RNG::DOCUMENTATION-LINE
CXML-RNG::[
:INCLUDE
CXML-RNG::IDENTIFIER
:START
:DIV
CXML-RNG::|)|
CXML-RNG::CNAME
CXML-RNG::|,|)
[Condition of type CXML-RNG:RNG-ERROR]
Thanks,
Cyrus
# Hacked together from the RELAX NG Schema for iCalendar in XML
default namespace = "urn:ietf:params:xml:ns:icalendar-2.0-hack"
value-text = element text {
xsd:string
}
value-binary = element binary {
xsd:string
}
value-uri = element uri {
xsd:anyURI
}
encodingparam = element encoding {
element text {
"8BIT" |
"BASE64"
}
}
fmttypeparam = element fmttype {
value-text
}
property-attach = element attach {
element parameters {
fmttypeparam? &
encodingparam?
}?,
value-uri | value-text
}
start = element icalendar {
property-attach+
}