@markuplint/html-spec 3.0.0-alpha.66 → 3.0.0-dev.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +8 -3
  2. package/index.json +817 -667
  3. package/package.json +8 -8
  4. package/src/spec-common.attributes.json +2 -2
  5. package/src/spec-common.contents.json +80 -1
  6. package/src/spec.a.json +2 -3
  7. package/src/spec.abbr.json +1 -1
  8. package/src/spec.address.json +1 -2
  9. package/src/spec.article.json +1 -1
  10. package/src/spec.aside.json +1 -1
  11. package/src/spec.audio.json +2 -4
  12. package/src/spec.b.json +1 -1
  13. package/src/spec.bdi.json +1 -1
  14. package/src/spec.bdo.json +1 -1
  15. package/src/spec.blockquote.json +1 -1
  16. package/src/spec.body.json +1 -1
  17. package/src/spec.br.json +1 -1
  18. package/src/spec.button.json +1 -2
  19. package/src/spec.canvas.json +1 -2
  20. package/src/spec.caption.json +1 -1
  21. package/src/spec.cite.json +1 -1
  22. package/src/spec.code.json +1 -1
  23. package/src/spec.data.json +1 -1
  24. package/src/spec.datalist.json +2 -2
  25. package/src/spec.dd.json +1 -1
  26. package/src/spec.del.json +1 -1
  27. package/src/spec.details.json +1 -1
  28. package/src/spec.dfn.json +1 -2
  29. package/src/spec.dialog.json +1 -1
  30. package/src/spec.div.json +4 -4
  31. package/src/spec.dl.json +10 -4
  32. package/src/spec.dt.json +1 -2
  33. package/src/spec.em.json +1 -1
  34. package/src/spec.fieldset.json +1 -1
  35. package/src/spec.figcaption.json +1 -1
  36. package/src/spec.figure.json +14 -3
  37. package/src/spec.footer.json +1 -2
  38. package/src/spec.form.json +1 -2
  39. package/src/spec.h1.json +1 -1
  40. package/src/spec.h2.json +1 -1
  41. package/src/spec.h3.json +1 -1
  42. package/src/spec.h4.json +1 -1
  43. package/src/spec.h5.json +1 -1
  44. package/src/spec.h6.json +1 -1
  45. package/src/spec.head.json +2 -4
  46. package/src/spec.header.json +1 -2
  47. package/src/spec.hgroup.json +19 -11
  48. package/src/spec.i.json +1 -1
  49. package/src/spec.iframe.json +1 -5
  50. package/src/spec.input.json +10 -10
  51. package/src/spec.ins.json +1 -1
  52. package/src/spec.kbd.json +1 -1
  53. package/src/spec.label.json +1 -2
  54. package/src/spec.legend.json +1 -1
  55. package/src/spec.li.json +1 -1
  56. package/src/spec.main.json +1 -1
  57. package/src/spec.map.json +1 -1
  58. package/src/spec.mark.json +1 -1
  59. package/src/spec.menu.json +1 -1
  60. package/src/spec.meter.json +2 -3
  61. package/src/spec.nav.json +1 -1
  62. package/src/spec.noscript.json +1 -1
  63. package/src/spec.object.json +1 -1
  64. package/src/spec.ol.json +1 -1
  65. package/src/spec.option.json +1 -1
  66. package/src/spec.output.json +1 -1
  67. package/src/spec.p.json +1 -1
  68. package/src/spec.picture.json +3 -3
  69. package/src/spec.portal.json +1 -1
  70. package/src/spec.pre.json +1 -1
  71. package/src/spec.progress.json +2 -3
  72. package/src/spec.q.json +1 -2
  73. package/src/spec.rp.json +1 -2
  74. package/src/spec.rt.json +1 -1
  75. package/src/spec.ruby.json +1 -2
  76. package/src/spec.s.json +1 -1
  77. package/src/spec.samp.json +1 -1
  78. package/src/spec.script.json +1 -1
  79. package/src/spec.section.json +1 -1
  80. package/src/spec.select.json +2 -2
  81. package/src/spec.slot.json +1 -1
  82. package/src/spec.small.json +1 -1
  83. package/src/spec.span.json +1 -1
  84. package/src/spec.strong.json +1 -1
  85. package/src/spec.sub.json +1 -1
  86. package/src/spec.summary.json +2 -2
  87. package/src/spec.sup.json +1 -1
  88. package/src/spec.svg_a.json +3 -4
  89. package/src/spec.svg_animate.json +1 -1
  90. package/src/spec.svg_animateMotion.json +3 -3
  91. package/src/spec.svg_animateTransform.json +1 -1
  92. package/src/spec.svg_circle.json +3 -3
  93. package/src/spec.svg_clipPath.json +8 -1
  94. package/src/spec.svg_defs.json +5 -5
  95. package/src/spec.svg_desc.json +1 -1
  96. package/src/spec.svg_discard.json +1 -1
  97. package/src/spec.svg_ellipse.json +3 -3
  98. package/src/spec.svg_feBlend.json +1 -1
  99. package/src/spec.svg_feColorMatrix.json +1 -1
  100. package/src/spec.svg_feComponentTransfer.json +1 -1
  101. package/src/spec.svg_feComposite.json +1 -1
  102. package/src/spec.svg_feConvolveMatrix.json +1 -1
  103. package/src/spec.svg_feDiffuseLighting.json +5 -5
  104. package/src/spec.svg_feDisplacementMap.json +1 -1
  105. package/src/spec.svg_feDistantLight.json +1 -1
  106. package/src/spec.svg_feDropShadow.json +1 -1
  107. package/src/spec.svg_feFlood.json +1 -1
  108. package/src/spec.svg_feFuncA.json +1 -1
  109. package/src/spec.svg_feFuncB.json +1 -1
  110. package/src/spec.svg_feFuncG.json +1 -1
  111. package/src/spec.svg_feFuncR.json +1 -1
  112. package/src/spec.svg_feGaussianBlur.json +1 -1
  113. package/src/spec.svg_feImage.json +1 -1
  114. package/src/spec.svg_feMerge.json +1 -1
  115. package/src/spec.svg_feMergeNode.json +1 -1
  116. package/src/spec.svg_feMorphology.json +1 -1
  117. package/src/spec.svg_feOffset.json +1 -1
  118. package/src/spec.svg_fePointLight.json +1 -1
  119. package/src/spec.svg_feSpecularLighting.json +5 -5
  120. package/src/spec.svg_feSpotLight.json +1 -1
  121. package/src/spec.svg_feTile.json +1 -1
  122. package/src/spec.svg_feTurbulence.json +3 -2
  123. package/src/spec.svg_filter.json +1 -1
  124. package/src/spec.svg_g.json +5 -5
  125. package/src/spec.svg_image.json +2 -2
  126. package/src/spec.svg_line.json +3 -3
  127. package/src/spec.svg_linearGradient.json +1 -1
  128. package/src/spec.svg_marker.json +5 -5
  129. package/src/spec.svg_mask.json +5 -5
  130. package/src/spec.svg_metadata.json +1 -1
  131. package/src/spec.svg_mpath.json +1 -1
  132. package/src/spec.svg_path.json +3 -3
  133. package/src/spec.svg_pattern.json +5 -5
  134. package/src/spec.svg_polygon.json +3 -3
  135. package/src/spec.svg_polyline.json +3 -3
  136. package/src/spec.svg_radialGradient.json +1 -1
  137. package/src/spec.svg_rect.json +3 -3
  138. package/src/spec.svg_script.json +1 -1
  139. package/src/spec.svg_set.json +1 -1
  140. package/src/spec.svg_svg.json +5 -5
  141. package/src/spec.svg_switch.json +2 -2
  142. package/src/spec.svg_symbol.json +5 -5
  143. package/src/spec.svg_text.json +4 -4
  144. package/src/spec.svg_textPath.json +2 -2
  145. package/src/spec.svg_title.json +1 -1
  146. package/src/spec.svg_tspan.json +2 -2
  147. package/src/spec.svg_use.json +2 -2
  148. package/src/spec.svg_view.json +1 -1
  149. package/src/spec.table.json +6 -6
  150. package/src/spec.td.json +4 -4
  151. package/src/spec.template.json +1 -5
  152. package/src/spec.th.json +7 -8
  153. package/src/spec.time.json +1 -1
  154. package/src/spec.tr.json +1 -1
  155. package/src/spec.u.json +1 -1
  156. package/src/spec.ul.json +1 -1
  157. package/src/spec.var.json +1 -1
  158. package/src/spec.video.json +2 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markuplint/html-spec",
