Commit aca2b18ff6a0aaf7730783b1439f6d111793d34b

Authored by Renato De Donato
1 parent 4f679559

new datalets.xml

datalets.xml
... ... @@ -15,73 +15,16 @@
15 15 <name>Column</name>
16 16 <description>ColumnDescription</description>
17 17 <type>TEXT</type>
18   - <selection>+</selection>
  18 + <selection>*</selection>
19 19 </input>
20   - <layouts>
21   - </layouts>
22 20 </inputs>
23 21 </idm>
24 22 </component>
25 23  
26   - <!--pie-->
27   - <component>
28   - <name>piechart-datalet</name>
29   - <type>pie</type>
30   - <idm>
31   - <inputs>
32   - <input>
33   - <name>SliceLabels</name>
34   - <description>SliceLabelsDescription</description>
35   - <type>TEXT</type>
36   - <selection>1</selection>
37   - </input>
38   - <input>
39   - <name>SliceSizes</name>
40   - <description>SliceSizesDescription</description>
41   - <type>NUMBER</type>
42   - <selection>1</selection>
43   - </input>
44   - <layouts>
45   - <input>
46   - <name>suffix</name>
47   - <description>suffixDescription</description>
48   - <type>TEXT</type>
49   - <selection>1</selection>
50   - </input>
51   - <input>
52   - <name>theme</name>
53   - <description>themeDescription</description>
54   - <type>LIST</type>
55   - <selection>1</selection>
56   - <list>
57   - <item>themeBase</item>
58   - <item>themeDarkUnika</item>
59   - <item>themeSandSignika</item>
60   - <item>themeGridLight</item>
61   - <item>themeSpod</item>
62   - </list>
63   - </input>
64   - <input>
65   - <name>donut</name>
66   - <description>donutDescription</description>
67   - <type>LIST</type>
68   - <selection>1</selection>
69   - <list>
70   - <item>false</item>
71   - <item>true</item>
72   - </list>
73   - </input>
74   - </layouts>
75   - </inputs>
76   - </idm>
77   - </component>
78   -
79   - <!--multiseries-->
80   -
81   - <!--column-->
  24 + <!--bar-->
82 25 <component>
83   - <name>columnchart-datalet</name>
84   - <type>multiseries2</type>
  26 + <name>barchart-datalet</name>
  27 + <type>basic</type>
85 28 <idm>
86 29 <inputs>
87 30 <input>
... ... @@ -96,6 +39,12 @@
96 39 <type>NUMBER</type>
97 40 <selection>*</selection>
98 41 </input>
  42 + <input>
  43 + <name>Categories</name>
  44 + <description>CategoriesDescription</description>
  45 + <type>TEXT</type>
  46 + <selection>?</selection>
  47 + </input>
99 48 <layouts>
100 49 <input>
101 50 <name>x-axis-label</name>
... ... @@ -116,58 +65,36 @@
116 65 <selection>1</selection>
117 66 </input>
118 67 <input>
119   - <name>theme</name>
120   - <description>themeDescription</description>
  68 + <name>legend</name>
  69 + <description>dataLabelsDescription</description>
121 70 <type>LIST</type>
122 71 <selection>1</selection>
123 72 <list>
124   - <item>themeBase</item>
125   - <item>themeDarkUnika</item>
126   - <item>themeSandSignika</item>
127   - <item>themeGridLight</item>
128   - <item>themeSpod</item>
  73 + <item>topRight</item>
  74 + <item>bottom</item>
  75 + <item>false</item>
129 76 </list>
130 77 </input>
131   - </layouts>
132   - </inputs>
133   - </idm>
134   - </component>
135   - <!--bar-->
136   - <component>
137   - <name>barchart-datalet</name>
138   - <type>multiseries2</type>
139   - <idm>
140   - <inputs>
141   - <input>
142   - <name>XAxis</name>
143   - <description>XAxisDescription</description>
144   - <type>TEXT</type>
145   - <selection>1</selection>
146   - </input>
147   - <input>
148   - <name>NumericYAxis</name>
149   - <description>YAxisDescription</description>
150   - <type>NUMBER</type>
151   - <selection>*</selection>
152   - </input>
153   - <layouts>
154 78 <input>
155   - <name>x-axis-label</name>
156   - <description>XAxisLabelDescription</description>
157   - <type>TEXT</type>
158   - <selection>1</selection>
159   - </input>
160   - <input>
161   - <name>y-axis-label</name>
162   - <description>YAxisLabelDescription</description>
163   - <type>TEXT</type>
  79 + <name>data-labels</name>
  80 + <description>dataLabelsDescription</description>
  81 + <type>LIST</type>
