RelaxNG/publidoc.rnc
changeset 17 ca367d4d080b
parent 13 846ec40a5b2d
child 18 e448c6a000e5
equal deleted inserted replaced
15:341a2845bc0b 17:ca367d4d080b
   214 
   214 
   215 # =============================================================================
   215 # =============================================================================
   216 #                                 Block level
   216 #                                 Block level
   217 # =============================================================================
   217 # =============================================================================
   218 
   218 
   219 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ blocks ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   219 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   220 
   220 
   221 block = (parag | \list | speech | media)
   221 block = (parag | \list | table | speech | media)
   222 
   222 
   223 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ parag ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   223 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ parag ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   224 
   224 
   225 parag = element parag { parag.content }
   225 parag = element parag { parag.content }
   226 
   226 
   227 parag.content =
   227 parag.content =
   228    inlines
   228    inlines
   229  & link*
   229  & link*
   230 
   230 
   231 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   231 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   232 
   232 
   233 # ~~~~~~ list
   233 # ~~~~~~ list
   234 \list = element list { \list.content }
   234 \list = element list { \list.content }
   235 
   235 
   236 \list.content =
   236 \list.content =
   253 # ~~~~~~ label
   253 # ~~~~~~ label
   254 label = element label { label.content }
   254 label = element label { label.content }
   255 
   255 
   256 label.content = inlines
   256 label.content = inlines
   257 
   257 
       
   258 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
   259 
       
   260 table = element table { table.content }
       
   261 
       
   262 table.content =
       
   263    title?,
       
   264    tgroup+,
       
   265    caption?
       
   266 
       
   267 # ~~~~~~ tgroup
       
   268 tgroup = element tgroup { tgroup.attributes, tgroup.content }
       
   269 
       
   270 tgroup.content =
       
   271    thead?,
       
   272    tfoot?,
       
   273    tbody
       
   274 
       
   275 tgroup.attributes =
       
   276    cols.attribute
       
   277  & align.attribute?
       
   278  & colsep.attribute?
       
   279  & rowsep.attribute?
       
   280 cols.attribute = attribute cols { xsd:positiveInteger }
       
   281 align.attribute = attribute align { "left"  |  "right"  | "center" | "justify" }
       
   282 colsep.attribute = attribute colsep { "0" | "1" }
       
   283 rowsep.attribute = attribute rowsep { "0" | "1" }
       
   284 
       
   285 # ~~~~~~ thead, tfoot, tbody
       
   286 thead = element thead { thead.content }
       
   287 tfoot = element tfoot { tfoot.content }
       
   288 tbody = element tbody { tbody.content }
       
   289 
       
   290 thead.content =
       
   291    row+
       
   292 tfoot.content =
       
   293    row+
       
   294 tbody.content =
       
   295    row+
       
   296 
       
   297 # ~~~~~~ row
       
   298 row = element row { row.attribute, row.content }
       
   299 
       
   300 row.attribute =
       
   301    valign.attribute?
       
   302 valign.attribute = attribute valign { "top" | "middle" | "bottom" }
       
   303 
       
   304 row.content =
       
   305   entry+
       
   306 
       
   307 # ~~~~~~ entry
       
   308 entry = element entry { entry.content }
       
   309 
       
   310 entry.content =
       
   311    inlines
       
   312  | parag+
       
   313 
       
   314 # ~~~~~~ caption
       
   315 caption = element caption { caption.content }
       
   316 
       
   317 caption.content =
       
   318    parag+
       
   319 
   258 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   320 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   259 
   321 
   260 # ~~~~~~ speech
   322 # ~~~~~~ speech
   261 speech = element speech { speech.content }
   323 speech = element speech { speech.content }
   262 
   324 
   280 # ~~~~~~ media
   342 # ~~~~~~ media
   281 media = element media { media.content }
   343 media = element media { media.content }
   282 
   344 
   283 media.content =
   345 media.content =
   284    image+,
   346    image+,
   285    media.caption?
   347    caption?
   286 
       
   287 media.id.attribute = attribute id { xsd:NMTOKEN }
       
   288 
   348 
   289 # ~~~~~~ image
   349 # ~~~~~~ image
   290 image = element image { image.attributes, image.content }
   350 image = element image { image.attributes, image.content }
   291 
   351 
   292 image.attributes =
   352 image.attributes =
   293    media.id.attribute
   353    media.id.attribute
       
   354 media.id.attribute = attribute id { xsd:NMTOKEN }
   294 
   355 
   295 image.content =
   356 image.content =
   296    copyright?
   357    copyright?
   297 
       
   298 # ~~~~~~ caption
       
   299 media.caption = element caption { media.caption.content }
       
   300 
       
   301 media.caption.content =
       
   302    parag+
       
   303 
   358 
   304 # ~~~~~~ copyright
   359 # ~~~~~~ copyright
   305 copyright = element copyright { copyright.content }
   360 copyright = element copyright { copyright.content }
   306 
   361 
   307 copyright.content = inlines
   362 copyright.content = inlines
   379 note.attributes =
   434 note.attributes =
   380    note.label.attribute?
   435    note.label.attribute?
   381 note.label.attribute = attribute label { text }
   436 note.label.attribute = attribute label { text }
   382 
   437 
   383 note.content =
   438 note.content =
   384    parag+
   439    inlines
       
   440  | parag+
   385 
   441 
   386 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   442 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   387 
   443 
   388 foreign = element foreign { foreign.attributes, foreign.content }
   444 foreign = element foreign { foreign.attributes, foreign.content }
   389 
   445