3
- "version": "3.0.0-alpha.66+6cde1134",
3
+ "version": "3.0.0-dev.24+f55f5eff",
4
4
  "description": "A specification of HTML Living Standard for markuplint",
5
5
  "repository": "git@github.com:markuplint/markuplint.git",
6
6
  "author": "Yusuke Hirao <yusukehirao@me.com>",
@@ -16,17 +16,17 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/cheerio": "^0.22.31",
19
- "@types/cli-progress": "^3.9.2",
19
+ "@types/cli-progress": "^3.11.0",
20
20
  "@types/node-fetch": "2",
21
- "ajv": "^8.11.0",
22
- "cheerio": "^1.0.0-rc.10",
23
- "cli-progress": "^3.10.0",
24
- "fast-xml-parser": "^4.0.7",
21
+ "ajv": "^8.11.2",
22
+ "cheerio": "^1.0.0-rc.12",
23
+ "cli-progress": "^3.11.2",
24
+ "fast-xml-parser": "^4.0.12",
25
25
  "node-fetch": "2",
26
26
  "strip-json-comments": "3"
27
27
  },
28
28
  "dependencies": {
29
- "@markuplint/ml-spec": "3.0.0-alpha.82+6cde1134"
29
+ "@markuplint/ml-spec": "3.0.0-dev.24+f55f5eff"
30
30
  },