164 82 <selection>1</selection>
  83 + <list>
  84 + <item>true</item>
  85 + <item>false</item>
  86 + </list>
165 87 </input>
166 88 <input>
167   - <name>suffix</name>
168   - <description>suffixDescription</description>
169   - <type>TEXT</type>
  89 + <name>stack</name>
  90 + <description>stackDescription</description>
  91 + <type>LIST</type>
170 92 <selection>1</selection>
  93 + <list>
  94 + <item>false</item>
  95 + <item>normal</item>
  96 + <item>percent</item>
  97 + </list>
171 98 </input>
172 99 <input>
173 100 <name>theme</name>
... ... @@ -186,10 +113,11 @@
186 113 </inputs>
187 114 </idm>
188 115 </component>
189   - <!--area-->
  116 +
  117 + <!--column-->
190 118 <component>
191   - <name>areachart-datalet</name>
192   - <type>multiseries2</type>
  119 + <name>columnchart-datalet</name>
  120 + <type>basic</type>
193 121 <idm>
194 122 <inputs>
195 123 <input>
... ... @@ -204,6 +132,12 @@
204 132 <type>NUMBER</type>
205 133 <selection>*</selection>
206 134 </input>
  135 + <input>
  136 + <name>Categories</name>
  137 + <description>CategoriesDescription</description>
  138 + <type>TEXT</type>
  139 + <selection>?</selection>
  140 + </input>
207 141 <layouts>
208 142 <input>
209 143 <name>x-axis-label</name>
... ... @@ -224,6 +158,38 @@
224 158 <selection>1</selection>
225 159 </input>
226 160 <input>
  161 + <name>legend</name>
  162 + <description>dataLabelsDescription</description>
  163 + <type>LIST</type>
  164 + <selection>1</selection>
  165 + <list>
  166 + <item>topRight</item>
  167 + <item>bottom</item>
  168 + <item>false</item>
  169 + </list>
  170 + </input>
  171 + <input>
  172 + <name>data-labels</name>
  173 + <description>dataLabelsDescription</description>
  174 + <type>LIST</type>
  175 + <selection>1</selection>
  176 + <list>
  177 + <item>true</item>
  178 + <item>false</item>
  179 + </list>
  180 + </input>
  181 + <input>
  182 + <name>stack</name>
  183 + <description>stackDescription</description>
  184 + <type>LIST</type>
  185 + <selection>1</selection>
  186 + <list>
  187 + <item>false</item>
  188 + <item>normal</item>
  189 + <item>percent</item>
  190 + </list>
  191 + </input>
  192 + <input>
227 193 <name>theme</name>
228 194 <description>themeDescription</description>
229 195 <type>LIST</type>
... ... @@ -240,10 +206,11 @@
240 206 </inputs>
241 207 </idm>
242 208 </component>
  209 +
243 210 <!--line-->
244 211 <component>
245 212 <name>linechart-datalet</name>
246   - <type>multiseries2</type>
  213 + <type>basic</type>
247 214 <idm>
248 215 <inputs>
249 216 <input>
... ... @@ -258,6 +225,12 @@
258 225 <type>NUMBER</type>
259 226 <selection>*</selection>
260 227 </input>
  228 + <input>
  229 + <name>Categories</name>
  230 + <description>CategoriesDescription</description>
  231 + <type>TEXT</type>
  232 + <selection>?</selection>
  233 + </input>
261 234 <layouts>
262 235 <input>
263 236 <name>x-axis-label</name>
... ... @@ -278,58 +251,36 @@
278 251 <selection>1</selection>
279 252 </input>
280 253 <input>
281   - <name>theme</name>
282   - <description>themeDescription</description>
  254 + <name>legend</name>
  255 + <description>dataLabelsDescription</description>
283 256 <type>LIST</type>
284 257 <selection>1</selection>
285 258 <list>
286   - <item>themeBase</item>
287   - <item>themeDarkUnika</item>
288   - <item>themeSandSignika</item>
289   - <item>themeGridLight</item>
290   - <item>themeSpod</item>
  259 + <item>topRight</item>
  260 + <item>bottom</item>
  261 + <item>false</item>
