compact-summary.rng 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns:d="http://dyomedea.com/ns/id">
  3. <define name="topLevel" d:id="ch16-top-level">
  4. <zeroOrMore>
  5. <ref name="decl"/>
  6. </zeroOrMore>
  7. <choice>
  8. <ref name="pattern"/>
  9. <zeroOrMore>
  10. <ref name="grammarContent"/>
  11. </zeroOrMore>
  12. </choice>
  13. </define>
  14. <define name="decl" d:id="ch16-decl">
  15. <choice>
  16. <group d:id="ch16-namespace">
  17. <value>namespace</value>
  18. <ref name="identifierOrKeyword"/>
  19. <value>=</value>
  20. <ref name="namespaceURILiteral"/>
  21. </group>
  22. <group d:id="ch16-default-namespace">
  23. <value>default</value>
  24. <value>namespace</value>
  25. <optional>
  26. <ref name="identifierOrKeyword"/>
  27. </optional>
  28. <value>=</value>
  29. <ref name="namespaceURILiteral"/>
  30. </group>
  31. <group d:id="ch16-datatypes">
  32. <value>datatypes</value>
  33. <ref name="identifierOrKeyword"/>
  34. <value>=</value>
  35. <ref name="literal"/>
  36. </group>
  37. </choice>
  38. </define>
  39. <define name="pattern" d:id="ch16-pattern">
  40. <choice>
  41. <group d:id="ch15-element">
  42. <value>element</value>
  43. <ref name="nameClass"/>
  44. <value>{</value>
  45. <ref name="pattern"/>
  46. <value>}</value>
  47. </group>
  48. <group d:id="ch15-attribute">
  49. <value>attribute</value>
  50. <ref name="nameClass"/>
  51. <value>{</value>
  52. <ref name="pattern"/>
  53. <value>}</value>
  54. </group>
  55. <group d:id="ch15-group">
  56. <ref name="pattern"/>
  57. <oneOrMore>
  58. <value>,</value>
  59. <ref name="pattern"/>
  60. </oneOrMore>
  61. </group>
  62. <group d:id="ch15-interleave">
  63. <ref name="pattern"/>
  64. <oneOrMore>
  65. <value>&amp;</value>
  66. <ref name="pattern"/>
  67. </oneOrMore>
  68. </group>
  69. <group d:id="ch15-choice1">
  70. <ref name="pattern"/>
  71. <oneOrMore>
  72. <value>|</value>
  73. <ref name="pattern"/>
  74. </oneOrMore>
  75. </group>
  76. <group d:id="ch15-optional">
  77. <ref name="pattern"/>
  78. <value>?</value>
  79. </group>
  80. <group d:id="ch15-zeroOrMore">
  81. <ref name="pattern"/>
  82. <value>*</value>
  83. </group>
  84. <group d:id="ch15-oneOrMore">
  85. <ref name="pattern"/>
  86. <value>+</value>
  87. </group>
  88. <group d:id="ch15-list">
  89. <value>list</value>
  90. <value>{</value>
  91. <ref name="pattern"/>
  92. <value>}</value>
  93. </group>
  94. <group d:id="ch15-mixed">
  95. <value>mixed</value>
  96. <value>{</value>
  97. <ref name="pattern"/>
  98. <value>}</value>
  99. </group>
  100. <ref name="identifier"/>
  101. <group d:id="ch15-parentRef">
  102. <value>parent</value>
  103. <ref name="identifier"/>
  104. </group>
  105. <value d:id="ch15-empty">empty</value>
  106. <value d:id="ch15-text">text</value>
  107. <group d:id="ch15-value">
  108. <optional>
  109. <ref name="datatypeName"/>
  110. </optional>
  111. <ref name="literal"/>
  112. </group>
  113. <group d:id="ch15-data">
  114. <ref name="datatypeName"/>
  115. <optional>
  116. <value>{</value>
  117. <zeroOrMore>
  118. <ref name="param"/>
  119. </zeroOrMore>
  120. <value>}</value>
  121. </optional>
  122. <optional>
  123. <ref name="exceptPattern"/>
  124. </optional>
  125. </group>
  126. <value d:id="ch15-notAllowed">notAllowed</value>
  127. <group d:id="ch15-externalRef">
  128. <value>external</value>
  129. <ref name="literal"/>
  130. <optional>
  131. <ref name="inherit"/>
  132. </optional>
  133. </group>
  134. <group d:id="ch15-grammar">
  135. <value>grammar</value>
  136. <value>{</value>
  137. <zeroOrMore>
  138. <ref name="grammarContent"/>
  139. </zeroOrMore>
  140. <value>}</value>
  141. </group>
  142. <group d:id="ch16-parenthesis">
  143. <value>(</value>
  144. <ref name="pattern"/>
  145. <value>)</value>
  146. </group>
  147. </choice>
  148. </define>
  149. <define name="param" d:id="ch15-param">
  150. <ref name="identifierOrKeyword"/>
  151. <value>=</value>
  152. <ref name="literal"/>
  153. </define>
  154. <define name="exceptPattern" d:id="ch15-except1">
  155. <value>-</value>
  156. <ref name="pattern"/>
  157. </define>
  158. <define name="grammarContent" d:id="ch16-grammarContent">
  159. <choice>
  160. <ref name="start"/>
  161. <ref name="define"/>
  162. <group d:id="ch15-div1">
  163. <value>div</value>
  164. <value>{</value>
  165. <zeroOrMore>
  166. <ref name="grammarContent"/>
  167. </zeroOrMore>
  168. <value>}</value>
  169. </group>
  170. <group d:id="ch15-include">
  171. <value>include</value>
  172. <ref name="literal"/>
  173. <optional>
  174. <ref name="inherit"/>
  175. </optional>
  176. <optional>
  177. <value>{</value>
  178. <zeroOrMore>
  179. <ref name="includeContent"/>
  180. </zeroOrMore>
  181. <value>}</value>
  182. </optional>
  183. </group>
  184. </choice>
  185. </define>
  186. <define name="includeContent" d:id="ch16-includeContent">
  187. <choice>
  188. <ref name="define"/>
  189. <ref name="start"/>
  190. <group>
  191. <value>div</value>
  192. <value>{</value>
  193. <zeroOrMore>
  194. <ref name="includeContent"/>
  195. </zeroOrMore>
  196. <value>}</value>
  197. </group>
  198. </choice>
  199. </define>
  200. <define name="start" d:id="ch15-start">
  201. <value>start</value>
  202. <ref name="assignMethod"/>
  203. <ref name="pattern"/>
  204. </define>
  205. <define name="define" d:id="ch15-define">
  206. <ref name="identifier"/>
  207. <ref name="assignMethod"/>
  208. <ref name="pattern"/>
  209. </define>
  210. <define name="assignMethod" d:id="ch16-assignMethod">
  211. <choice>
  212. <value>=</value>
  213. <value>|=</value>
  214. <value>&amp;=</value>
  215. </choice>
  216. </define>
  217. <define name="nameClass" d:id="ch16-nameClass">
  218. <choice>
  219. <ref name="name"/>
  220. <group d:id="ch15-nsName">
  221. <data type="NCName"/>
  222. <value>:*</value>
  223. <optional>
  224. <ref name="exceptNameClass"/>
  225. </optional>
  226. </group>
  227. <group d:id="ch15-anyName">
  228. <value>*</value>
  229. <optional>
  230. <ref name="exceptNameClass"/>
  231. </optional>
  232. </group>
  233. <group d:id="ch15-choice2">
  234. <ref name="nameClass"/>
  235. <value>|</value>
  236. <ref name="nameClass"/>
  237. </group>
  238. <group d:id="ch16-parenthesis-nc">
  239. <value>(</value>
  240. <ref name="nameClass"/>
  241. <value>)</value>
  242. </group>
  243. </choice>
  244. </define>
  245. <define name="name" d:id="ch16-name">
  246. <choice>
  247. <ref name="identifierOrKeyword"/>
  248. <ref name="CName"/>
  249. </choice>
  250. </define>
  251. <define name="exceptNameClass" d:id="ch15-except2">
  252. <value>-</value>
  253. <ref name="nameClass"/>
  254. </define>
  255. <define name="datatypeName" d:id="ch16-datatypeName">
  256. <choice>
  257. <ref name="CName"/>
  258. <value>string</value>
  259. <value>token</value>
  260. </choice>
  261. </define>
  262. <define name="namespaceURILiteral" d:id="namespaceURILiteral">
  263. <choice>
  264. <ref name="literal"/>
  265. <value>inherit</value>
  266. </choice>
  267. </define>
  268. <define name="inherit" d:id="inherit">
  269. <value>inherit</value>
  270. <value>=</value>
  271. <ref name="identifierOrKeyword"/>
  272. </define>
  273. <define name="identifierOrKeyword" d:id="identifierOrKeyword">
  274. <choice>
  275. <ref name="identifier"/>
  276. <ref name="keyword"/>
  277. </choice>
  278. </define>
  279. <define name="identifier" d:id="identifier">
  280. <choice>
  281. <data type="NCName">
  282. <except>
  283. <ref name="keyword"/>
  284. </except>
  285. </data>
  286. <ref name="quotedIdentifier"/>
  287. </choice>
  288. </define>
  289. <define name="quotedIdentifier" d:id="quotedIdentifier">
  290. <value>\</value>
  291. <data type="NCName"/>
  292. </define>
  293. <define name="CName" d:id="CName">
  294. <data type="NCName"/>
  295. <value>:</value>
  296. <data type="NCName"/>
  297. </define>
  298. <define name="literal" d:id="literal">
  299. <ref name="literalSegment"/>
  300. <oneOrMore>
  301. <value>~</value>
  302. <ref name="literalSegment"/>
  303. </oneOrMore>
  304. </define>
  305. <define name="literalSegment" d:id="literalSegment">
  306. <choice>
  307. <group d:id="literalSegmentDoubleQuote">
  308. <value>"</value>
  309. <zeroOrMore>
  310. <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
  311. <except>
  312. <value>"</value>
  313. <data type="newline" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes"/>
  314. </except>
  315. </data>
  316. </zeroOrMore>
  317. <value>"</value>
  318. </group>
  319. <group d:id="literalSegmentSimpleQuote">
  320. <value>'</value>
  321. <zeroOrMore>
  322. <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
  323. <except>
  324. <value>'</value>
  325. <data type="newline" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes"/>
  326. </except>
  327. </data>
  328. </zeroOrMore>
  329. <value>'</value>
  330. </group>
  331. <group d:id="literalSegmentPythonicDouble">
  332. <value>"""</value>
  333. <zeroOrMore>
  334. <optional>
  335. <value>"</value>
  336. </optional>
  337. <optional>
  338. <value>"</value>
  339. </optional>
  340. <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
  341. <except>
  342. <value>"</value>
  343. </except>
  344. </data>
  345. </zeroOrMore>
  346. <value>"""</value>
  347. </group>
  348. <group d:id="literalSegmentPythonicSimple">
  349. <value>'''</value>
  350. <zeroOrMore>
  351. <optional>
  352. <value>'</value>
  353. </optional>
  354. <optional>
  355. <value>'</value>
  356. </optional>
  357. <data type="Char" datatypeLibrary="http://www.thaiopensource.com/relaxng/compact/datatypes">
  358. <except>
  359. <value>'</value>
  360. </except>
  361. </data>
  362. </zeroOrMore>
  363. <value>'''</value>
  364. </group>
  365. </choice>
  366. </define>
  367. <define name="keyword" d:id="keyword">
  368. <choice>
  369. <value>attribute</value>
  370. <value>default</value>
  371. <value>datatypes</value>
  372. <value>div</value>
  373. <value>element</value>
  374. <value>empty</value>
  375. <value>external</value>
  376. <value>grammar</value>
  377. <value>include</value>
  378. <value>inherit</value>
  379. <value>list</value>
  380. <value>mixed</value>
  381. <value>namespace</value>
  382. <value>notAllowed</value>
  383. <value>parent</value>
  384. <value>start</value>
  385. <value>string</value>
  386. <value>text</value>
  387. <value>token</value>
  388. </choice>
  389. </define>
  390. </grammar>