RelaxNG/publidoc.rnc
changeset 38 3c8b406be906
parent 37 83b7ec3c3132
child 39 7faa356bad3e
equal deleted inserted replaced
37:83b7ec3c3132 38:3c8b406be906
    95 
    95 
    96 title.content = inlines
    96 title.content = inlines
    97 
    97 
    98 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    98 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    99 
    99 
   100 identifier = element identifier { identifier.content, identifier.attributes }
   100 identifier.uri = element identifier {
   101 
   101    attribute type { "uri" }, xsd:anyURI
   102 identifier.attributes =
   102 }
   103    class.attribute
   103 
   104 class.attribute = attribute class { "uri" | "ean" }
   104 identifier.ean = element identifier {
   105 
   105    attribute type { "ean" }, xsd:token {pattern = "\d{13}"}
   106 identifier.content =  xsd:anyURI | xsd:NMTOKEN
   106 }
       
   107 
       
   108 identifier = identifier.uri | identifier.ean
   107 
   109 
   108 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   110 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   109 
   111 
   110 language = element language { language.attributes }
   112 language = element language { language.attributes }
   111 
   113 
   142 # ~~~~~~ lastname
   144 # ~~~~~~ lastname
   143 lastname = element lastname { lastname.content }
   145 lastname = element lastname { lastname.content }
   144 
   146 
   145 lastname.content = inlines
   147 lastname.content = inlines
   146 
   148 
   147 # ~~~~~~ label
       
   148 label = element label { label.content }
       
   149 
       
   150 label.content = inlines
       
   151 
       
   152 # ~~~~~~ role
   149 # ~~~~~~ role
   153 role = element role { role.attributes }
   150 role = element role { role.attributes }
   154 
   151 
   155 role.attributes =
   152 role.attributes =
   156    role.of.attribute
   153    role.of.attribute
   157 role.of.attribute = attribute of { "author" | "illustrator" }
   154 role.of.attribute = attribute of { "author" | "illustrator" }
   158 
   155 
       
   156 # ~~~~~~ label
       
   157 label = element label { label.content }
       
   158 
       
   159 label.content = inlines
       
   160 
   159 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   161 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   160 
   162 
   161 place = element place { place.content }
   163 place = element place { place.content }
   162 
   164 
   163 place.content = inlines
   165 place.content = inlines
   164 
   166 
   165 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   167 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   166 
   168 
   167 # ~~~~~~ source
   169 # ~~~~~~ source
   168 source = element source {
   170 source = element source {
   169    source.attributes,
       
   170    (  (attribute type { "book" }, source.content.book)
   171    (  (attribute type { "book" }, source.content.book)
   171     | (attribute type { "file" })),
   172     | (attribute type { "file" }, source.content.file)),
   172    source.content
   173    source.content
   173 }
   174 }
   174 
   175 
   175 source.attributes =
       
   176    source.id.attribute
       
   177 source.id.attribute = attribute id { xsd:NMTOKEN }
       
   178 
       
   179 source.content.book =
   176 source.content.book =
   180    title,
   177    identifier.ean,
       
   178    title?,
   181    pagenumber*
   179    pagenumber*
       
   180 source.content.file =
       
   181    identifier.uri
   182 source.content =
   182 source.content =
   183    annotation*
   183    annotation*
   184 
   184 
   185 # ~~~~~~ pagenumber
   185 # ~~~~~~ pagenumber
   186 pagenumber = element pagenumber { pagenumber.attributes }
   186 pagenumber = element pagenumber { pagenumber.attributes }