291 262 </list>
292 263 </input>
293   - </layouts>
294   - </inputs>
295   - </idm>
296   - </component>
297   - <!--heatmap-->
298   - <component>
299   - <name>heatmap-datalet</name>
300   - <type>multiseries2</type>
301   - <idm>
302   - <inputs>
303   - <input>
304   - <name>XAxis</name>
305   - <description>XAxisDescription</description>
306   - <type>TEXT</type>
307   - <selection>1</selection>
308   - </input>
309   - <input>
310   - <name>NumericYAxis</name>
311   - <description>YAxisDescription</description>
312   - <type>NUMBER</type>
313   - <selection>*</selection>
314   - </input>
315   - <layouts>
316   - <input>
317   - <name>x-axis-label</name>
318   - <description>XAxisLabelDescription</description>
319   - <type>TEXT</type>
320   - <selection>1</selection>
321   - </input>
322 264 <input>
323   - <name>y-axis-label</name>
324   - <description>YAxisLabelDescription</description>
325   - <type>TEXT</type>
  265 + <name>data-labels</name>
  266 + <description>dataLabelsDescription</description>
  267 + <type>LIST</type>
326 268 <selection>1</selection>
  269 + <list>
  270 + <item>true</item>
  271 + <item>false</item>
  272 + </list>
327 273 </input>
328 274 <input>
329   - <name>suffix</name>
330   - <description>suffixDescription</description>
331   - <type>TEXT</type>
  275 + <name>stack</name>
  276 + <description>stackDescription</description>
  277 + <type>LIST</type>
332 278 <selection>1</selection>
  279 + <list>
  280 + <item>false</item>
  281 + <item>normal</item>
  282 + <item>percent</item>
  283 + </list>
333 284 </input>
334 285 <input>
335 286 <name>theme</name>
... ... @@ -349,12 +300,10 @@
349 300 </idm>
350 301 </component>
351 302  
352   - <!--multiseries_stacked-->
353   -
354   - <!--column stacked-->
  303 + <!--area-->
355 304 <component>
356   - <name>columnchart_stacked-datalet</name>
357   - <type>multiseries</type>
  305 + <name>areachart-datalet</name>
  306 + <type>basic</type>
358 307 <idm>
359 308 <inputs>
360 309 <input>
... ... @@ -367,7 +316,13 @@
367 316 <name>NumericYAxis</name>
368 317 <description>YAxisDescription</description>
369 318 <type>NUMBER</type>
370   - <selection>1</selection>
  319 + <selection>*</selection>
  320 + </input>
  321 + <input>
  322 + <name>Categories</name>
  323 + <description>CategoriesDescription</description>
  324 + <type>TEXT</type>
  325 + <selection>?</selection>
371 326 </input>
372 327 <layouts>
373 328 <input>
... ... @@ -389,16 +344,24 @@
389 344 <selection>1</selection>
390 345 </input>
391 346 <input>
392   - <name>theme</name>
393   - <description>themeDescription</description>
  347 + <name>legend</name>
  348 + <description>dataLabelsDescription</description>
394 349 <type>LIST</type>
395 350 <selection>1</selection>
396 351 <list>
397   - <item>themeBase</item>
398   - <item>themeDarkUnika</item>
399   - <item>themeSandSignika</item>
400   - <item>themeGridLight</item>
401   - <item>themeSpod</item>
  352 + <item>topRight</item>
  353 + <item>bottom</item>
  354 + <item>false</item>
  355 + </list>
  356 + </input>
  357 + <input>
  358 + <name>data-labels</name>
  359 + <description>dataLabelsDescription</description>
  360 + <type>LIST</type>
  361 + <selection>1</selection>
  362 + <list>
  363 + <item>true</item>
  364 + <item>false</item>
402 365 </list>
403 366 </input>
404 367 <input>
... ... @@ -407,18 +370,33 @@
407 370 <type>LIST</type>
408 371 <selection>1</selection>
409 372 <list>
  373 + <item>false</item>
