RelaxNG/publiset.rnc
changeset 189 951f1a25efc5
parent 181 cc8a32283e9d
child 215 c9959ed4ba48
equal deleted inserted replaced
188:b9fea8bd2412 189:951f1a25efc5
    51 composition.head.attributes =
    51 composition.head.attributes =
    52    remap.attributes
    52    remap.attributes
    53 
    53 
    54 composition.head.content =
    54 composition.head.content =
    55    (title, shorttitle?, subtitle?)?
    55    (title, shorttitle?, subtitle?)?
    56  & identifier*
    56  & (identifier, identifier?)?
    57  & copyright*
    57  & copyright*
    58  & collection?
    58  & collection?
    59  & contributors?
    59  & contributors?
       
    60  & date?
    60  & keywordset?
    61  & keywordset?
       
    62  & subjectset?
    61  & abstract?
    63  & abstract?
    62  & cover?
    64  & cover?
    63 
    65 
    64 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    66 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    65 
    67 
   222 # ~~~~~~ role
   224 # ~~~~~~ role
   223 role = element role { role.content }
   225 role = element role { role.content }
   224 
   226 
   225 role.content = "author" | "illustrator" | "publisher" | "packager"
   227 role.content = "author" | "illustrator" | "publisher" | "packager"
   226 
   228 
   227 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   229 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword & subject ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   228 
   230 
   229 # ~~~~~~ keywordset
   231 # ~~~~~~ keywordset
   230 keywordset = element keywordset { keywordset.content }
   232 keywordset = element keywordset { keywordset.content }
   231 
   233 
   232 keywordset.content = keyword+
   234 keywordset.content = keyword+
   233 
   235 
   234 # ~~~~~~ keyword
   236 # ~~~~~~ keyword
   235 keyword = element keyword { keyword.content }
   237 keyword = element keyword { keyword.content }
   236 
   238 
   237 keyword.content = mixed { sup*, sub* }
   239 keyword.content = mixed { sup*, sub* }
       
   240 
       
   241 # ~~~~~~ subjectset
       
   242 subjectset = element subjectset { subjectset.content }
       
   243 
       
   244 subjectset.content = subject+
       
   245 
       
   246 # ~~~~~~ subject
       
   247 subject = element subject { subject.content }
       
   248 
       
   249 subject.content = xsd:NMTOKEN
   238 
   250 
   239 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   251 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   240 
   252 
   241 abstract = element abstract { abstract.content }
   253 abstract = element abstract { abstract.content }
   242 
   254 
   264 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   276 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   265 
   277 
   266 inlines = mixed {
   278 inlines = mixed {
   267    sup*
   279    sup*
   268  & sub*
   280  & sub*
       
   281  & date*
   269  & name*
   282  & name*
   270  & highlight*
   283  & highlight*
       
   284  & link*
   271 }
   285 }
   272 
   286 
   273 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   287 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   274 
   288 
   275 sup = element sup { inlines }
   289 sup = element sup { inlines }
   276 
   290 
   277 sub = element sub { inlines }
   291 sub = element sub { inlines }
       
   292 
       
   293 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   294 
       
   295 date = element date { date.attributes, date.content }
       
   296 
       
   297 date.attributes =
       
   298    date.value.attribute
       
   299 date.value.attribute = attribute value { xsd:date | xsd:gYearMonth | xsd:gYear }
       
   300 
       
   301 date.content = mixed { sup* }
   278 
   302 
   279 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   303 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   280 
   304 
   281 name = element name { name.attributes, name.content }
   305 name = element name { name.attributes, name.content }
   282 
   306 
   283 name.attributes =
   307 name.attributes =
   284    name.of.attribute?
   308    name.of.attribute?
   285 name.of.attribute = attribute of
   309 name.of.attribute = attribute of
   286    { "person" | "company" | "book" | "newspaper" | "party" }
   310    { "person" | "company" | "book" | "newspaper" | "party" | "painting" }
   287 
   311 
   288 name.content = inlines
   312 name.content = inlines
   289 
   313 
   290 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   314 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   291 
   315