magic_xml 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (287) hide show
  1. data/README +22 -0
  2. data/Rakefile +52 -0
  3. data/VERSION +1 -0
  4. data/doc/classes/Array.html +148 -0
  5. data/doc/classes/File.html +113 -0
  6. data/doc/classes/Hash.html +117 -0
  7. data/doc/classes/Patterns_all.html +145 -0
  8. data/doc/classes/Patterns_any.html +145 -0
  9. data/doc/classes/String.html +470 -0
  10. data/doc/classes/Symbol.html +145 -0
  11. data/doc/classes/XML.html +1881 -0
  12. data/doc/classes/XML_Comment.html +148 -0
  13. data/doc/classes/XML_PI.html +145 -0
  14. data/doc/classes/XML_Tests.html +1727 -0
  15. data/doc/files/magic_xml_rb.html +186 -0
  16. data/doc/files/simple_examples/xml_hello_f_rb.html +88 -0
  17. data/doc/files/simple_examples/xml_hello_m_rb.html +88 -0
  18. data/doc/files/simple_examples/xml_list_f_rb.html +88 -0
  19. data/doc/files/simple_examples/xml_list_m_rb.html +88 -0
  20. data/doc/files/tests_rb.html +94 -0
  21. data/doc/files/xquery_use_cases/parts/q1_rb.html +117 -0
  22. data/doc/files/xquery_use_cases/rdb/q10_rb.html +88 -0
  23. data/doc/files/xquery_use_cases/rdb/q11_rb.html +88 -0
  24. data/doc/files/xquery_use_cases/rdb/q12_rb.html +88 -0
  25. data/doc/files/xquery_use_cases/rdb/q13_rb.html +88 -0
  26. data/doc/files/xquery_use_cases/rdb/q14_rb.html +88 -0
  27. data/doc/files/xquery_use_cases/rdb/q15_rb.html +88 -0
  28. data/doc/files/xquery_use_cases/rdb/q16_rb.html +88 -0
  29. data/doc/files/xquery_use_cases/rdb/q17_rb.html +88 -0
  30. data/doc/files/xquery_use_cases/rdb/q18_rb.html +88 -0
  31. data/doc/files/xquery_use_cases/rdb/q1_rb.html +88 -0
  32. data/doc/files/xquery_use_cases/rdb/q2_rb.html +88 -0
  33. data/doc/files/xquery_use_cases/rdb/q3_rb.html +88 -0
  34. data/doc/files/xquery_use_cases/rdb/q4_rb.html +88 -0
  35. data/doc/files/xquery_use_cases/rdb/q5_rb.html +88 -0
  36. data/doc/files/xquery_use_cases/rdb/q6_rb.html +88 -0
  37. data/doc/files/xquery_use_cases/rdb/q7_rb.html +88 -0
  38. data/doc/files/xquery_use_cases/rdb/q8_rb.html +88 -0
  39. data/doc/files/xquery_use_cases/rdb/q9_rb.html +88 -0
  40. data/doc/files/xquery_use_cases/seq/q1_rb.html +88 -0
  41. data/doc/files/xquery_use_cases/seq/q2_rb.html +88 -0
  42. data/doc/files/xquery_use_cases/seq/q3_rb.html +88 -0
  43. data/doc/files/xquery_use_cases/seq/q4_rb.html +88 -0
  44. data/doc/files/xquery_use_cases/seq/q5_rb.html +88 -0
  45. data/doc/files/xquery_use_cases/sgml/q10_rb.html +88 -0
  46. data/doc/files/xquery_use_cases/sgml/q1_rb.html +88 -0
  47. data/doc/files/xquery_use_cases/sgml/q2_rb.html +88 -0
  48. data/doc/files/xquery_use_cases/sgml/q3_rb.html +88 -0
  49. data/doc/files/xquery_use_cases/sgml/q4_rb.html +88 -0
  50. data/doc/files/xquery_use_cases/sgml/q5_rb.html +88 -0
  51. data/doc/files/xquery_use_cases/sgml/q6_rb.html +88 -0
  52. data/doc/files/xquery_use_cases/sgml/q7_rb.html +88 -0
  53. data/doc/files/xquery_use_cases/sgml/q8a_rb.html +88 -0
  54. data/doc/files/xquery_use_cases/sgml/q8b_rb.html +88 -0
  55. data/doc/files/xquery_use_cases/sgml/q9_rb.html +88 -0
  56. data/doc/files/xquery_use_cases/solution_sizes_rb.html +88 -0
  57. data/doc/files/xquery_use_cases/string/q1_rb.html +88 -0
  58. data/doc/files/xquery_use_cases/string/q2_rb.html +93 -0
  59. data/doc/files/xquery_use_cases/string/q4_rb.html +88 -0
  60. data/doc/files/xquery_use_cases/string/q5_rb.html +88 -0
  61. data/doc/files/xquery_use_cases/test_driver_rb.html +92 -0
  62. data/doc/files/xquery_use_cases/tree/q1_rb.html +111 -0
  63. data/doc/files/xquery_use_cases/tree/q2_rb.html +88 -0
  64. data/doc/files/xquery_use_cases/tree/q3_rb.html +88 -0
  65. data/doc/files/xquery_use_cases/tree/q4_rb.html +88 -0
  66. data/doc/files/xquery_use_cases/tree/q5_rb.html +88 -0
  67. data/doc/files/xquery_use_cases/tree/q6_rb.html +113 -0
  68. data/doc/files/xquery_use_cases/xmp/q10_rb.html +88 -0
  69. data/doc/files/xquery_use_cases/xmp/q11_rb.html +88 -0
  70. data/doc/files/xquery_use_cases/xmp/q12_rb.html +88 -0
  71. data/doc/files/xquery_use_cases/xmp/q1_rb.html +88 -0
  72. data/doc/files/xquery_use_cases/xmp/q2_rb.html +88 -0
  73. data/doc/files/xquery_use_cases/xmp/q3_rb.html +88 -0
  74. data/doc/files/xquery_use_cases/xmp/q4_rb.html +88 -0
  75. data/doc/files/xquery_use_cases/xmp/q5_rb.html +92 -0
  76. data/doc/files/xquery_use_cases/xmp/q6_rb.html +88 -0
  77. data/doc/files/xquery_use_cases/xmp/q7_rb.html +88 -0
  78. data/doc/files/xquery_use_cases/xmp/q8_rb.html +88 -0
  79. data/doc/files/xquery_use_cases/xmp/q9_rb.html +88 -0
  80. data/doc/fr_class_index.html +56 -0
  81. data/doc/fr_file_index.html +110 -0
  82. data/doc/fr_method_index.html +159 -0
  83. data/doc/index.html +26 -0
  84. data/doc/rdoc-style.css +175 -0
  85. data/lib/magic_xml.rb +1400 -0
  86. data/simple_examples/README +14 -0
  87. data/simple_examples/xml_hello_f.rb +32 -0
  88. data/simple_examples/xml_hello_m.rb +32 -0
  89. data/simple_examples/xml_list_f.rb +36 -0
  90. data/simple_examples/xml_list_m.rb +36 -0
  91. data/test/helper.rb +9 -0
  92. data/test/test_magic_xml.rb +855 -0
  93. data/xquery_use_cases/README +17 -0
  94. data/xquery_use_cases/parts/README +12 -0
  95. data/xquery_use_cases/parts/partlist.xml +13 -0
  96. data/xquery_use_cases/parts/q1.out +16 -0
  97. data/xquery_use_cases/parts/q1.rb +38 -0
  98. data/xquery_use_cases/parts/q1.xquery +18 -0
  99. data/xquery_use_cases/rdb/README +50 -0
  100. data/xquery_use_cases/rdb/bids.xml +81 -0
  101. data/xquery_use_cases/rdb/items.xml +57 -0
  102. data/xquery_use_cases/rdb/q1.out +10 -0
  103. data/xquery_use_cases/rdb/q1.rb +31 -0
  104. data/xquery_use_cases/rdb/q1.xquery +14 -0
  105. data/xquery_use_cases/rdb/q10.out +27 -0
  106. data/xquery_use_cases/rdb/q10.rb +37 -0
  107. data/xquery_use_cases/rdb/q10.xquery +15 -0
  108. data/xquery_use_cases/rdb/q11.out +7 -0
  109. data/xquery_use_cases/rdb/q11.rb +38 -0
  110. data/xquery_use_cases/rdb/q11.xquery +15 -0
  111. data/xquery_use_cases/rdb/q12.out +12 -0
  112. data/xquery_use_cases/rdb/q12.rb +42 -0
  113. data/xquery_use_cases/rdb/q12.xquery +28 -0
  114. data/xquery_use_cases/rdb/q13.out +32 -0
  115. data/xquery_use_cases/rdb/q13.rb +45 -0
  116. data/xquery_use_cases/rdb/q13.xquery +15 -0
  117. data/xquery_use_cases/rdb/q14.out +14 -0
  118. data/xquery_use_cases/rdb/q14.rb +42 -0
  119. data/xquery_use_cases/rdb/q14.xquery +14 -0
  120. data/xquery_use_cases/rdb/q15.out +5 -0
  121. data/xquery_use_cases/rdb/q15.rb +31 -0
  122. data/xquery_use_cases/rdb/q15.xquery +9 -0
  123. data/xquery_use_cases/rdb/q16.out +35 -0
  124. data/xquery_use_cases/rdb/q16.rb +35 -0
  125. data/xquery_use_cases/rdb/q16.xquery +17 -0
  126. data/xquery_use_cases/rdb/q17.out +1 -0
  127. data/xquery_use_cases/rdb/q17.rb +35 -0
  128. data/xquery_use_cases/rdb/q17.xquery +11 -0
  129. data/xquery_use_cases/rdb/q18.out +32 -0
  130. data/xquery_use_cases/rdb/q18.rb +40 -0
  131. data/xquery_use_cases/rdb/q18.xquery +19 -0
  132. data/xquery_use_cases/rdb/q2.out +22 -0
  133. data/xquery_use_cases/rdb/q2.rb +36 -0
  134. data/xquery_use_cases/rdb/q2.xquery +14 -0
  135. data/xquery_use_cases/rdb/q3.out +8 -0
  136. data/xquery_use_cases/rdb/q3.rb +34 -0
  137. data/xquery_use_cases/rdb/q3.xquery +16 -0
  138. data/xquery_use_cases/rdb/q4.out +14 -0
  139. data/xquery_use_cases/rdb/q4.rb +31 -0
  140. data/xquery_use_cases/rdb/q4.xquery +11 -0
  141. data/xquery_use_cases/rdb/q5.out +12 -0
  142. data/xquery_use_cases/rdb/q5.rb +46 -0
  143. data/xquery_use_cases/rdb/q5.xquery +25 -0
  144. data/xquery_use_cases/rdb/q6.out +14 -0
  145. data/xquery_use_cases/rdb/q6.rb +38 -0
  146. data/xquery_use_cases/rdb/q6.xquery +15 -0
  147. data/xquery_use_cases/rdb/q7.out +1 -0
  148. data/xquery_use_cases/rdb/q7.rb +30 -0
  149. data/xquery_use_cases/rdb/q7.xquery +10 -0
  150. data/xquery_use_cases/rdb/q8.out +1 -0
  151. data/xquery_use_cases/rdb/q8.rb +23 -0
  152. data/xquery_use_cases/rdb/q8.xquery +8 -0
  153. data/xquery_use_cases/rdb/q9.out +22 -0
  154. data/xquery_use_cases/rdb/q9.rb +32 -0
  155. data/xquery_use_cases/rdb/q9.xquery +16 -0
  156. data/xquery_use_cases/rdb/users.xml +25 -0
  157. data/xquery_use_cases/seq/README +12 -0
  158. data/xquery_use_cases/seq/q1.out +1 -0
  159. data/xquery_use_cases/seq/q1.rb +25 -0
  160. data/xquery_use_cases/seq/q1.xquery +2 -0
  161. data/xquery_use_cases/seq/q2.out +2 -0
  162. data/xquery_use_cases/seq/q2.rb +25 -0
  163. data/xquery_use_cases/seq/q2.xquery +2 -0
  164. data/xquery_use_cases/seq/q3.out +2 -0
  165. data/xquery_use_cases/seq/q3.rb +26 -0
  166. data/xquery_use_cases/seq/q3.xquery +3 -0
  167. data/xquery_use_cases/seq/q4.out +0 -0
  168. data/xquery_use_cases/seq/q4.rb +27 -0
  169. data/xquery_use_cases/seq/q4.xquery +4 -0
  170. data/xquery_use_cases/seq/q5.out +5 -0
  171. data/xquery_use_cases/seq/q5.rb +29 -0
  172. data/xquery_use_cases/seq/q5.xquery +10 -0
  173. data/xquery_use_cases/seq/report1.xml +40 -0
  174. data/xquery_use_cases/sgml/README +53 -0
  175. data/xquery_use_cases/sgml/q1.out +44 -0
  176. data/xquery_use_cases/sgml/q1.rb +23 -0
  177. data/xquery_use_cases/sgml/q1.xquery +5 -0
  178. data/xquery_use_cases/sgml/q10.out +1 -0
  179. data/xquery_use_cases/sgml/q10.rb +28 -0
  180. data/xquery_use_cases/sgml/q10.xquery +7 -0
  181. data/xquery_use_cases/sgml/q2.out +26 -0
  182. data/xquery_use_cases/sgml/q2.rb +23 -0
  183. data/xquery_use_cases/sgml/q2.xquery +5 -0
  184. data/xquery_use_cases/sgml/q3.out +6 -0
  185. data/xquery_use_cases/sgml/q3.rb +28 -0
  186. data/xquery_use_cases/sgml/q3.xquery +7 -0
  187. data/xquery_use_cases/sgml/q4.out +4 -0
  188. data/xquery_use_cases/sgml/q4.rb +25 -0
  189. data/xquery_use_cases/sgml/q4.xquery +5 -0
  190. data/xquery_use_cases/sgml/q5.out +3 -0
  191. data/xquery_use_cases/sgml/q5.rb +23 -0
  192. data/xquery_use_cases/sgml/q5.xquery +5 -0
  193. data/xquery_use_cases/sgml/q6.out +1 -0
  194. data/xquery_use_cases/sgml/q6.rb +27 -0
  195. data/xquery_use_cases/sgml/q6.xquery +6 -0
  196. data/xquery_use_cases/sgml/q7.out +1 -0
  197. data/xquery_use_cases/sgml/q7.rb +27 -0
  198. data/xquery_use_cases/sgml/q7.xquery +7 -0
  199. data/xquery_use_cases/sgml/q8a.out +34 -0
  200. data/xquery_use_cases/sgml/q8a.rb +27 -0
  201. data/xquery_use_cases/sgml/q8a.xquery +5 -0
  202. data/xquery_use_cases/sgml/q8b.out +26 -0
  203. data/xquery_use_cases/sgml/q8b.rb +32 -0
  204. data/xquery_use_cases/sgml/q8b.xquery +5 -0
  205. data/xquery_use_cases/sgml/q9.out +9 -0
  206. data/xquery_use_cases/sgml/q9.rb +29 -0
  207. data/xquery_use_cases/sgml/q9.xquery +6 -0
  208. data/xquery_use_cases/sgml/sgml.xml +101 -0
  209. data/xquery_use_cases/solution_sizes.rb +48 -0
  210. data/xquery_use_cases/string/README +29 -0
  211. data/xquery_use_cases/string/company-data.xml +20 -0
  212. data/xquery_use_cases/string/q1.out +4 -0
  213. data/xquery_use_cases/string/q1.rb +25 -0
  214. data/xquery_use_cases/string/q1.xquery +1 -0
  215. data/xquery_use_cases/string/q2.out +13 -0
  216. data/xquery_use_cases/string/q2.rb +32 -0
  217. data/xquery_use_cases/string/q2.xquery +23 -0
  218. data/xquery_use_cases/string/q4.out +50 -0
  219. data/xquery_use_cases/string/q4.rb +34 -0
  220. data/xquery_use_cases/string/q4.xquery +14 -0
  221. data/xquery_use_cases/string/q5.out +12 -0
  222. data/xquery_use_cases/string/q5.rb +33 -0
  223. data/xquery_use_cases/string/q5.xquery +8 -0
  224. data/xquery_use_cases/string/string.xml +82 -0
  225. data/xquery_use_cases/test_driver.rb +60 -0
  226. data/xquery_use_cases/tree/README +23 -0
  227. data/xquery_use_cases/tree/book.xml +50 -0
  228. data/xquery_use_cases/tree/q1.out +23 -0
  229. data/xquery_use_cases/tree/q1.rb +31 -0
  230. data/xquery_use_cases/tree/q1.xquery +14 -0
  231. data/xquery_use_cases/tree/q2.out +11 -0
  232. data/xquery_use_cases/tree/q2.rb +27 -0
  233. data/xquery_use_cases/tree/q2.xquery +10 -0
  234. data/xquery_use_cases/tree/q3.out +2 -0
  235. data/xquery_use_cases/tree/q3.rb +26 -0
  236. data/xquery_use_cases/tree/q3.xquery +2 -0
  237. data/xquery_use_cases/tree/q4.out +1 -0
  238. data/xquery_use_cases/tree/q4.rb +23 -0
  239. data/xquery_use_cases/tree/q4.xquery +5 -0
  240. data/xquery_use_cases/tree/q5.out +9 -0
  241. data/xquery_use_cases/tree/q5.rb +30 -0
  242. data/xquery_use_cases/tree/q5.xquery +8 -0
  243. data/xquery_use_cases/tree/q6.out +30 -0
  244. data/xquery_use_cases/tree/q6.rb +35 -0
  245. data/xquery_use_cases/tree/q6.xquery +21 -0
  246. data/xquery_use_cases/xmp/README +41 -0
  247. data/xquery_use_cases/xmp/bib.xml +35 -0
  248. data/xquery_use_cases/xmp/books.xml +15 -0
  249. data/xquery_use_cases/xmp/prices.xml +32 -0
  250. data/xquery_use_cases/xmp/q1.out +8 -0
  251. data/xquery_use_cases/xmp/q1.rb +29 -0
  252. data/xquery_use_cases/xmp/q1.xquery +10 -0
  253. data/xquery_use_cases/xmp/q10.out +11 -0
  254. data/xquery_use_cases/xmp/q10.rb +36 -0
  255. data/xquery_use_cases/xmp/q10.xquery +11 -0
  256. data/xquery_use_cases/xmp/q11.out +35 -0
  257. data/xquery_use_cases/xmp/q11.rb +37 -0
  258. data/xquery_use_cases/xmp/q11.xquery +18 -0
  259. data/xquery_use_cases/xmp/q12.out +6 -0
  260. data/xquery_use_cases/xmp/q12.rb +35 -0
  261. data/xquery_use_cases/xmp/q12.xquery +20 -0
  262. data/xquery_use_cases/xmp/q2.out +37 -0
  263. data/xquery_use_cases/xmp/q2.rb +30 -0
  264. data/xquery_use_cases/xmp/q2.xquery +12 -0
  265. data/xquery_use_cases/xmp/q3.out +34 -0
  266. data/xquery_use_cases/xmp/q3.rb +27 -0
  267. data/xquery_use_cases/xmp/q3.xquery +10 -0
  268. data/xquery_use_cases/xmp/q4.out +31 -0
  269. data/xquery_use_cases/xmp/q4.rb +44 -0
  270. data/xquery_use_cases/xmp/q4.xquery +21 -0
  271. data/xquery_use_cases/xmp/q5.out +17 -0
  272. data/xquery_use_cases/xmp/q5.rb +38 -0
  273. data/xquery_use_cases/xmp/q5.xquery +13 -0
  274. data/xquery_use_cases/xmp/q6.out +28 -0
  275. data/xquery_use_cases/xmp/q6.rb +33 -0
  276. data/xquery_use_cases/xmp/q6.xquery +19 -0
  277. data/xquery_use_cases/xmp/q7.out +8 -0
  278. data/xquery_use_cases/xmp/q7.rb +30 -0
  279. data/xquery_use_cases/xmp/q7.xquery +12 -0
  280. data/xquery_use_cases/xmp/q8.out +7 -0
  281. data/xquery_use_cases/xmp/q8.rb +29 -0
  282. data/xquery_use_cases/xmp/q8.xquery +9 -0
  283. data/xquery_use_cases/xmp/q9.out +4 -0
  284. data/xquery_use_cases/xmp/q9.rb +29 -0
  285. data/xquery_use_cases/xmp/q9.xquery +7 -0
  286. data/xquery_use_cases/xmp/reviews.xml +24 -0
  287. metadata +342 -0
