testsuite.xml 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708
  1. <testSuite>
  2. <author>Daniel Veillard</author>
  3. <email>daniel@veillard.com</email>
  4. <documentation>For libxml2 implementation of Relax NG spec.</documentation>
  5. <testSuite>
  6. <documentation>Test of node matches</documentation>
  7. <testCase>
  8. <correct>
  9. <element xmlns="http://relaxng.org/ns/structure/1.0">
  10. <anyName>
  11. <except>
  12. <nsName ns="http://example.org"/>
  13. </except>
  14. </anyName>
  15. <empty/>
  16. </element>
  17. </correct>
  18. <valid>
  19. <foo/>
  20. </valid>
  21. <valid>
  22. <foo xmlns="http://example.org/"/>
  23. </valid>
  24. <valid>
  25. <foo xmlns="http://EXAMPLE.ORG"/>
  26. </valid>
  27. <invalid>
  28. <foo xmlns="http://example.org"/>
  29. </invalid>
  30. <invalid>
  31. <a:foo xmlns:a="http://example.org"/>
  32. </invalid>
  33. </testCase>
  34. <testCase>
  35. <correct>
  36. <element name="top" xmlns="http://relaxng.org/ns/structure/1.0">
  37. <interleave>
  38. <element name="foo" ns="http://example.org">
  39. <empty/>
  40. </element>
  41. <element>
  42. <anyName>
  43. <except>
  44. <nsName ns="http://example.org"/>
  45. </except>
  46. </anyName>
  47. <empty/>
  48. </element>
  49. </interleave>
  50. </element>
  51. </correct>
  52. <invalid>
  53. <top>
  54. <foo/>
  55. <bar/>
  56. </top>
  57. </invalid>
  58. <invalid>
  59. <top>
  60. <foo xmlns="http://example.org"/>
  61. <bar xmlns="http://example.org"/>
  62. </top>
  63. </invalid>
  64. <valid>
  65. <top>
  66. <foo xmlns="http://example.org"/>
  67. <bar/>
  68. </top>
  69. </valid>
  70. <valid>
  71. <top>
  72. <bar/>
  73. <foo xmlns="http://example.org"/>
  74. </top>
  75. </valid>
  76. <valid>
  77. <top>
  78. <foo xmlns="http://example.org"/>
  79. <bar xmlns="http://example.org/"/>
  80. </top>
  81. </valid>
  82. <valid>
  83. <top>
  84. <bar xmlns="http://example.org/"/>
  85. <foo xmlns="http://example.org"/>
  86. </top>
  87. </valid>
  88. </testCase>
  89. </testSuite>
  90. <testSuite>
  91. <documentation>Test of indeterminism</documentation>
  92. <testCase>
  93. <correct>
  94. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  95. <zeroOrMore>
  96. <element name="bar">
  97. <empty/>
  98. </element>
  99. </zeroOrMore>
  100. <element name="baz">
  101. <empty/>
  102. </element>
  103. </element>
  104. </correct>
  105. <invalid>
  106. <foo/>
  107. </invalid>
  108. <valid>
  109. <foo>
  110. <baz/>
  111. </foo>
  112. </valid>
  113. <valid>
  114. <foo>
  115. <bar/>
  116. <baz/>
  117. </foo>
  118. </valid>
  119. <valid>
  120. <foo>
  121. <bar/>
  122. <bar/>
  123. <bar/>
  124. <baz/>
  125. </foo>
  126. </valid>
  127. </testCase>
  128. <testCase>
  129. <correct>
  130. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  131. <zeroOrMore>
  132. <element name="bar">
  133. <empty/>
  134. </element>
  135. </zeroOrMore>
  136. <element name="bar">
  137. <empty/>
  138. </element>
  139. </element>
  140. </correct>
  141. <invalid>
  142. <foo/>
  143. </invalid>
  144. <valid>
  145. <foo>
  146. <bar/>
  147. </foo>
  148. </valid>
  149. <valid>
  150. <foo>
  151. <bar/>
  152. <bar/>
  153. </foo>
  154. </valid>
  155. <valid>
  156. <foo>
  157. <bar/>
  158. <bar/>
  159. <bar/>
  160. <bar/>
  161. </foo>
  162. </valid>
  163. </testCase>
  164. <testCase>
  165. <correct>
  166. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  167. <group>
  168. <zeroOrMore>
  169. <element name="bar">
  170. <empty/>
  171. </element>
  172. </zeroOrMore>
  173. <element name="baz">
  174. <empty/>
  175. </element>
  176. </group>
  177. </element>
  178. </correct>
  179. <invalid>
  180. <foo/>
  181. </invalid>
  182. <valid>
  183. <foo>
  184. <baz/>
  185. </foo>
  186. </valid>
  187. <valid>
  188. <foo>
  189. <bar/>
  190. <baz/>
  191. </foo>
  192. </valid>
  193. <valid>
  194. <foo>
  195. <bar/>
  196. <bar/>
  197. <bar/>
  198. <baz/>
  199. </foo>
  200. </valid>
  201. </testCase>
  202. <testCase>
  203. <correct>
  204. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  205. <group>
  206. <zeroOrMore>
  207. <element name="bar">
  208. <empty/>
  209. </element>
  210. </zeroOrMore>
  211. <element name="bar">
  212. <empty/>
  213. </element>
  214. </group>
  215. </element>
  216. </correct>
  217. <invalid>
  218. <foo/>
  219. </invalid>
  220. <valid>
  221. <foo>
  222. <bar/>
  223. </foo>
  224. </valid>
  225. <valid>
  226. <foo>
  227. <bar/>
  228. <bar/>
  229. </foo>
  230. </valid>
  231. <valid>
  232. <foo>
  233. <bar/>
  234. <bar/>
  235. <bar/>
  236. <bar/>
  237. </foo>
  238. </valid>
  239. </testCase>
  240. <testCase>
  241. <correct>
  242. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  243. <choice>
  244. <zeroOrMore>
  245. <element name="bar">
  246. <empty/>
  247. </element>
  248. </zeroOrMore>
  249. <element name="baz">
  250. <empty/>
  251. </element>
  252. </choice>
  253. </element>
  254. </correct>
  255. <valid>
  256. <foo/>
  257. </valid>
  258. <valid>
  259. <foo>
  260. <baz/>
  261. </foo>
  262. </valid>
  263. <valid>
  264. <foo>
  265. <bar/>
  266. <bar/>
  267. <bar/>
  268. </foo>
  269. </valid>
  270. <invalid>
  271. <foo>
  272. <bar/>
  273. <baz/>
  274. </foo>
  275. </invalid>
  276. <invalid>
  277. <foo>
  278. <bar/>
  279. <bar/>
  280. <bar/>
  281. <bar/>
  282. <baz/>
  283. </foo>
  284. </invalid>
  285. </testCase>
  286. <testCase>
  287. <correct>
  288. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  289. <choice>
  290. <zeroOrMore>
  291. <element name="bar">
  292. <empty/>
  293. </element>
  294. </zeroOrMore>
  295. <element name="baz">
  296. <empty/>
  297. </element>
  298. </choice>
  299. <element name="baz">
  300. <empty/>
  301. </element>
  302. </element>
  303. </correct>
  304. <invalid>
  305. <foo/>
  306. </invalid>
  307. <valid>
  308. <foo>
  309. <baz/>
  310. </foo>
  311. </valid>
  312. <valid>
  313. <foo>
  314. <baz/>
  315. <baz/>
  316. </foo>
  317. </valid>
  318. <valid>
  319. <foo>
  320. <bar/>
  321. <bar/>
  322. <bar/>
  323. <baz/>
  324. </foo>
  325. </valid>
  326. <invalid>
  327. <foo>
  328. <bar/>
  329. <baz/>
  330. <baz/>
  331. </foo>
  332. </invalid>
  333. <invalid>
  334. <foo>
  335. <baz/>
  336. <bar/>
  337. <baz/>
  338. </foo>
  339. </invalid>
  340. </testCase>
  341. <testCase>
  342. <correct>
  343. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  344. <choice>
  345. <zeroOrMore>
  346. <element name="bar">
  347. <empty/>
  348. </element>
  349. </zeroOrMore>
  350. <element name="bar">
  351. <empty/>
  352. </element>
  353. </choice>
  354. </element>
  355. </correct>
  356. <valid>
  357. <foo/>
  358. </valid>
  359. <valid>
  360. <foo>
  361. <bar/>
  362. </foo>
  363. </valid>
  364. <valid>
  365. <foo>
  366. <bar/>
  367. <bar/>
  368. </foo>
  369. </valid>
  370. <valid>
  371. <foo>
  372. <bar/>
  373. <bar/>
  374. <bar/>
  375. <bar/>
  376. </foo>
  377. </valid>
  378. </testCase>
  379. <testCase>
  380. <correct>
  381. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  382. <choice>
  383. <zeroOrMore>
  384. <choice>
  385. <element name="bar">
  386. <empty/>
  387. </element>
  388. <element name="baz">
  389. <empty/>
  390. </element>
  391. </choice>
  392. </zeroOrMore>
  393. <element name="bar">
  394. <empty/>
  395. </element>
  396. </choice>
  397. </element>
  398. </correct>
  399. <valid>
  400. <foo/>
  401. </valid>
  402. <valid>
  403. <foo>
  404. <bar/>
  405. </foo>
  406. </valid>
  407. <valid>
  408. <foo>
  409. <baz/>
  410. <bar/>
  411. </foo>
  412. </valid>
  413. <valid>
  414. <foo>
  415. <bar/>
  416. <bar/>
  417. <bar/>
  418. <bar/>
  419. </foo>
  420. </valid>
  421. <valid>
  422. <foo>
  423. <baz/>
  424. <baz/>
  425. <baz/>
  426. <baz/>
  427. </foo>
  428. </valid>
  429. <valid>
  430. <foo>
  431. <baz/>
  432. <bar/>
  433. <baz/>
  434. <bar/>
  435. </foo>
  436. </valid>
  437. </testCase>
  438. <testCase>
  439. <correct>
  440. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  441. <optional>
  442. <element name="bar">
  443. <empty/>
  444. </element>
  445. </optional>
  446. <element name="baz">
  447. <empty/>
  448. </element>
  449. </element>
  450. </correct>
  451. <invalid>
  452. <foo/>
  453. </invalid>
  454. <valid>
  455. <foo>
  456. <baz/>
  457. </foo>
  458. </valid>
  459. <valid>
  460. <foo>
  461. <bar/>
  462. <baz/>
  463. </foo>
  464. </valid>
  465. <invalid>
  466. <foo>
  467. <bar/>
  468. <bar/>
  469. <baz/>
  470. </foo>
  471. </invalid>
  472. </testCase>
  473. <testCase>
  474. <correct>
  475. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  476. <optional>
  477. <element name="bar">
  478. <empty/>
  479. </element>
  480. </optional>
  481. <element name="bar">
  482. <empty/>
  483. </element>
  484. </element>
  485. </correct>
  486. <invalid>
  487. <foo/>
  488. </invalid>
  489. <valid>
  490. <foo>
  491. <bar/>
  492. </foo>
  493. </valid>
  494. <valid>
  495. <foo>
  496. <bar/>
  497. <bar/>
  498. </foo>
  499. </valid>
  500. <invalid>
  501. <foo>
  502. <bar/>
  503. <bar/>
  504. <bar/>
  505. </foo>
  506. </invalid>
  507. </testCase>
  508. <testCase>
  509. <correct>
  510. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  511. <optional>
  512. <oneOrMore>
  513. <element name="bar">
  514. <empty/>
  515. </element>
  516. </oneOrMore>
  517. </optional>
  518. <element name="baz">
  519. <empty/>
  520. </element>
  521. </element>
  522. </correct>
  523. <invalid>
  524. <foo/>
  525. </invalid>
  526. <valid>
  527. <foo>
  528. <baz/>
  529. </foo>
  530. </valid>
  531. <valid>
  532. <foo>
  533. <bar/>
  534. <baz/>
  535. </foo>
  536. </valid>
  537. <valid>
  538. <foo>
  539. <bar/>
  540. <bar/>
  541. <baz/>
  542. </foo>
  543. </valid>
  544. <invalid>
  545. <foo>
  546. <bar/>
  547. <bar/>
  548. </foo>
  549. </invalid>
  550. </testCase>
  551. <testCase>
  552. <correct>
  553. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  554. <optional>
  555. <oneOrMore>
  556. <element name="bar">
  557. <empty/>
  558. </element>
  559. </oneOrMore>
  560. </optional>
  561. <element name="bar">
  562. <empty/>
  563. </element>
  564. </element>
  565. </correct>
  566. <invalid>
  567. <foo/>
  568. </invalid>
  569. <valid>
  570. <foo>
  571. <bar/>
  572. </foo>
  573. </valid>
  574. <valid>
  575. <foo>
  576. <bar/>
  577. <bar/>
  578. </foo>
  579. </valid>
  580. <valid>
  581. <foo>
  582. <bar/>
  583. <bar/>
  584. <bar/>
  585. </foo>
  586. </valid>
  587. </testCase>
  588. <testCase>
  589. <correct>
  590. <element name="foo" xmlns="http://relaxng.org/ns/structure/1.0">
  591. <group>
  592. <zeroOrMore>
  593. <choice>
  594. <element name="bar">
  595. <empty/>
  596. </element>
  597. <element name="baz">
  598. <empty/>
  599. </element>
  600. </choice>
  601. </zeroOrMore>
  602. <element name="bar">
  603. <empty/>
  604. </element>
  605. </group>
  606. </element>
  607. </correct>
  608. <invalid>
  609. <foo/>
  610. </invalid>
  611. <valid>
  612. <foo>
  613. <bar/>
  614. </foo>
  615. </valid>
  616. <valid>
  617. <foo>
  618. <baz/>
  619. <bar/>
  620. </foo>
  621. </valid>
  622. <valid>
  623. <foo>
  624. <bar/>
  625. <bar/>
  626. <bar/>
  627. <bar/>
  628. </foo>
  629. </valid>
  630. <valid>
  631. <foo>
  632. <baz/>
  633. <baz/>
  634. <baz/>
  635. <bar/>
  636. </foo>
  637. </valid>
  638. <valid>
  639. <foo>
  640. <baz/>
  641. <bar/>
  642. <baz/>
  643. <bar/>
  644. </foo>
  645. </valid>
  646. <invalid>
  647. <foo>
  648. <bar/>
  649. <baz/>
  650. <bar/>
  651. <baz/>
  652. </foo>
  653. </invalid>
  654. </testCase>
  655. <testCase>
  656. <correct>
  657. <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
  658. <oneOrMore>
  659. <element name="label">
  660. <empty/>
  661. </element>
  662. <optional>
  663. <element name="opt">
  664. <empty/>
  665. </element>
  666. </optional>
  667. <element name="item">
  668. <empty/>
  669. </element>
  670. </oneOrMore>
  671. </element>
  672. </correct>
  673. <invalid>
  674. <list>
  675. </list>
  676. </invalid>
  677. <valid>
  678. <list>
  679. <label/>
  680. <item/>
  681. </list>
  682. </valid>
  683. <valid>
  684. <list>
  685. <label/>
  686. <item/>
  687. <label/>
  688. <item/>
  689. </list>
  690. </valid>
  691. <valid>
  692. <list>
  693. <label/>
  694. <opt/>
  695. <item/>
  696. <label/>
  697. <opt/>
  698. <item/>
  699. </list>
  700. </valid>
  701. <invalid>
  702. <list>
  703. <label/>
  704. <item/>
  705. <label/>
  706. <opt/>
  707. <opt/>
  708. <item/>
  709. </list>
  710. </invalid>
  711. </testCase>
  712. <testCase>
  713. <correct>
  714. <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
  715. <oneOrMore>
  716. <element name="label">
  717. <empty/>
  718. </element>
  719. <zeroOrMore>
  720. <element name="opt">
  721. <empty/>
  722. </element>
  723. </zeroOrMore>
  724. <element name="item">
  725. <empty/>
  726. </element>
  727. </oneOrMore>
  728. </element>
  729. </correct>
  730. <invalid>
  731. <list>
  732. </list>
  733. </invalid>
  734. <valid>
  735. <list>
  736. <label/>
  737. <item/>
  738. </list>
  739. </valid>
  740. <valid>
  741. <list>
  742. <label/>
  743. <item/>
  744. <label/>
  745. <item/>
  746. </list>
  747. </valid>
  748. <valid>
  749. <list>
  750. <label/>
  751. <opt/>
  752. <item/>
  753. <label/>
  754. <opt/>
  755. <item/>
  756. </list>
  757. </valid>
  758. <valid>
  759. <list>
  760. <label/>
  761. <item/>
  762. <label/>
  763. <opt/>
  764. <opt/>
  765. <item/>
  766. </list>
  767. </valid>
  768. </testCase>
  769. <testCase>
  770. <correct>
  771. <element name="list" xmlns="http://relaxng.org/ns/structure/1.0">
  772. <oneOrMore>
  773. <element name="label">
  774. <empty/>
  775. </element>
  776. <zeroOrMore>
  777. <element name="opt">
  778. <empty/>
  779. </element>
  780. <element name="opt2">
  781. <empty/>
  782. </element>
  783. </zeroOrMore>
  784. <element name="item">
  785. <empty/>
  786. </element>
  787. </oneOrMore>
  788. </element>
  789. </correct>
  790. <invalid>
  791. <list>
  792. </list>
  793. </invalid>
  794. <valid>
  795. <list>
  796. <label/>
  797. <item/>
  798. </list>
  799. </valid>
  800. <valid>
  801. <list>
  802. <label/>
  803. <item/>
  804. <label/>
  805. <item/>
  806. </list>
  807. </valid>
  808. <valid>
  809. <list>
  810. <label/>
  811. <opt/>
  812. <opt2/>
  813. <item/>
  814. <label/>
  815. <opt/>
  816. <opt2/>
  817. <item/>
  818. </list>
  819. </valid>
  820. <valid>
  821. <list>
  822. <label/>
  823. <item/>
  824. <label/>
  825. <opt/>
  826. <opt2/>
  827. <opt/>
  828. <opt2/>
  829. <item/>
  830. </list>
  831. </valid>
  832. <invalid>
  833. <list>
  834. <label/>
  835. <opt/>
  836. <item/>
  837. <label/>
  838. <item/>
  839. </list>
  840. </invalid>
  841. <invalid>
  842. <list>
  843. <label/>
  844. <item/>
  845. <label/>
  846. <opt2/>
  847. <opt/>
  848. <item/>
  849. </list>
  850. </invalid>
  851. <invalid>
  852. <list>
  853. <label/>
  854. <item/>
  855. <label/>
  856. <opt/>
  857. <opt2/>
  858. <opt/>
  859. <item/>
  860. </list>
  861. </invalid>
  862. </testCase>
  863. </testSuite>
  864. <testSuite>
  865. <documentation>Test of grammars merging</documentation>
  866. <testCase>
  867. <resource name="dbk.rng">
  868. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  869. <start>
  870. <ref name="p"/>
  871. </start>
  872. <define name="p.ext">
  873. <notAllowed/>
  874. </define>
  875. <define name="p">
  876. <element name="p">
  877. <choice>
  878. <ref name="p.ext"/>
  879. <empty/>
  880. <element name="a">
  881. <text/>
  882. </element>
  883. </choice>
  884. </element>
  885. </define>
  886. </grammar>
  887. </resource>
  888. <correct>
  889. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  890. <start>
  891. <grammar>
  892. <include href="dbk.rng"/>
  893. <define name="p.ext" combine="choice">
  894. <element name="b">
  895. <text/>
  896. </element>
  897. </define>
  898. </grammar>
  899. </start>
  900. </grammar>
  901. </correct>
  902. <valid>
  903. <p/>
  904. </valid>
  905. <valid>
  906. <p>
  907. <a/>
  908. </p>
  909. </valid>
  910. <valid>
  911. <p>
  912. <b/>
  913. </p>
  914. </valid>
  915. <invalid>
  916. <b/>
  917. </invalid>
  918. <invalid>
  919. <p>
  920. <b/>
  921. <b/>
  922. </p>
  923. </invalid>
  924. </testCase>
  925. <testCase>
  926. <resource name="dbk.rng">
  927. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  928. <start>
  929. <ref name="p"/>
  930. </start>
  931. <define name="p.ext">
  932. <notAllowed/>
  933. </define>
  934. <define name="p">
  935. <element name="p">
  936. <choice>
  937. <ref name="p.ext"/>
  938. <empty/>
  939. <element name="a">
  940. <text/>
  941. </element>
  942. </choice>
  943. </element>
  944. </define>
  945. <define name="c">
  946. <element name="c">
  947. <empty/>
  948. </element>
  949. </define>
  950. </grammar>
  951. </resource>
  952. <correct>
  953. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  954. <start>
  955. <grammar>
  956. <include href="dbk.rng"/>
  957. <define name="p.ext" combine="choice">
  958. <choice>
  959. <ref name="c"/>
  960. <parentRef name="d"/>
  961. <element name="b">
  962. <text/>
  963. </element>
  964. </choice>
  965. </define>
  966. </grammar>
  967. </start>
  968. <define name="d">
  969. <element name="d">
  970. <empty/>
  971. </element>
  972. </define>
  973. </grammar>
  974. </correct>
  975. <valid>
  976. <p/>
  977. </valid>
  978. <valid>
  979. <p>
  980. <a/>
  981. </p>
  982. </valid>
  983. <valid>
  984. <p>
  985. <b/>
  986. </p>
  987. </valid>
  988. <valid>
  989. <p>
  990. <c/>
  991. </p>
  992. </valid>
  993. <valid>
  994. <p>
  995. <d/>
  996. </p>
  997. </valid>
  998. <invalid>
  999. <b/>
  1000. </invalid>
  1001. <invalid>
  1002. <c/>
  1003. </invalid>
  1004. <invalid>
  1005. <d/>
  1006. </invalid>
  1007. <invalid>
  1008. <p>
  1009. <b/>
  1010. <c/>
  1011. </p>
  1012. </invalid>
  1013. <invalid>
  1014. <p>
  1015. <d/>
  1016. <c/>
  1017. </p>
  1018. </invalid>
  1019. </testCase>
  1020. <testCase>
  1021. <resource name="dbk.rng">
  1022. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1023. <start>
  1024. <ref name="p"/>
  1025. </start>
  1026. <define name="p.ext">
  1027. <notAllowed/>
  1028. </define>
  1029. <define name="p">
  1030. <element name="p">
  1031. <choice>
  1032. <ref name="p.ext"/>
  1033. <empty/>
  1034. <element name="a">
  1035. <text/>
  1036. </element>
  1037. </choice>
  1038. </element>
  1039. </define>
  1040. <define name="c">
  1041. <element name="c">
  1042. <empty/>
  1043. </element>
  1044. </define>
  1045. </grammar>
  1046. </resource>
  1047. <resource name="proof.rng">
  1048. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1049. <start>
  1050. <ref name="e"/>
  1051. </start>
  1052. <define name="d">
  1053. <element name="d">
  1054. <empty/>
  1055. </element>
  1056. </define>
  1057. <define name="e">
  1058. <element name="e">
  1059. <empty/>
  1060. </element>
  1061. </define>
  1062. <define name="f">
  1063. <element name="f">
  1064. <empty/>
  1065. </element>
  1066. </define>
  1067. </grammar>
  1068. </resource>
  1069. <correct>
  1070. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1071. <start>
  1072. <grammar>
  1073. <include href="dbk.rng"/>
  1074. <define name="p.ext" combine="choice">
  1075. <choice>
  1076. <ref name="c"/>
  1077. <grammar>
  1078. <include href="proof.rng"/>
  1079. <start combine="choice">
  1080. <ref name="d"/>
  1081. </start>
  1082. </grammar>
  1083. <element name="b">
  1084. <text/>
  1085. </element>
  1086. </choice>
  1087. </define>
  1088. </grammar>
  1089. </start>
  1090. <define name="g">
  1091. <element name="g">
  1092. <empty/>
  1093. </element>
  1094. </define>
  1095. </grammar>
  1096. </correct>
  1097. <valid>
  1098. <p/>
  1099. </valid>
  1100. <valid>
  1101. <p>
  1102. <a/>
  1103. </p>
  1104. </valid>
  1105. <valid>
  1106. <p>
  1107. <b/>
  1108. </p>
  1109. </valid>
  1110. <valid>
  1111. <p>
  1112. <c/>
  1113. </p>
  1114. </valid>
  1115. <valid>
  1116. <p>
  1117. <d/>
  1118. </p>
  1119. </valid>
  1120. <valid>
  1121. <p>
  1122. <e/>
  1123. </p>
  1124. </valid>
  1125. <invalid>
  1126. <p>
  1127. <f/>
  1128. </p>
  1129. </invalid>
  1130. <invalid>
  1131. <p>
  1132. <g/>
  1133. </p>
  1134. </invalid>
  1135. <invalid>
  1136. <b/>
  1137. </invalid>
  1138. <invalid>
  1139. <c/>
  1140. </invalid>
  1141. <invalid>
  1142. <d/>
  1143. </invalid>
  1144. <invalid>
  1145. <e/>
  1146. </invalid>
  1147. <invalid>
  1148. <f/>
  1149. </invalid>
  1150. <invalid>
  1151. <g/>
  1152. </invalid>
  1153. <invalid>
  1154. <p>
  1155. <d/>
  1156. <c/>
  1157. </p>
  1158. </invalid>
  1159. <invalid>
  1160. <p>
  1161. <d/>
  1162. <e/>
  1163. </p>
  1164. </invalid>
  1165. </testCase>
  1166. <testCase>
  1167. <resource name="dbk.rng">
  1168. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1169. <start>
  1170. <ref name="p"/>
  1171. </start>
  1172. <define name="p.ext">
  1173. <notAllowed/>
  1174. </define>
  1175. <define name="p">
  1176. <element name="p">
  1177. <choice>
  1178. <ref name="p.ext"/>
  1179. <empty/>
  1180. <element name="a">
  1181. <text/>
  1182. </element>
  1183. </choice>
  1184. </element>
  1185. </define>
  1186. <define name="c">
  1187. <element name="c">
  1188. <empty/>
  1189. </element>
  1190. </define>
  1191. </grammar>
  1192. </resource>
  1193. <resource name="proof.rng">
  1194. <grammar xmlns="http://relaxng.org/ns/structure/1.0"
  1195. ns="http://example.org/ns/proofsystem">
  1196. <start>
  1197. <ref name="e"/>
  1198. </start>
  1199. <define name="d">
  1200. <element name="d">
  1201. <empty/>
  1202. </element>
  1203. </define>
  1204. <define name="e">
  1205. <element name="e">
  1206. <empty/>
  1207. </element>
  1208. </define>
  1209. <define name="f">
  1210. <element name="f">
  1211. <empty/>
  1212. </element>
  1213. </define>
  1214. </grammar>
  1215. </resource>
  1216. <correct>
  1217. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1218. <start>
  1219. <grammar>
  1220. <include href="dbk.rng"/>
  1221. <define name="p.ext" combine="choice">
  1222. <choice>
  1223. <ref name="c"/>
  1224. <grammar>
  1225. <include href="proof.rng"/>
  1226. <start combine="choice">
  1227. <ref name="d"/>
  1228. </start>
  1229. </grammar>
  1230. <element name="b">
  1231. <text/>
  1232. </element>
  1233. </choice>
  1234. </define>
  1235. </grammar>
  1236. </start>
  1237. <define name="g">
  1238. <element name="g">
  1239. <empty/>
  1240. </element>
  1241. </define>
  1242. </grammar>
  1243. </correct>
  1244. <valid>
  1245. <p/>
  1246. </valid>
  1247. <valid>
  1248. <p>
  1249. <a/>
  1250. </p>
  1251. </valid>
  1252. <valid>
  1253. <p>
  1254. <b/>
  1255. </p>
  1256. </valid>
  1257. <valid>
  1258. <p>
  1259. <c/>
  1260. </p>
  1261. </valid>
  1262. <valid>
  1263. <p xmlns:p="http://example.org/ns/proofsystem">
  1264. <p:d/>
  1265. </p>
  1266. </valid>
  1267. <invalid>
  1268. <p>
  1269. <d/>
  1270. </p>
  1271. </invalid>
  1272. <valid>
  1273. <p xmlns:p="http://example.org/ns/proofsystem">
  1274. <p:e/>
  1275. </p>
  1276. </valid>
  1277. <invalid>
  1278. <p>
  1279. <e/>
  1280. </p>
  1281. </invalid>
  1282. <invalid>
  1283. <p xmlns:p="http://example.org/ns/proofsystem">
  1284. <p:f/>
  1285. </p>
  1286. </invalid>
  1287. <invalid>
  1288. <p>
  1289. <f/>
  1290. </p>
  1291. </invalid>
  1292. <invalid>
  1293. <p>
  1294. <g/>
  1295. </p>
  1296. </invalid>
  1297. <invalid>
  1298. <b/>
  1299. </invalid>
  1300. <invalid>
  1301. <c/>
  1302. </invalid>
  1303. <invalid>
  1304. <d/>
  1305. </invalid>
  1306. <invalid>
  1307. <e/>
  1308. </invalid>
  1309. <invalid>
  1310. <f/>
  1311. </invalid>
  1312. <invalid>
  1313. <g/>
  1314. </invalid>
  1315. <invalid>
  1316. <p xmlns:p="http://example.org/ns/proofsystem">
  1317. <p:d/>
  1318. <c/>
  1319. </p>
  1320. </invalid>
  1321. <invalid>
  1322. <p xmlns:p="http://example.org/ns/proofsystem">
  1323. <p:d/>
  1324. <p:e/>
  1325. </p>
  1326. </invalid>
  1327. </testCase>
  1328. <testCase>
  1329. <resource name="ext.rng">
  1330. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1331. <start>
  1332. <ref name="p"/>
  1333. </start>
  1334. <define name="p">
  1335. <element name="p">
  1336. <empty/>
  1337. </element>
  1338. </define>
  1339. </grammar>
  1340. </resource>
  1341. <correct>
  1342. <grammar xmlns="http://relaxng.org/ns/structure/1.0">
  1343. <start>
  1344. <element name="top">
  1345. <choice>
  1346. <ref name="include1"/>
  1347. <ref name="include2"/>
  1348. </choice>
  1349. </element>
  1350. </start>
  1351. <define name="include1">
  1352. <grammar>
  1353. <include href="ext.rng">
  1354. <start>
  1355. <element name="a">
  1356. <choice>
  1357. <empty/>
  1358. <ref name="p"/>
  1359. </choice>
  1360. </element>
  1361. </start>
  1362. </include>
  1363. </grammar>
  1364. </define>
  1365. <define name="include2">
  1366. <grammar>
  1367. <include href="ext.rng">
  1368. <start>
  1369. <element name="b">
  1370. <choice>
  1371. <empty/>
  1372. <ref name="p"/>
  1373. </choice>
  1374. </element>
  1375. </start>
  1376. </include>
  1377. </grammar>
  1378. </define>
  1379. </grammar>
  1380. </correct>
  1381. <invalid>
  1382. <top/>
  1383. </invalid>
  1384. <invalid>
  1385. <a/>
  1386. </invalid>
  1387. <invalid>
  1388. <b/>
  1389. </invalid>
  1390. <invalid>
  1391. <p/>
  1392. </invalid>
  1393. <valid>
  1394. <top>
  1395. <a/>
  1396. </top>
  1397. </valid>
  1398. <valid>
  1399. <top>
  1400. <b/>
  1401. </top>
  1402. </valid>
  1403. <valid>
  1404. <top>
  1405. <a>
  1406. <p/>
  1407. </a>
  1408. </top>
  1409. </valid>
  1410. <valid>
  1411. <top>
  1412. <b>
  1413. <p/>
  1414. </b>
  1415. </top>
  1416. </valid>
  1417. </testCase>
  1418. </testSuite>
  1419. <testSuite>
  1420. <documentation>Test of ID/IDREF</documentation>
  1421. <testCase>
  1422. <correct>
  1423. <element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
  1424. datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  1425. <zeroOrMore>
  1426. <choice>
  1427. <element name="ref">
  1428. <attribute name="id">
  1429. <data type="ID"/>
  1430. </attribute>
  1431. <text/>
  1432. </element>
  1433. <element name="xref">
  1434. <attribute name="link">
  1435. <data type="IDREF"/>
  1436. </attribute>
  1437. <text/>
  1438. </element>
  1439. </choice>
  1440. </zeroOrMore>
  1441. </element>
  1442. </correct>
  1443. <valid>
  1444. <top>
  1445. </top>
  1446. </valid>
  1447. <invalid>
  1448. <top>
  1449. <xref link="id1"/>
  1450. </top>
  1451. </invalid>
  1452. <valid>
  1453. <top>
  1454. <ref id="id1"/>
  1455. </top>
  1456. </valid>
  1457. <valid>
  1458. <top>
  1459. <xref link="id1"/>
  1460. <ref id="id1"/>
  1461. </top>
  1462. </valid>
  1463. <valid>
  1464. <top>
  1465. <xref link=" id1 "/>
  1466. <ref id=" id1 "/>
  1467. <xref link="id1 "/>
  1468. <xref link=" id1"/>
  1469. </top>
  1470. </valid>
  1471. <valid>
  1472. <top>
  1473. <ref id="id1"/>
  1474. <xref link="id1"/>
  1475. </top>
  1476. </valid>
  1477. <invalid>
  1478. <top>
  1479. <ref id="id1"/>
  1480. <ref id="id1"/>
  1481. </top>
  1482. </invalid>
  1483. </testCase>
  1484. <testCase>
  1485. <correct>
  1486. <element name="top" xmlns="http://relaxng.org/ns/structure/1.0"
  1487. datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  1488. <zeroOrMore>
  1489. <choice>
  1490. <element name="ref">
  1491. <attribute name="id">
  1492. <data type="ID"/>
  1493. </attribute>
  1494. <text/>
  1495. </element>
  1496. <element name="xref">
  1497. <attribute name="link">
  1498. <data type="IDREFS"/>
  1499. </attribute>
  1500. <text/>
  1501. </element>
  1502. </choice>
  1503. </zeroOrMore>
  1504. </element>
  1505. </correct>
  1506. <valid>
  1507. <top>
  1508. </top>
  1509. </valid>
  1510. <invalid>
  1511. <top>
  1512. <xref link="id1"/>
  1513. </top>
  1514. </invalid>
  1515. <valid>
  1516. <top>
  1517. <ref id="id1"/>
  1518. </top>
  1519. </valid>
  1520. <valid>
  1521. <top>
  1522. <xref link="id1"/>
  1523. <ref id="id1"/>
  1524. </top>
  1525. </valid>
  1526. <valid>
  1527. <top>
  1528. <xref link="id1 id1"/>
  1529. <ref id="id1"/>
  1530. </top>
  1531. </valid>
  1532. <valid>
  1533. <top>
  1534. <ref id="id1"/>
  1535. <xref link="id1"/>
  1536. </top>
  1537. </valid>
  1538. <valid>
  1539. <top>
  1540. <ref id="id2"/>
  1541. <xref link="id1 id2"/>
  1542. <ref id="id1"/>
  1543. </top>
  1544. </valid>
  1545. <valid>
  1546. <top>
  1547. <ref id="id2"/>
  1548. <xref link=" id2 id1 id2 "/>
  1549. <ref id="id1"/>
  1550. </top>
  1551. </valid>
  1552. <invalid>
  1553. <top>
  1554. <ref id="id2"/>
  1555. <xref link="id1 id2"/>
  1556. </top>
  1557. </invalid>
  1558. <invalid>
  1559. <top>
  1560. <xref link="id1 id2"/>
  1561. <ref id="id1"/>
  1562. </top>
  1563. </invalid>
  1564. <invalid>
  1565. <top>
  1566. <ref id="id1"/>
  1567. <ref id="id1"/>
  1568. </top>
  1569. </invalid>
  1570. </testCase>
  1571. </testSuite>
  1572. <testSuite>
  1573. <documentation>Test of ENTITY/ENTITIES</documentation>
  1574. <testCase>
  1575. <correct>
  1576. <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  1577. <data type="ENTITY"/>
  1578. </element>
  1579. </correct>
  1580. <invalid>
  1581. <doc></doc>
  1582. </invalid>
  1583. <invalid>
  1584. <doc>foo</doc>
  1585. </invalid>
  1586. <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
  1587. <doc>foo</doc>
  1588. </valid>
  1589. <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
  1590. <doc> foo </doc>
  1591. </valid>
  1592. <invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;&#10;]&gt;">
  1593. <doc>foo bar</doc>
  1594. </invalid>
  1595. </testCase>
  1596. <testCase>
  1597. <correct>
  1598. <element xmlns="http://relaxng.org/ns/structure/1.0" name="doc" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
  1599. <data type="ENTITIES"/>
  1600. </element>
  1601. </correct>
  1602. <invalid>
  1603. <doc></doc>
  1604. </invalid>
  1605. <invalid>
  1606. <doc>foo</doc>
  1607. </invalid>
  1608. <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
  1609. <doc> foo bar </doc>
  1610. </valid>
  1611. <valid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt; &#10;&lt;!ENTITY bar SYSTEM 'whatever' NDATA jpeg&gt; &#10;]&gt;">
  1612. <doc> foo bar foo</doc>
  1613. </valid>
  1614. <invalid dtd="&#10;&lt;!DOCTYPE doc [&#10;&lt;!ENTITY foo SYSTEM 'whatever' NDATA jpeg&gt;]&gt;">
  1615. <doc>foo bar</doc>
  1616. </invalid>
  1617. </testCase>
  1618. </testSuite>
  1619. <testSuite>
  1620. <documentation>Test of Mixed</documentation>
  1621. <testCase>
  1622. <correct>
  1623. <element name="mix" xmlns="http://relaxng.org/ns/structure/1.0">
  1624. <mixed>
  1625. <zeroOrMore>
  1626. <choice>
  1627. <element name="a">
  1628. <empty/>
  1629. </element>
  1630. <element name="b">
  1631. <empty/>
  1632. </element>
  1633. <element name="c">
  1634. <empty/>
  1635. </element>
  1636. </choice>
  1637. </zeroOrMore>
  1638. </mixed>
  1639. <element name="d">
  1640. <empty/>
  1641. </element>
  1642. </element>
  1643. </correct>
  1644. <valid>
  1645. <mix>
  1646. <d/>
  1647. </mix>
  1648. </valid>
  1649. <valid>
  1650. <mix>
  1651. <b/>
  1652. <a/>
  1653. <c/>
  1654. <b/>
  1655. <d/>
  1656. </mix>
  1657. </valid>
  1658. <valid>
  1659. <mix>
  1660. mixed
  1661. <c/>
  1662. <d/>
  1663. </mix>
  1664. </valid>
  1665. <valid>
  1666. <mix>
  1667. <c/>
  1668. mixed
  1669. <d/>
  1670. </mix>
  1671. </valid>
  1672. <valid>
  1673. <mix>
  1674. <b/>
  1675. is
  1676. <a/>
  1677. inter
  1678. <c/>
  1679. mixed
  1680. <b/>
  1681. <d/>
  1682. </mix>
  1683. </valid>
  1684. <valid>
  1685. <mix>
  1686. mixed
  1687. <b/>
  1688. .
  1689. <d/>
  1690. </mix>
  1691. </valid>
  1692. <valid>
  1693. <mix>
  1694. this
  1695. <b/>
  1696. is
  1697. <a/>
  1698. inter
  1699. <c/>
  1700. mixed
  1701. <b/>
  1702. .
  1703. <d/>
  1704. </mix>
  1705. </valid>
  1706. </testCase>
  1707. </testSuite>
  1708. </testSuite>