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 } |