RelaxNG/publiset.rnc
changeset 288 e89c967167bb
parent 263 b6ac75b447ae
child 293 02671b229bdc
equal deleted inserted replaced
287:dba493c150dd 288:e89c967167bb
    59  & contributors?
    59  & contributors?
    60  & date?
    60  & date?
    61  & (source, source?)?
    61  & (source, source?)?
    62  & keywordset?
    62  & keywordset?
    63  & subjectset?
    63  & subjectset?
       
    64  & head.index*
    64  & abstract?
    65  & abstract?
    65  & cover?
    66  & cover?
    66 
    67 
    67 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    68 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ selection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    68 
    69 
   119 # ~~~~~~ division.head
   120 # ~~~~~~ division.head
   120 division.head = element head { division.head.content }
   121 division.head = element head { division.head.content }
   121 
   122 
   122 division.head.content =
   123 division.head.content =
   123    (title, shorttitle?, subtitle*)?
   124    (title, shorttitle?, subtitle*)?
       
   125  & head.index*
   124 
   126 
   125 
   127 
   126 # =============================================================================
   128 # =============================================================================
   127 #                                  FILE LEVEL
   129 #                                  FILE LEVEL
   128 # =============================================================================
   130 # =============================================================================
   189 
   191 
   190 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   192 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   191 
   193 
   192 copyright = element copyright { copyright.content }
   194 copyright = element copyright { copyright.content }
   193 
   195 
   194 copyright.content = inlines
   196 copyright.content = simple.inlines
   195 
   197 
   196 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   198 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ collection ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   197 
   199 
   198 collection = element collection { collection.content }
   200 collection = element collection { collection.content }
   199 
   201 
   200 collection.content = inlines
   202 collection.content = simple.inlines
   201 
   203 
   202 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   204 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   203 
   205 
   204 # ~~~~~~ contributors
   206 # ~~~~~~ contributors
   205 contributors = element contributors { contributors.content }
   207 contributors = element contributors { contributors.content }
   221 firstname = element firstname { firstname.content }
   223 firstname = element firstname { firstname.content }
   222 secondname = element secondname { secondname.content }
   224 secondname = element secondname { secondname.content }
   223 lastname = element lastname { lastname.content }
   225 lastname = element lastname { lastname.content }
   224 label = element label { label.content }
   226 label = element label { label.content }
   225 
   227 
   226 firstname.content = inlines
   228 firstname.content = simple.inlines
   227 secondname.content = inlines
   229 secondname.content = simple.inlines
   228 lastname.content = inlines
   230 lastname.content = simple.inlines
   229 label.content = inlines
   231 label.content = simple.inlines
   230 
   232 
   231 # ~~~~~~ address
   233 # ~~~~~~ address
   232 address = element address { address.content }
   234 address = element address { address.content }
   233 
   235 
   234 address.content = inlines
   236 address.content = simple.inlines
   235 
   237 
   236 # ~~~~~~ role
   238 # ~~~~~~ role
   237 role = element role { role.content }
   239 role = element role { role.content }
   238 
   240 
   239 role.content = "author" | "illustrator" | "publisher" | "packager"
   241 role.content = "author" | "illustrator" | "publisher" | "packager"
   275 keywordset.content = keyword+
   277 keywordset.content = keyword+
   276 
   278 
   277 # ~~~~~~ keyword
   279 # ~~~~~~ keyword
   278 keyword = element keyword { keyword.content }
   280 keyword = element keyword { keyword.content }
   279 
   281 
   280 keyword.content = mixed { sup*, sub* }
   282 keyword.content = simple.inlines
   281 
   283 
   282 # ~~~~~~ subjectset
   284 # ~~~~~~ subjectset
   283 subjectset = element subjectset { subjectset.content }
   285 subjectset = element subjectset { subjectset.content }
   284 
   286 
   285 subjectset.content = subject+
   287 subjectset.content = subject+
   286 
   288 
   287 # ~~~~~~ subject
   289 # ~~~~~~ subject
   288 subject = element subject { subject.content }
   290 subject = element subject { subject.content }
   289 
   291 
   290 subject.content = mixed { sup*, sub* }
   292 subject.content = simple.inlines
       
   293 
       
   294 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ index ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   295 
       
   296 # ~~~~~~ index
       
   297 head.index = element index { head.index.content }
       
   298 
       
   299 head.index.content =
       
   300    index.entry, index.entry?
       
   301 
       
   302 # ~~~~~~ index.entry
       
   303 index.entry = element entry { simple.inlines }
   291 
   304 
   292 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   305 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   293 
   306 
   294 abstract = element abstract { abstract.content }
   307 abstract = element abstract { abstract.content }
   295 
   308 
   304    cover.image
   317    cover.image
   305 
   318 
   306 cover.image = element image { cover.image.attributes }
   319 cover.image = element image { cover.image.attributes }
   307 
   320 
   308 cover.image.attributes =
   321 cover.image.attributes =
   309    cover.image.id.attribute
   322    media.id.attribute
   310 cover.image.id.attribute = attribute id { xsd:NMTOKEN }
   323 media.id.attribute = attribute id { xsd:NMTOKEN }
   311 
   324 
   312 
   325 
   313 # =============================================================================
   326 # =============================================================================
   314 #                                 INLINE LEVEL
   327 #                                 INLINE LEVEL
   315 # =============================================================================
   328 # =============================================================================
   316 
   329 
   317 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   330 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   318 
   331 
   319 inlines = mixed {
   332 simple.inlines = mixed {
   320    sup*
   333    sup*
   321  & sub*
   334  & sub*
   322  & date*
   335  & date*
   323  & name*
   336  & name*
       
   337 }
       
   338 
       
   339 inlines =
       
   340    simple.inlines
   324  & highlight*
   341  & highlight*
       
   342  & emphasis*
   325  & link*
   343  & link*
   326 }
       
   327 
   344 
   328 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   345 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   329 
   346 
   330 sup = element sup { inlines }
   347 sup = element sup { simple.inlines }
   331 
   348 
   332 sub = element sub { inlines }
   349 sub = element sub { inlines }
   333 
   350 
   334 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   351 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   335 
   352 
   357 
   374 
   358 highlight = element highlight { highlight.content }
   375 highlight = element highlight { highlight.content }
   359 
   376 
   360 highlight.content = inlines
   377 highlight.content = inlines
   361 
   378 
       
   379 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ emphasis ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   380 
       
   381 emphasis = element emphasis { emphasis.content }
       
   382 
       
   383 emphasis.content = inlines
       
   384 
   362 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   385 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   363 
   386 
   364 link = element link { link.attributes, link.content }
   387 link = element link { link.attributes, link.content }
   365 
   388 
   366 link.attributes =
   389 link.attributes =
   367    uri.attribute
   390    uri.attribute
   368 uri.attribute = attribute uri { xsd:anyURI }
   391 uri.attribute = attribute uri { xsd:anyURI }
   369 
   392 
   370 link.content = mixed { sup* & sub* & date* & name* & highlight* }
   393 link.content = simple.inlines
   371 
   394 
   372 
   395 
   373 # =============================================================================
   396 # =============================================================================
   374 #                               REMAP ATTRIBUTES
   397 #                               REMAP ATTRIBUTES
   375 # =============================================================================
   398 # =============================================================================