31
- "gitHead": "6cde113402758a8fdbd6a0fcf98e78efd2cdb778"
31
+ "gitHead": "f55f5eff289296feba26f20b0c085e0528c80ac4"
32
32
  }
@@ -159,7 +159,7 @@
159
159
  },
160
160
  // https://html.spec.whatwg.org/multipage/dom.html#classes
161
161
  "class": {
162
- "type": "<class-list>"
162
+ "type": "Any"
163
163
  },
164
164
  // https://html.spec.whatwg.org/multipage/dom.html#the-id-attribute
165
165
  "id": {
@@ -986,7 +986,7 @@
986
986
  },
987
987
  // https://svgwg.org/svg2-draft/styling.html#ClassAttribute
988
988
  "class": {
989
- "type": "<class-list>"
989
+ "type": "Any"
990
990
  },
991
991
  // https://svgwg.org/svg2-draft/styling.html#StyleAttribute
992
992
  "style": {
@@ -100,7 +100,8 @@
100
100
  "#text"
101
101
  ],
102
102
  "#sectioning": ["article", "aside", "nav", "section"],
103
- "#heading": ["h1", "h2", "h3", "h4", "h5", "h6", "hgroup"],
103
+ // https://html.spec.whatwg.org/multipage/dom.html#heading-content
104
+ "#heading": ["h1", "h2", "h3", "h4", "h5", "h6", "hgroup:has(h1,h2,h3,h4,h5,h6)"],
104
105
  "#phrasing": [
105
106
  "a",
106
107
  "abbr",
@@ -185,6 +186,84 @@
185
186
  "textarea",
186
187
  "video[controls]"
187
188
  ],
189
+ // https://html.spec.whatwg.org/multipage/dom.html#palpable-content
190
+ "#palpable": [
191
+ "a",
192
+ "abbr",
193
+ "address",
194
+ "article",
195
+ "aside",
196
+ "audio[controls]",
197
+ "b",
198
+ "bdi",
199
+ "bdo",
200
+ "blockquote",
201
+ "button",
202
+ "canvas",
203
+ "cite",
204
+ "code",
205
+ "data",
206
+ "details",
207
+ "dfn",
208
+ "div",
209
+ "dl:has(>:is(dt+dd))",
210
+ "em",
211
+ "embed",
212
+ "fieldset",
213
+ "figure",
214
+ "footer",
215
+ "form",
216
+ "h1",
217
+ "h2",
218
+ "h3",
219
+ "h4",
220
+ "h5",
221
+ "h6",
222
+ "header",
223
+ "hgroup",
224
+ "i",
225
+ "iframe",
226
+ "img",
227
+ "input:not([type='hidden' i])",
228
+ "ins",
229
+ "kbd",
230
+ "label",
231
+ "main",
232
+ "map",
233
+ "mark",
234
+ "math",
235
+ "menu:has(>li)",
236
+ "meter",
237
+ "nav",
238
+ "object",
239
+ "ol:has(>li)",
240
+ "output",
241
+ "p",
242
+ "pre",
243
+ "progress",
244
+ "q",
245
+ "ruby",
246
+ "s",
247
+ "samp",
248
+ "section",
249
+ "select",
250
+ "small",
251
+ "span",
252
+ "strong",
253
+ "sub",
254
+ "sup ",
255
+ "svg",
256
+ "table",
257
+ "text",
258
+ "area",
259
+ "time",
260
+ "u",
261
+ "ul:has(>li)",
262
+ "var",
263
+ "video",
264
+ "#custom",
265
+ "#text"
266
+ ],
188
267
  "#script-supporting": ["script", "template"],
