# description: "Eiffel Xace RelaxNG specification"
# system: "Gobo Eiffel Xace"
# copyright: "Copyright (c) 2003, Berend de Boer and others"
# license: "MIT License"
# date: "$Date$"
# revision: "$Revision$"
namespace xsd = "http://www.w3.org/2001/XMLSchema"
# An Xace file defines either a library or a system
start = library | system
# Definition for follows
library =
element library {
attribute name { text },
attribute prefix { text }?,
description,
(option | cluster | mount)+
}
# Definition for follows
system =
element system {
attribute name { text },
description,
# use if/unless flags to enable/disable just one
element root {
attribute class { text },
attribute creation { text }
}+,
(option | cluster | mount)+
}
# Elements used in both libraries and systems
description = element description { text }
cluster =
element cluster {
attribute name { text },
attribute prefix { text }?,
attribute relative { xsd:boolean }?,
attribute location { text }?,
ifUnless,
(option | cluster | class)*
}
class =
element class {
attribute name { text },
ifUnless,
(option | feature)*
}
feature =
element feature {
attribute name { text },
ifUnless,
option*
}
mount =
element mount {
attribute location { text },
ifUnless
}
option =
element option {
(attribute name { text },
attribute value { text })?,
ifUnless,
option*
}
# if and unless attributes can be used on most elements
ifUnless =
(attribute if { text }
| attribute unless { text })?