@@ -0,0 +1,50 @@
1
+ <?xml version="1.0"?>
2
+ <!DOCTYPE book SYSTEM "book.dtd">
3
+ <book>
4
+ <title>Data on the Web</title>
5
+ <author>Serge Abiteboul</author>
6
+ <author>Peter Buneman</author>
7
+ <author>Dan Suciu</author>
8
+ <section id="intro" difficulty="easy" >
9
+ <title>Introduction</title>
10
+ <p>Text ... </p>
11
+ <section>
12
+ <title>Audience</title>
13
+ <p>Text ... </p>
14
+ </section>
15
+ <section>
16
+ <title>Web Data and the Two Cultures</title>
17
+ <p>Text ... </p>
18
+ <figure height="400" width="400">
19
+ <title>Traditional client/server architecture</title>
20
+ <image source="csarch.gif"/>
21
+ </figure>
22
+ <p>Text ... </p>
23
+ </section>
24
+ </section>
25
+ <section id="syntax" difficulty="medium" >
26
+ <title>A Syntax For Data</title>
27
+ <p>Text ... </p>
28
+ <figure height="200" width="500">
29
+ <title>Graph representations of structures</title>
30
+ <image source="graphs.gif"/>
31
+ </figure>
32
+ <p>Text ... </p>
33
+ <section>
34
+ <title>Base Types</title>
35
+ <p>Text ... </p>
36
+ </section>
37
+ <section>
38
+ <title>Representing Relational Databases</title>
39
+ <p>Text ... </p>
40
+ <figure height="250" width="400">
41
+ <title>Examples of Relations</title>
42
+ <image source="relations.gif"/>
43
+ </figure>
44
+ </section>
45
+ <section>
46
+ <title>Representing Object Databases</title>
47
+ <p>Text ... </p>
48
+ </section>
49
+ </section>
50
+ </book>
@@ -0,0 +1,23 @@
1
+ <toc>
2
+ <section id="intro" difficulty="easy">
3
+ <title>Introduction</title>
4
+ <section>
5
+ <title>Audience</title>
6
+ </section>
7
+ <section>
8
+ <title>Web Data and the Two Cultures</title>
9
+ </section>
10
+ </section>
11
+ <section id="syntax" difficulty="medium">
12
+ <title>A Syntax For Data</title>
13
+ <section>
14
+ <title>Base Types</title>
15
+ </section>
16
+ <section>
17
+ <title>Representing Relational Databases</title>
18
+ </section>
19
+ <section>
20
+ <title>Representing Object Databases</title>
21
+ </section>
22
+ </section>
23
+ </toc>
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ def local_toc(node)
24
+ node.children(:section).map{|c|
25
+ XML.section(c.attrs, c.child(:title), local_toc(c))
26
+ }
27
+ end
28
+
29
+ XML.toc! {
30
+ add! local_toc(XML.load('book.xml'))
31
+ }
@@ -0,0 +1,14 @@
1
+ declare function local:toc($book-or-section as element()) as element()*
2
+ {
3
+ for $section in $book-or-section/section
4
+ return
5
+ <section>
6
+ { $section/@* , $section/title , local:toc($section) }
7
+ </section>
8
+ };
9
+
10
+ <toc>
11
+ {
12
+ for $s in doc("book.xml")/book return local:toc($s)
13
+ }
14
+ </toc>
@@ -0,0 +1,11 @@
1
+ <figlist>
2
+ <figure height="400" width="400">
3
+ <title>Traditional client/server architecture</title>
4
+ </figure>
5
+ <figure height="200" width="500">
6
+ <title>Graph representations of structures</title>
7
+ </figure>
8
+ <figure height="250" width ="400">
9
+ <title>Examples of Relations</title>
10
+ </figure>
11
+ </figlist>
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ XML.figlist! {
24
+ XML.load('book.xml').descendants(:figure) {|f|
25
+ figure!(f.attrs, f.children(:title))
26
+ }
27
+ }
@@ -0,0 +1,10 @@
1
+ <figlist>
2
+ {
3
+ for $f in doc("book.xml")//figure
4
+ return
5
+ <figure>
6
+ { $f/@* }
7
+ { $f/title }
8
+ </figure>
9
+ }
10
+ </figlist>
@@ -0,0 +1,2 @@
1
+ <section_count>7</section_count>
2
+ <figure_count>3</figure_count>
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ doc = XML.load('book.xml')
24
+
25
+ XML.section_count!(doc.descendants(:section).size)
26
+ XML.figure_count!(doc.descendants(:figure).size)
@@ -0,0 +1,2 @@
1
+ <section_count>{ count(doc("book.xml")//section) }</section_count>,
2
+ <figure_count>{ count(doc("book.xml")//figure) }</figure_count>
@@ -0,0 +1 @@
1
+ <top_section_count>2</top_section_count>
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ XML.top_section_count!(XML.load('book.xml').children(:section).size)
@@ -0,0 +1,5 @@
1
+ <top_section_count>
2
+ {
3
+ count(doc("book.xml")/book/section)
4
+ }
5
+ </top_section_count>
@@ -0,0 +1,9 @@
1
+ <section_list>
2
+ <section title="Introduction" figcount="0"/>
3
+ <section title="Audience" figcount="0"/>
4
+ <section title="Web Data and the Two Cultures" figcount="1"/>
5
+ <section title="A Syntax For Data" figcount="1"/>
6
+ <section title="Base Types" figcount="0"/>
7
+ <section title="Representing Relational Databases" figcount="1"/>
8
+ <section title="Representing Object Databases" figcount="0"/>
9
+ </section_list>
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ XML.section_list! {
24
+ XML.load('book.xml').descendants(:section) {|s|
25
+ section!({
26
+ :title => s[:@title],
27
+ :figcount => s.children(:figure).size,
28
+ })
29
+ }
30
+ }
@@ -0,0 +1,8 @@
1
+ <section_list>
2
+ {
3
+ for $s in doc("book.xml")//section
4
+ let $f := $s/figure
5
+ return
6
+ <section title="{ $s/title/text() }" figcount="{ count($f) }"/>
7
+ }
8
+ </section_list>
@@ -0,0 +1,30 @@
1
+ <toc>
2
+ <section id="intro" difficulty="easy">
3
+ <title>Introduction</title>
4
+ <figcount>0</figcount>
5
+ <section>
6
+ <title>Audience</title>
7
+ <figcount>0</figcount>
8
+ </section>
9
+ <section>
10
+ <title>Web Data and the Two Cultures</title>
11
+ <figcount>1</figcount>
12
+ </section>
13
+ </section>
14
+ <section id="syntax" difficulty="medium">
15
+ <title>A Syntax For Data</title>
16
+ <figcount>1</figcount>
17
+ <section>
18
+ <title>Base Types</title>
19
+ <figcount>0</figcount>
20
+ </section>
21
+ <section>
22
+ <title>Representing Relational Databases</title>
23
+ <figcount>1</figcount>
24
+ </section>
25
+ <section>
26
+ <title>Representing Object Databases</title>
27
+ <figcount>0</figcount>
28
+ </section>
29
+ </section>
30
+ </toc>
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ def section_summary(s)
24
+ XML.section(s.attrs) {
25
+ add! s.child(:title)
26
+ figcount! s.children(:figure).size
27
+ add! s.children(:section).map{|c| section_summary(c)}
28
+ }
29
+ end
30
+
31
+ XML.toc! {
32
+ XML.load('book.xml').children(:section) {|s|
33
+ add! section_summary(s)
34
+ }
35
+ }
@@ -0,0 +1,21 @@
1
+ declare function local:section-summary($book-or-section as element()*)
2
+ as element()*
3
+ {
4
+ for $section in $book-or-section
5
+ return
6
+ <section>
7
+ { $section/@* }
8
+ { $section/title }
9
+ <figcount>
10
+ { count($section/figure) }
11
+ </figcount>
12
+ { local:section-summary($section/section) }
13
+ </section>
14
+ };
15
+
16
+ <toc>
17
+ {
18
+ for $s in doc("book.xml")/book/section
19
+ return local:section-summary($s)
20
+ }
21
+ </toc>
@@ -0,0 +1,41 @@
1
+ Use Case "XMP": Experiences and Exemplars
2
+ from XML Query Use Cases.
3
+
4
+ Source: http://www.w3.org/TR/xquery-use-cases/#xmp
5
+
6
+ Q1 - List books published by Addison-Wesley after 1991,
7
+ including their year and title.
8
+ Q2 - Create a flat list of all the title-author pairs,
9
+ with each pair enclosed in a "result" element.
10
+ Q3 - For each book in the bibliography, list the title and
11
+ authors, grouped inside a "result" element.
12
+ Q4 - For each author in the bibliography, list the author's
13
+ name and the titles of all books by that author,
14
+ grouped inside a "result" element.
15
+ Q5 - For each book found at both bstore1.example.com and
16
+ bstore2.example.com, list the title of the book and
17
+ its price from each source.
18
+ Q6 - For each book that has at least one author, list the
19
+ title and first two authors, and an empty "et-al"
20
+ element if the book has additional authors.
21
+ Q7 - List the titles and years of all books published
22
+ by Addison-Wesley after 1991, in alphabetic order.
23
+ Q8 - Find books in which the name of some element ends
24
+ with the string "or" and the same element contains
25
+ the string "Suciu" somewhere in its content.
26
+ For each such book, return the title and the qualifying element.
27
+ Q9 - In the document "books.xml", find all section or chapter
28
+ titles that contain the word "XML", regardless of the
29
+ level of nesting.
30
+ Q10 - In the document "prices.xml", find the minimum price
31
+ for each book, in the form of a "minprice" element
32
+ with the book title as its title attribute.
33
+ Q11 - For each book with an author, return the book with
34
+ its title and authors. For each book with an editor,
35
+ return a reference with the book title and the editor's affiliation.
36
+ Q12 - Find pairs of books that have different titles but
37
+ the same set of authors (possibly in a different order).
38
+
39
+ magic/xml solutions more or less follow XQuery solutions,
40
+ with significant changes only where naive translation
41
+ would result in very cumbersome code.
@@ -0,0 +1,35 @@
1
+ <bib>
2
+ <book year="1994">
3
+ <title>TCP/IP Illustrated</title>
4
+ <author><last>Stevens</last><first>W.</first></author>
5
+ <publisher>Addison-Wesley</publisher>
6
+ <price>65.95</price>
7
+ </book>
8
+
9
+ <book year="1992">
10
+ <title>Advanced Programming in the Unix environment</title>
11
+ <author><last>Stevens</last><first>W.</first></author>
12
+ <publisher>Addison-Wesley</publisher>
13
+ <price>65.95</price>
14
+ </book>
15
+
16
+ <book year="2000">
17
+ <title>Data on the Web</title>
18
+ <author><last>Abiteboul</last><first>Serge</first></author>
19
+ <author><last>Buneman</last><first>Peter</first></author>
20
+ <author><last>Suciu</last><first>Dan</first></author>
21
+ <publisher>Morgan Kaufmann Publishers</publisher>
22
+ <price>39.95</price>
23
+ </book>
24
+
25
+ <book year="1999">
26
+ <title>The Economics of Technology and Content for Digital TV</title>
27
+ <editor>
28
+ <last>Gerbarg</last><first>Darcy</first>
29
+ <affiliation>CITI</affiliation>
30
+ </editor>
31
+ <publisher>Kluwer Academic Publishers</publisher>
32
+ <price>129.95</price>
33
+ </book>
34
+
35
+ </bib>
@@ -0,0 +1,15 @@
1
+ <chapter>
2
+ <title>Data Model</title>
3
+ <section>
4
+ <title>Syntax For Data Model</title>
5
+ </section>
6
+ <section>
7
+ <title>XML</title>
8
+ <section>
9
+ <title>Basic Syntax</title>
10
+ </section>
11
+ <section>
12
+ <title>XML and Semistructured Data</title>
13
+ </section>
14
+ </section>
15
+ </chapter>
@@ -0,0 +1,32 @@
1
+ <prices>
2
+ <book>
3
+ <title>Advanced Programming in the Unix environment</title>
4
+ <source>bstore2.example.com</source>
5
+ <price>65.95</price>
6
+ </book>
7
+ <book>
8
+ <title>Advanced Programming in the Unix environment</title>
9
+ <source>bstore1.example.com</source>
10
+ <price>65.95</price>
11
+ </book>
12
+ <book>
13
+ <title>TCP/IP Illustrated</title>
14
+ <source>bstore2.example.com</source>
15
+ <price>65.95</price>
16
+ </book>
17
+ <book>
18
+ <title>TCP/IP Illustrated</title>
19
+ <source>bstore1.example.com</source>
20
+ <price>65.95</price>
21
+ </book>
22
+ <book>
23
+ <title>Data on the Web</title>
24
+ <source>bstore2.example.com</source>
25
+ <price>34.95</price>
26
+ </book>
27
+ <book>
28
+ <title>Data on the Web</title>
29
+ <source>bstore1.example.com</source>
30
+ <price>39.95</price>
31
+ </book>
32
+ </prices>
@@ -0,0 +1,8 @@
1
+ <bib>
2
+ <book year="1994">
3
+ <title>TCP/IP Illustrated</title>
4
+ </book>
5
+ <book year="1992">
6
+ <title>Advanced Programming in the Unix environment</title>
7
+ </book>
8
+ </bib>
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ XML.bib! {
24
+ XML.load('bib.xml').children(:book) {|b|
25
+ if b[:@publisher] == "Addison-Wesley" and b[:year].to_i > 1991
26
+ book!({:year => b[:year]}, b.child(:title))
27
+ end
28
+ }
29
+ }
@@ -0,0 +1,10 @@
1
+ <bib>
2
+ {
3
+ for $b in doc("http://bstore1.example.com/bib.xml")/bib/book
4
+ where $b/publisher = "Addison-Wesley" and $b/@year > 1991
5
+ return
6
+ <book year="{ $b/@year }">
7
+ { $b/title }
8
+ </book>
9
+ }
10
+ </bib>
@@ -0,0 +1,11 @@
1
+ <results>
2
+ <minprice title="Advanced Programming in the Unix environment">
3
+ <price>65.95</price>
4
+ </minprice>
5
+ <minprice title="TCP/IP Illustrated">
6
+ <price>65.95</price>
7
+ </minprice>
8
+ <minprice title="Data on the Web">
9
+ <price>34.95</price>
10
+ </minprice>
11
+ </results>
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/ruby -I../.. -rmagic_xml
2
+ #Copyright (c) 2006-2007 Tomasz Wegrzanowski <Tomasz.Wegrzanowski@gmail.com>
3
+ #
4
+ #Permission is hereby granted, free of charge, to any person obtaining a
5
+ #copy of this software and associated documentation files (the "Software"),
6
+ #to deal in the Software without restriction, including without limitation
7
+ #the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
+ #and/or sell copies of the Software, and to permit persons to whom the
9
+ #Software is furnished to do so, subject to the following conditions:
10
+ #
11
+ #The above copyright notice and this permission notice shall be included in
12
+ #all copies or substantial portions of the Software.
13
+ #
14
+ #THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ #IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ #FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17
+ #THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
18
+ #OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19
+ #ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20
+ #DEALINGS IN THE SOFTWARE.
21
+
22
+
23
+ XML.results! {
24
+ doc = XML.load('prices.xml')
25
+ doc.children(:book).children(:title).map{|node| node.text}.uniq.each{|title|
26
+ minprice!({:title => title}) {
27
+ price! {
28
+ text! doc.children(:book).find_all{|book|
29
+ book[:@title] == title
30
+ }.map{|book|
31
+ book[:@price].to_f
32
+ }.min
33
+ }
34
+ }
35
+ }
36
+ }
@@ -0,0 +1,11 @@
1
+ <results>
2
+ {
3
+ let $doc := doc("prices.xml")
4
+ for $t in distinct-values($doc//book/title)
5
+ let $p := $doc//book[title = $t]/price
6
+ return
7
+ <minprice title="{ $t }">
8
+ <price>{ min($p) }</price>
9
+ </minprice>
10
+ }
11
+ </results>