410 374 <item>normal</item>
411 375 <item>percent</item>
412 376 </list>
413 377 </input>
  378 + <input>
  379 + <name>theme</name>
  380 + <description>themeDescription</description>
  381 + <type>LIST</type>
  382 + <selection>1</selection>
  383 + <list>
  384 + <item>themeBase</item>
  385 + <item>themeDarkUnika</item>
  386 + <item>themeSandSignika</item>
  387 + <item>themeGridLight</item>
  388 + <item>themeSpod</item>
  389 + </list>
  390 + </input>
414 391 </layouts>
415 392 </inputs>
416 393 </idm>
417 394 </component>
418   - <!--bar stacked-->
  395 +
  396 + <!--heatmap-->
419 397 <component>
420   - <name>barchart_stacked-datalet</name>
421   - <type>multiseries</type>
  398 + <name>heatmap-datalet</name>
  399 + <type>basic</type>
422 400 <idm>
423 401 <inputs>
424 402 <input>
... ... @@ -431,7 +409,13 @@
431 409 <name>NumericYAxis</name>
432 410 <description>YAxisDescription</description>
433 411 <type>NUMBER</type>
434   - <selection>1</selection>
  412 + <selection>*</selection>
  413 + </input>
  414 + <input>
  415 + <name>Categories</name>
  416 + <description>CategoriesDescription</description>
  417 + <type>TEXT</type>
  418 + <selection>?</selection>
435 419 </input>
436 420 <layouts>
437 421 <input>
... ... @@ -453,16 +437,24 @@
453 437 <selection>1</selection>
454 438 </input>
455 439 <input>
456   - <name>theme</name>
457   - <description>themeDescription</description>
  440 + <name>legend</name>
  441 + <description>dataLabelsDescription</description>
458 442 <type>LIST</type>
459 443 <selection>1</selection>
460 444 <list>
461   - <item>themeBase</item>
462   - <item>themeDarkUnika</item>
463   - <item>themeSandSignika</item>
464   - <item>themeGridLight</item>
465   - <item>themeSpod</item>
  445 + <item>topRight</item>
  446 + <item>bottom</item>
  447 + <item>false</item>
  448 + </list>
  449 + </input>
  450 + <input>
  451 + <name>data-labels</name>
  452 + <description>dataLabelsDescription</description>
  453 + <type>LIST</type>
  454 + <selection>1</selection>
  455 + <list>
  456 + <item>true</item>
  457 + <item>false</item>
466 458 </list>
467 459 </input>
468 460 <input>
... ... @@ -471,50 +463,84 @@
471 463 <type>LIST</type>
472 464 <selection>1</selection>
473 465 <list>
  466 + <item>false</item>
474 467 <item>normal</item>
475 468 <item>percent</item>
476 469 </list>
477 470 </input>
  471 + <input>
  472 + <name>theme</name>
  473 + <description>themeDescription</description>
  474 + <type>LIST</type>
  475 + <selection>1</selection>
  476 + <list>
  477 + <item>themeBase</item>
  478 + <item>themeDarkUnika</item>
  479 + <item>themeSandSignika</item>
  480 + <item>themeGridLight</item>
  481 + <item>themeSpod</item>
  482 + </list>
  483 + </input>
478 484 </layouts>
479 485 </inputs>
480 486 </idm>
481 487 </component>
482   - <!--area stacked-->
  488 +
  489 + <!--pie-->
483 490 <component>
484   - <name>areachart_stacked-datalet</name>
485   - <type>multiseries</type>
  491 + <name>piechart-datalet</name>
  492 + <type>pie</type>
486 493 <idm>
487 494 <inputs>
488 495 <input>
489   - <name>XAxis</name>
490   - <description>XAxisDescription</description>
  496 + <name>SliceLabels</name>
  497 + <description>SliceLabelsDescription</description>
491 498 <type>TEXT</type>
492 499 <selection>1</selection>
493 500 </input>
494 501 <input>
495   - <name>NumericYAxis</name>
496   - <description>YAxisDescription</description>
  502 + <name>SliceSizes</name>
  503 + <description>SliceSizesDescription</description>
497 504 <type>NUMBER</type>
498 505 <selection>1</selection>
499 506 </input>
500 507 <layouts>
501 508 <input>
502   - <name>x-axis-label</name>
503   - <description>XAxisLabelDescription</description>
  509 + <name>suffix</name>
  510 + <description>suffixDescription</description>