189
268
  "#SVGAnimation": [
190
269
  "svg|animate",
package/src/spec.a.json CHANGED
@@ -6,8 +6,7 @@
6
6
  "contentModel": {
7
7
  "contents": [
8
8
  {
9
- "zeroOrMore": "#transparent",
10
- "notAllowedDescendants": ["#interactive"]
9
+ "transparent": ":not(:model(interactive), a, [tabindex], :has(:model(interactive), a, [tabindex]))"
11
10
  }
12
11
  ]
13
12
  },
@@ -36,7 +35,7 @@
36
35
  "properties": {
37
36
  "global": true,
38
37
  "role": true,
39
- "whithout": [
38
+ "without": [
40
39
  {
41
40
  "type": "not-recommended",
42
41
  "name": "aria-disabled",
@@ -6,7 +6,7 @@
6
6
  "contentModel": {
7
7
  "contents": [
8
8
  {
9
- "zeroOrMore": "#phrasing"
9
+ "oneOrMore": ":model(phrasing)"
10
10
  }
11
11
  ]
12
12
  },
@@ -6,8 +6,7 @@
6
6
  "contentModel": {
7
7
  "contents": [
8
8
  {
9
- "zeroOrMore": "#flow",
10
- "notAllowedDescendants": ["address", "#heading", "#sectioning", "header", "footer"]
9
+ "oneOrMore": ":model(flow):not(address, :model(heading), :model(sectioning), header, foooter, :has(address, :model(heading), :model(sectioning), header, foooter))"
11
10
  }
12
11
  ]
13
12
  },
@@ -6,7 +6,7 @@
6
6
  "contentModel": {
7
7
  "contents": [
8
8
  {
9
- "zeroOrMore": "#flow"
9
+ "oneOrMore": ":model(flow)"
10
10
  }
11
11
  ]
12
12
  },
@@ -6,7 +6,7 @@
6
6
  "contentModel": {
7
7
  "contents": [
8
8
  {
9
- "zeroOrMore": "#flow"
9
+ "oneOrMore": ":model(flow)"
10
10
  }
11
11
  ]
12
12
  },
@@ -11,8 +11,7 @@
11
11
  "zeroOrMore": "track"
12
12
  },
13
13
  {
14
- "zeroOrMore": "#transparent",
15
- "notAllowedDescendants": ["audio", "video"]
14
+ "transparent": ":not(audio, video, :has(audio, video))"
16
15
  }
17
16
  ],
18
17
  "conditional": [
@@ -23,8 +22,7 @@
23
22
  "zeroOrMore": "track"
24
23
  },
25
24
  {
26
- "zeroOrMore": "#transparent",
27
- "notAllowedDescendants": ["audio", "video"]
25
+ "transparent": ":not(audio, video, :has(audio, video))"
28
26
  }
29
27
  ]
30
28
  }
package/src/spec.b.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.bdi.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.bdo.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.br.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing",
9
- "notAllowedDescendants": ["#interactive"]
8
+ "oneOrMore": ":model(phrasing):not(:model(interactive), :has(:model(interactive)))"
10
9
  }
11
10
  ]
12
11
  },
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing",
9
- "notAllowedDescendants": ["#interactive"]
8
+ "transparent": ":not(:model(interactive), :has(:model(interactive)))"
10
9
  }
11
10
  ]
12
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -8,12 +8,12 @@
8
8
  "choice": [
9
9
  [
10
10
  {
11
- "zeroOrMore": "#phrasing"
11
+ "oneOrMore": ":model(phrasing)"
12
12
  }
13
13
  ],
14
14
  [
15
15
  {
16
- "zeroOrMore": ["option", "#script-supporting"]
16
+ "zeroOrMore": ["option", ":model(script-supporting)"]
17
17
  }
18
18
  ]
19
19
  ]
package/src/spec.dd.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.del.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#transparent"
8
+ "transparent": "*"
9
9
  }
10
10
  ]
11
11
  },
@@ -8,7 +8,7 @@
8
8
  "require": "summary"
9
9
  },
10
10
  {
11
- "zeroOrMore": "#flow"
11
+ "oneOrMore": ":model(flow)"
12
12
  }
13
13
  ]
14
14
  },
package/src/spec.dfn.json CHANGED
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing",
9
- "notAllowedDescendants": ["dfn"]
8
+ "oneOrMore": ":model(phrasing):not(dfn, :has(dfn))"
10
9
  }
11
10
  ]
