167 title.content = inlines |
167 title.content = inlines |
168 |
168 |
169 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
169 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
170 |
170 |
171 # ~~~~~~ identifier |
171 # ~~~~~~ identifier |
172 identifier = identifier.uri | identifier.ean |
172 identifier = element identifier { |
|
173 (attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"}) |
|
174 | (attribute type { "uri" }, for.attribute?, xsd:anyURI) |
|
175 } |
|
176 |
|
177 # ~~~~~~ identifier.ean |
|
178 identifier.ean = element identifier { |
|
179 attribute type { "ean" }, for.attribute?, xsd:token {pattern = "\d{13}"} |
|
180 } |
173 |
181 |
174 # ~~~~~~ identifier.uri |
182 # ~~~~~~ identifier.uri |
175 identifier.uri = element identifier { identifier.uri.attributes } |
183 identifier.uri = element identifier { |
176 |
184 attribute type { "uri" }, for.attribute?, xsd:anyURI |
177 identifier.uri.attributes = |
185 } |
178 type_uri.attribute |
|
179 & for.attribute? |
|
180 type_uri.attribute = attribute type { "uri" }, xsd:anyURI |
|
181 for.attribute = attribute for { xsd:NCName } |
|
182 |
|
183 # ~~~~~~ identifier.ean |
|
184 identifier.ean = element identifier { identifier.ean.attributes } |
|
185 |
|
186 identifier.ean.attributes = |
|
187 type_ean.attribute |
|
188 & for.attribute? |
|
189 type_ean.attribute = attribute type { "ean" }, xsd:token {pattern = "\d{13}"} |
|
190 |
186 |
191 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
187 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
192 |
188 |
193 copyright = element copyright { copyright.content } |
189 copyright = element copyright { copyright.content } |
194 |
190 |