504 511 <type>TEXT</type>
505 512 <selection>1</selection>
506 513 </input>
507 514 <input>
508   - <name>y-axis-label</name>
509   - <description>YAxisLabelDescription</description>
510   - <type>TEXT</type>
  515 + <name>legend</name>
  516 + <description>dataLabelsDescription</description>
  517 + <type>LIST</type>
511 518 <selection>1</selection>
  519 + <list>
  520 + <item>topRight</item>
  521 + <item>bottom</item>
  522 + <item>false</item>
  523 + </list>
512 524 </input>
513 525 <input>
514   - <name>suffix</name>
515   - <description>suffixDescription</description>
516   - <type>TEXT</type>
  526 + <name>data-labels</name>
  527 + <description>dataLabelsDescription</description>
  528 + <type>LIST</type>
  529 + <selection>1</selection>
  530 + <list>
  531 + <item>true</item>
  532 + <item>false</item>
  533 + </list>
  534 + </input>
  535 + <input>
  536 + <name>donut</name>
  537 + <description>donutDescription</description>
  538 + <type>LIST</type>
517 539 <selection>1</selection>
  540 + <list>
  541 + <item>false</item>
  542 + <item>true</item>
  543 + </list>
518 544 </input>
519 545 <input>
520 546 <name>theme</name>
... ... @@ -529,72 +555,6 @@
529 555 <item>themeSpod</item>
530 556 </list>
531 557 </input>
532   - <input>
533   - <name>stack</name>
534   - <description>stackDescription</description>
535   - <type>LIST</type>
536   - <selection>1</selection>
537   - <list>
538   - <item>normal</item>
539   - <item>percent</item>
540   - </list>
541   - </input>
542   - </layouts>
543   - </inputs>
544   - </idm>
545   - </component>
546   -
547   - <!--map-->
548   - <component>
549   - <name>leafletjs-datalet</name>
550   - <type>map</type>
551   - <idm>
552   - <inputs>
553   - <input>
554   - <name>Latitude</name>
555   - <description>LatitudeDescription</description>
556   - <!--<type>GEOGRAPHICAL COORDINATE</type>-->
557   - <type>NUMBER</type>
558   - <selection>1</selection>
559   - </input>
560   - <input>
561   - <name>Longitude</name>
562   - <description>LongitudeDescription</description>
563   - <!--<type>GEOGRAPHICAL COORDINATE</type>-->
564   - <type>NUMBER</type>
565   - <selection>1</selection>
566   - </input>
567   - <input>
568   - <name>BalloonContent</name>
569   - <description>BalloonContentDescription</description>
570   - <type>TEXT</type>
571   - <selection>*</selection>
572   - </input>
573   - <layouts>
574   - </layouts>
575   - </inputs>
576   - </idm>
577   - </component>
578   -
579   - <!--map-->
580   - <component>
581   - <name>leafletjs-geojson-datalet</name>
582   - <type>map-geojson</type>
583   - <idm>
584   - <inputs>
585   - <input>
586   - <name>GEOJSON</name>
587   - <description>GEOJSONDescription</description>
588   - <type>GEOJSON</type>
589   - <selection>1</selection>
590   - </input>
591   - <input>
592   - <name>BalloonContent</name>
593   - <description>BalloonContentDescription</description>
594   - <type>TEXT</type>
595   - <selection>*</selection>
596   - </input>
597   - <layouts>
598 558 </layouts>
599 559 </inputs>
600 560 </idm>
... ... @@ -638,6 +598,27 @@
638 598 <selection>1</selection>
639 599 </input>
640 600 <input>
  601 + <name>legend</name>
  602 + <description>dataLabelsDescription</description>
  603 + <type>LIST</type>
  604 + <selection>1</selection>
  605 + <list>
  606 + <item>topRight</item>
  607 + <item>bottom</item>
  608 + <item>false</item>
  609 + </list>
  610 + </input>
  611 + <input>
  612 + <name>data-labels</name>
  613 + <description>dataLabelsDescription</description>
  614 + <type>LIST</type>
  615 + <selection>1</selection>
  616 + <list>
  617 + <item>true</item>
  618 + <item>false</item>
  619 + </list>
  620 + </input>
  621 + <input>