12
11
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.div.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ],
11
11
  "conditional": [
@@ -13,19 +13,19 @@
13
13
  "condition": "dl > div",
14
14
  "contents": [
15
15
  {
16
- "zeroOrMore": "#script-supporting"
16
+ "zeroOrMore": ":model(script-supporting)"
17
17
  },
18
18
  {
19
19
  "oneOrMore": "dt"
20
20
  },
21
21
  {
22
- "zeroOrMore": "#script-supporting"
22
+ "zeroOrMore": ":model(script-supporting)"
23
23
  },
24
24
  {
25
25
  "oneOrMore": "dd"
26
26
  },
27
27
  {
28
- "zeroOrMore": "#script-supporting"
28
+ "zeroOrMore": ":model(script-supporting)"
29
29
  }
30
30
  ]
31
31
  }
package/src/spec.dl.json CHANGED
@@ -10,26 +10,32 @@
10
10
  {
11
11
  "oneOrMore": [
12
12
  {
13
- "zeroOrMore": "#script-supporting"
13
+ "zeroOrMore": ":model(script-supporting)"
14
14
  },
15
15
  {
16
16
  "oneOrMore": "dt"
17
17
  },
18
18
  {
19
- "zeroOrMore": "#script-supporting"
19
+ "zeroOrMore": ":model(script-supporting)"
20
20
  },
21
21
  {
22
22
  "oneOrMore": "dd"
23
23
  },
24
24
  {
25
- "zeroOrMore": "#script-supporting"
25
+ "zeroOrMore": ":model(script-supporting)"
26
26
  }
27
27
  ]
28
28
  }
29
29
  ],
30
30
  [
31
31
  {
32
- "oneOrMore": ["div", "#script-supporting"]
32
+ "zeroOrMore": ":model(script-supporting)"
33
+ },
34
+ {
35
+ "oneOrMore": "div"
36
+ },
37
+ {
38
+ "zeroOrMore": ":model(script-supporting)"
33
39
  }
34
40
  ]
35
41
  ]
package/src/spec.dt.json CHANGED
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow",
9
- "notAllowedDescendants": ["header", "footer", "#sectioning", "#heading"]
8
+ "oneOrMore": ":model(flow):not(header, footer, :model(sectioning), :model(heading), :has(header, footer, :model(sectioning), :model(heading)))"
10
9
  }
11
10
  ]
12
11
  },
package/src/spec.em.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -8,7 +8,7 @@
8
8
  "optional": "legend"
9
9
  },
10
10
  {
11
- "zeroOrMore": "#flow"
11
+ "oneOrMore": ":model(flow)"
12
12
  }
13
13
  ]
14
14
  },
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow"
8
+ "oneOrMore": ":model(flow)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,15 +5,26 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "interleave": [
8
+ "choice": [
9
9
  [
10
10
  {
11
- "optional": "figcaption"
11
+ "require": "figcaption"
12
+ },
13
+ {
14
+ "oneOrMore": ":model(flow)"
15
+ }
16
+ ],
17
+ [
18
+ {
19
+ "oneOrMore": ":model(flow)"
20
+ },
21
+ {
22
+ "require": "figcaption"
12
23
  }
13
24
  ],
14
25
  [
15
26
  {
16
- "zeroOrMore": "#flow"
27
+ "oneOrMore": ":model(flow)"
17
28
  }
18
29
  ]
19
30
  ]
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow",
9
- "notAllowedDescendants": ["header", "footer"]
8
+ "oneOrMore": ":model(flow):not(header, footer, :has(header, footer))"
10
9
  }
11
10
  ]
12
11
  },
@@ -5,8 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#flow",
9
- "notAllowedDescendants": ["form"]
8
+ "oneOrMore": ":model(flow):not(form, :has(form))"
10
9
  }
11
10
  ]
12
11
  },
package/src/spec.h1.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.h2.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.h3.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.h4.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.h5.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
package/src/spec.h6.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#phrasing"
8
+ "oneOrMore": ":model(phrasing)"
9
9
  }
10
10
  ]
11
11
  },
@@ -5,15 +5,13 @@
5
5
  "contentModel": {
6
6
  "contents": [
7
7
  {
8
- "zeroOrMore": "#metadata",
9
- "ignore": "title"
8
+ "zeroOrMore": ":model(metadata):not(title)"
10
9
  },
11
10
  {
12
11
  "require": "title"
13
12
  },
14
13
  {
15
- "zeroOrMore": "#metadata",
16
- "ignore": "title"
14
+ "zeroOrMore": ":model(metadata):not(title)"
17
15
  }
18
16
  ]
19
17
  },