38 top.topic = element topic { top.topic.attributes, top.topic.content } |
40 top.topic = element topic { top.topic.attributes, top.topic.content } |
39 |
41 |
40 top.topic.attributes = |
42 top.topic.attributes = |
41 topic.id.attribute |
43 topic.id.attribute |
42 & topic.type.attribute? |
44 & topic.type.attribute? |
|
45 & lang.attribute? |
43 topic.id.attribute = attribute xml:id { xsd:ID } |
46 topic.id.attribute = attribute xml:id { xsd:ID } |
44 topic.type.attribute = attribute type { xsd:NCName } |
47 topic.type.attribute = attribute type { xsd:NCName } |
45 |
48 |
46 top.topic.content = |
49 top.topic.content = |
47 top.head?, |
50 top.head?, |
109 attribute type { "ean" }, xsd:token {pattern = "\d{13}"} |
109 attribute type { "ean" }, xsd:token {pattern = "\d{13}"} |
110 } |
110 } |
111 |
111 |
112 identifier = identifier.uri | identifier.ean |
112 identifier = identifier.uri | identifier.ean |
113 |
113 |
114 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
115 |
|
116 language = element language { language.attributes } |
|
117 |
|
118 language.attributes = |
|
119 lang.attribute |
|
120 lang.attribute = attribute xml:lang { xsd:language } |
|
121 |
|
122 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
114 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
123 |
115 |
124 copyright = element copyright { copyright.content } |
116 copyright = element copyright { copyright.content } |
125 |
117 |
126 copyright.content = inlines |
118 copyright.content = inlines |
127 |
119 |
128 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
120 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
129 |
121 |
130 # ~~~~~~ author |
122 # ~~~~~~ contributors |
131 author = element author { author.content } |
123 contributors = element contributors { contributors.content } |
132 |
124 |
133 author.content = |
125 contributors.content = |
134 firstname?, |
126 contributor+ |
135 lastname, |
127 |
|
128 # ~~~~~~ contributor |
|
129 contributor = element contributor { contributor.content } |
|
130 |
|
131 contributor.content = |
|
132 (((firstname, secondname?)?, lastname) | label), |
|
133 address?, |
|
134 link?, |
136 role* |
135 role* |
137 |
136 |
138 # ~~~~~~ publisher |
137 # ~~~~~~ firstname, secondname, lastname, label |
139 publisher = element publisher { publisher.content } |
|
140 |
|
141 publisher.content = |
|
142 label, |
|
143 link? |
|
144 |
|
145 # ~~~~~~ firstname |
|
146 firstname = element firstname { firstname.content } |
138 firstname = element firstname { firstname.content } |
|
139 secondname = element secondname { secondname.content } |
|
140 lastname = element lastname { lastname.content } |
|
141 label = element label { label.content } |
147 |
142 |
148 firstname.content = inlines |
143 firstname.content = inlines |
149 |
144 secondname.content = inlines |
150 # ~~~~~~ lastname |
|
151 lastname = element lastname { lastname.content } |
|
152 |
|
153 lastname.content = inlines |
145 lastname.content = inlines |
|
146 label.content = inlines |
|
147 |
|
148 # ~~~~~~ address |
|
149 address = element address { address.content } |
|
150 |
|
151 address.content = inlines |
154 |
152 |
155 # ~~~~~~ role |
153 # ~~~~~~ role |
156 role = element role { role.attributes } |
154 role = element role { role.content } |
157 |
155 |
158 role.attributes = |
156 role.content = "author" | "illustrator" | "publisher" |
159 role.of.attribute |
|
160 role.of.attribute = attribute of { "author" | "illustrator" } |
|
161 |
|
162 # ~~~~~~ label |
|
163 label = element label { label.content } |
|
164 |
|
165 label.content = inlines |
|
166 |
157 |
167 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
158 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
168 |
159 |
169 place = element place { place.content } |
160 place = element place { place.content } |
170 |
161 |