641 622 <name>theme</name>
642 623 <description>themeDescription</description>
643 624 <type>LIST</type>
... ... @@ -677,13 +658,13 @@
677 658 <name>BubbleSize</name>
678 659 <description>BubbleSizeDescription</description>
679 660 <type>NUMBER</type>
680   - <selection>?</selection>
  661 + <selection>1</selection>
681 662 </input>
682 663 <input>
683 664 <name>BubbleContent</name>
684 665 <description>BubbleContentDescription</description>
685 666 <type>TEXT</type>
686   - <selection>?</selection>
  667 + <selection>1</selection>
687 668 </input>
688 669 <input>
689 670 <name>Categories</name>
... ... @@ -705,6 +686,17 @@
705 686 <selection>1</selection>
706 687 </input>
707 688 <input>
  689 + <name>legend</name>
  690 + <description>dataLabelsDescription</description>
  691 + <type>LIST</type>
  692 + <selection>1</selection>
  693 + <list>
  694 + <item>topRight</item>
  695 + <item>bottom</item>
  696 + <item>false</item>
  697 + </list>
  698 + </input>
  699 + <input>
708 700 <name>theme</name>
709 701 <description>themeDescription</description>
710 702 <type>LIST</type>
... ... @@ -732,10 +724,62 @@
732 724 <name>Level</name>
733 725 <description>LevelDescription</description>
734 726 <type>TEXT</type>
735   - <selection>+</selection>
  727 + <selection>*</selection>
  728 + </input>
  729 + </inputs>
  730 + </idm>
  731 + </component>
  732 +
  733 + <!--https://leaflet-extras.github.io/leaflet-providers/preview/-->
  734 + <!--map-->
  735 + <component>
  736 + <name>leafletjs-datalet</name>
  737 + <type>map</type>
  738 + <idm>
  739 + <inputs>
  740 + <input>
  741 + <name>Latitude</name>
  742 + <description>LatitudeDescription</description>
  743 + <!--<type>GEOCOORDINATE</type>-->
  744 + <type>NUMBER</type>
  745 + <selection>1</selection>
  746 + </input>
  747 + <input>
  748 + <name>Longitude</name>
  749 + <description>LongitudeDescription</description>
  750 + <!--<type>GEOCOORDINATE</type>-->
  751 + <type>NUMBER</type>
  752 + <selection>1</selection>
  753 + </input>
  754 + <input>
  755 + <name>BalloonContent</name>
  756 + <description>BalloonContentDescription</description>
  757 + <type>TEXT</type>
  758 + <selection>*</selection>
  759 + </input>
  760 + </inputs>
  761 + </idm>
  762 + </component>
  763 +
  764 + <!--map geojson-->
  765 + <component>
  766 + <name>leafletjs-geojson-datalet</name>
  767 + <type>map-geojson</type>
  768 + <idm>
  769 + <inputs>
  770 + <input>
  771 + <name>GEOJSON</name>
  772 + <description>GEOJSONDescription</description>
  773 + <!--<type>GEOJSON</type>-->
  774 + <type>TEXT</type>
  775 + <selection>1</selection>
  776 + </input>
  777 + <input>
  778 + <name>BalloonContent</name>
  779 + <description>BalloonContentDescription</description>
  780 + <type>TEXT</type>
  781 + <selection>*</selection>
736 782 </input>
737   - <layouts>
738   - </layouts>
739 783 </inputs>
740 784 </idm>
741 785 </component>
... ...
datalets/datalets.dtd
... ... @@ -2,7 +2,7 @@
2 2 <!ELEMENT components (component*)>
3 3 <!ELEMENT component (name, type, idm)>
4 4 <!ELEMENT idm (inputs*)>
5   -<!ELEMENT inputs (input*, layouts)>
  5 +<!ELEMENT inputs (input*, layouts?)>
6 6 <!ELEMENT layouts (input*)>
7 7 <!ELEMENT input (name, description?, type, selection, validator?, list?)>
8 8 <!ELEMENT list (item+)>
... ... @@ -11,4 +11,6 @@
11 11 <!ELEMENT description (#PCDATA)>
12 12 <!ELEMENT selection (#PCDATA)>
13 13 <!ELEMENT type (#PCDATA)>
14   -<!ELEMENT validator (#PCDATA)>
15 14 \ No newline at end of file
  15 +<!ELEMENT validator (#PCDATA)>
  16 +
  17 +<!--selection * ? n-->
16 18 \ No newline at end of file
... ...