magic_xml 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +22 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/doc/classes/Array.html +148 -0
- data/doc/classes/File.html +113 -0
- data/doc/classes/Hash.html +117 -0
- data/doc/classes/Patterns_all.html +145 -0
- data/doc/classes/Patterns_any.html +145 -0
- data/doc/classes/String.html +470 -0
- data/doc/classes/Symbol.html +145 -0
- data/doc/classes/XML.html +1881 -0
- data/doc/classes/XML_Comment.html +148 -0
- data/doc/classes/XML_PI.html +145 -0
- data/doc/classes/XML_Tests.html +1727 -0
- data/doc/files/magic_xml_rb.html +186 -0
- data/doc/files/simple_examples/xml_hello_f_rb.html +88 -0
- data/doc/files/simple_examples/xml_hello_m_rb.html +88 -0
- data/doc/files/simple_examples/xml_list_f_rb.html +88 -0
- data/doc/files/simple_examples/xml_list_m_rb.html +88 -0
- data/doc/files/tests_rb.html +94 -0
- data/doc/files/xquery_use_cases/parts/q1_rb.html +117 -0
- data/doc/files/xquery_use_cases/rdb/q10_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q11_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q12_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q13_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q14_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q15_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q16_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q17_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q18_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q1_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q2_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q3_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q5_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q6_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q7_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q8_rb.html +88 -0
- data/doc/files/xquery_use_cases/rdb/q9_rb.html +88 -0
- data/doc/files/xquery_use_cases/seq/q1_rb.html +88 -0
- data/doc/files/xquery_use_cases/seq/q2_rb.html +88 -0
- data/doc/files/xquery_use_cases/seq/q3_rb.html +88 -0
- data/doc/files/xquery_use_cases/seq/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/seq/q5_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q10_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q1_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q2_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q3_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q5_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q6_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q7_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q8a_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q8b_rb.html +88 -0
- data/doc/files/xquery_use_cases/sgml/q9_rb.html +88 -0
- data/doc/files/xquery_use_cases/solution_sizes_rb.html +88 -0
- data/doc/files/xquery_use_cases/string/q1_rb.html +88 -0
- data/doc/files/xquery_use_cases/string/q2_rb.html +93 -0
- data/doc/files/xquery_use_cases/string/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/string/q5_rb.html +88 -0
- data/doc/files/xquery_use_cases/test_driver_rb.html +92 -0
- data/doc/files/xquery_use_cases/tree/q1_rb.html +111 -0
- data/doc/files/xquery_use_cases/tree/q2_rb.html +88 -0
- data/doc/files/xquery_use_cases/tree/q3_rb.html +88 -0
- data/doc/files/xquery_use_cases/tree/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/tree/q5_rb.html +88 -0
- data/doc/files/xquery_use_cases/tree/q6_rb.html +113 -0
- data/doc/files/xquery_use_cases/xmp/q10_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q11_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q12_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q1_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q2_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q3_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q4_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q5_rb.html +92 -0
- data/doc/files/xquery_use_cases/xmp/q6_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q7_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q8_rb.html +88 -0
- data/doc/files/xquery_use_cases/xmp/q9_rb.html +88 -0
- data/doc/fr_class_index.html +56 -0
- data/doc/fr_file_index.html +110 -0
- data/doc/fr_method_index.html +159 -0
- data/doc/index.html +26 -0
- data/doc/rdoc-style.css +175 -0
- data/lib/magic_xml.rb +1400 -0
- data/simple_examples/README +14 -0
- data/simple_examples/xml_hello_f.rb +32 -0
- data/simple_examples/xml_hello_m.rb +32 -0
- data/simple_examples/xml_list_f.rb +36 -0
- data/simple_examples/xml_list_m.rb +36 -0
- data/test/helper.rb +9 -0
- data/test/test_magic_xml.rb +855 -0
- data/xquery_use_cases/README +17 -0
- data/xquery_use_cases/parts/README +12 -0
- data/xquery_use_cases/parts/partlist.xml +13 -0
- data/xquery_use_cases/parts/q1.out +16 -0
- data/xquery_use_cases/parts/q1.rb +38 -0
- data/xquery_use_cases/parts/q1.xquery +18 -0
- data/xquery_use_cases/rdb/README +50 -0
- data/xquery_use_cases/rdb/bids.xml +81 -0
- data/xquery_use_cases/rdb/items.xml +57 -0
- data/xquery_use_cases/rdb/q1.out +10 -0
- data/xquery_use_cases/rdb/q1.rb +31 -0
- data/xquery_use_cases/rdb/q1.xquery +14 -0
- data/xquery_use_cases/rdb/q10.out +27 -0
- data/xquery_use_cases/rdb/q10.rb +37 -0
- data/xquery_use_cases/rdb/q10.xquery +15 -0
- data/xquery_use_cases/rdb/q11.out +7 -0
- data/xquery_use_cases/rdb/q11.rb +38 -0
- data/xquery_use_cases/rdb/q11.xquery +15 -0
- data/xquery_use_cases/rdb/q12.out +12 -0
- data/xquery_use_cases/rdb/q12.rb +42 -0
- data/xquery_use_cases/rdb/q12.xquery +28 -0
- data/xquery_use_cases/rdb/q13.out +32 -0
- data/xquery_use_cases/rdb/q13.rb +45 -0
- data/xquery_use_cases/rdb/q13.xquery +15 -0
- data/xquery_use_cases/rdb/q14.out +14 -0
- data/xquery_use_cases/rdb/q14.rb +42 -0
- data/xquery_use_cases/rdb/q14.xquery +14 -0
- data/xquery_use_cases/rdb/q15.out +5 -0
- data/xquery_use_cases/rdb/q15.rb +31 -0
- data/xquery_use_cases/rdb/q15.xquery +9 -0
- data/xquery_use_cases/rdb/q16.out +35 -0
- data/xquery_use_cases/rdb/q16.rb +35 -0
- data/xquery_use_cases/rdb/q16.xquery +17 -0
- data/xquery_use_cases/rdb/q17.out +1 -0
- data/xquery_use_cases/rdb/q17.rb +35 -0
- data/xquery_use_cases/rdb/q17.xquery +11 -0
- data/xquery_use_cases/rdb/q18.out +32 -0
- data/xquery_use_cases/rdb/q18.rb +40 -0
- data/xquery_use_cases/rdb/q18.xquery +19 -0
- data/xquery_use_cases/rdb/q2.out +22 -0
- data/xquery_use_cases/rdb/q2.rb +36 -0
- data/xquery_use_cases/rdb/q2.xquery +14 -0
- data/xquery_use_cases/rdb/q3.out +8 -0
- data/xquery_use_cases/rdb/q3.rb +34 -0
- data/xquery_use_cases/rdb/q3.xquery +16 -0
- data/xquery_use_cases/rdb/q4.out +14 -0
- data/xquery_use_cases/rdb/q4.rb +31 -0
- data/xquery_use_cases/rdb/q4.xquery +11 -0
- data/xquery_use_cases/rdb/q5.out +12 -0
- data/xquery_use_cases/rdb/q5.rb +46 -0
- data/xquery_use_cases/rdb/q5.xquery +25 -0
- data/xquery_use_cases/rdb/q6.out +14 -0
- data/xquery_use_cases/rdb/q6.rb +38 -0
- data/xquery_use_cases/rdb/q6.xquery +15 -0
- data/xquery_use_cases/rdb/q7.out +1 -0
- data/xquery_use_cases/rdb/q7.rb +30 -0
- data/xquery_use_cases/rdb/q7.xquery +10 -0
- data/xquery_use_cases/rdb/q8.out +1 -0
- data/xquery_use_cases/rdb/q8.rb +23 -0
- data/xquery_use_cases/rdb/q8.xquery +8 -0
- data/xquery_use_cases/rdb/q9.out +22 -0
- data/xquery_use_cases/rdb/q9.rb +32 -0
- data/xquery_use_cases/rdb/q9.xquery +16 -0
- data/xquery_use_cases/rdb/users.xml +25 -0
- data/xquery_use_cases/seq/README +12 -0
- data/xquery_use_cases/seq/q1.out +1 -0
- data/xquery_use_cases/seq/q1.rb +25 -0
- data/xquery_use_cases/seq/q1.xquery +2 -0
- data/xquery_use_cases/seq/q2.out +2 -0
- data/xquery_use_cases/seq/q2.rb +25 -0
- data/xquery_use_cases/seq/q2.xquery +2 -0
- data/xquery_use_cases/seq/q3.out +2 -0
- data/xquery_use_cases/seq/q3.rb +26 -0
- data/xquery_use_cases/seq/q3.xquery +3 -0
- data/xquery_use_cases/seq/q4.out +0 -0
- data/xquery_use_cases/seq/q4.rb +27 -0
- data/xquery_use_cases/seq/q4.xquery +4 -0
- data/xquery_use_cases/seq/q5.out +5 -0
- data/xquery_use_cases/seq/q5.rb +29 -0
- data/xquery_use_cases/seq/q5.xquery +10 -0
- data/xquery_use_cases/seq/report1.xml +40 -0
- data/xquery_use_cases/sgml/README +53 -0
- data/xquery_use_cases/sgml/q1.out +44 -0
- data/xquery_use_cases/sgml/q1.rb +23 -0
- data/xquery_use_cases/sgml/q1.xquery +5 -0
- data/xquery_use_cases/sgml/q10.out +1 -0
- data/xquery_use_cases/sgml/q10.rb +28 -0
- data/xquery_use_cases/sgml/q10.xquery +7 -0
- data/xquery_use_cases/sgml/q2.out +26 -0
- data/xquery_use_cases/sgml/q2.rb +23 -0
- data/xquery_use_cases/sgml/q2.xquery +5 -0
- data/xquery_use_cases/sgml/q3.out +6 -0
- data/xquery_use_cases/sgml/q3.rb +28 -0
- data/xquery_use_cases/sgml/q3.xquery +7 -0
- data/xquery_use_cases/sgml/q4.out +4 -0
- data/xquery_use_cases/sgml/q4.rb +25 -0
- data/xquery_use_cases/sgml/q4.xquery +5 -0
- data/xquery_use_cases/sgml/q5.out +3 -0
- data/xquery_use_cases/sgml/q5.rb +23 -0
- data/xquery_use_cases/sgml/q5.xquery +5 -0
- data/xquery_use_cases/sgml/q6.out +1 -0
- data/xquery_use_cases/sgml/q6.rb +27 -0
- data/xquery_use_cases/sgml/q6.xquery +6 -0
- data/xquery_use_cases/sgml/q7.out +1 -0
- data/xquery_use_cases/sgml/q7.rb +27 -0
- data/xquery_use_cases/sgml/q7.xquery +7 -0
- data/xquery_use_cases/sgml/q8a.out +34 -0
- data/xquery_use_cases/sgml/q8a.rb +27 -0
- data/xquery_use_cases/sgml/q8a.xquery +5 -0
- data/xquery_use_cases/sgml/q8b.out +26 -0
- data/xquery_use_cases/sgml/q8b.rb +32 -0
- data/xquery_use_cases/sgml/q8b.xquery +5 -0
- data/xquery_use_cases/sgml/q9.out +9 -0
- data/xquery_use_cases/sgml/q9.rb +29 -0
- data/xquery_use_cases/sgml/q9.xquery +6 -0
- data/xquery_use_cases/sgml/sgml.xml +101 -0
- data/xquery_use_cases/solution_sizes.rb +48 -0
- data/xquery_use_cases/string/README +29 -0
- data/xquery_use_cases/string/company-data.xml +20 -0
- data/xquery_use_cases/string/q1.out +4 -0
- data/xquery_use_cases/string/q1.rb +25 -0
- data/xquery_use_cases/string/q1.xquery +1 -0
- data/xquery_use_cases/string/q2.out +13 -0
- data/xquery_use_cases/string/q2.rb +32 -0
- data/xquery_use_cases/string/q2.xquery +23 -0
- data/xquery_use_cases/string/q4.out +50 -0
- data/xquery_use_cases/string/q4.rb +34 -0
- data/xquery_use_cases/string/q4.xquery +14 -0
- data/xquery_use_cases/string/q5.out +12 -0
- data/xquery_use_cases/string/q5.rb +33 -0
- data/xquery_use_cases/string/q5.xquery +8 -0
- data/xquery_use_cases/string/string.xml +82 -0
- data/xquery_use_cases/test_driver.rb +60 -0
- data/xquery_use_cases/tree/README +23 -0
- data/xquery_use_cases/tree/book.xml +50 -0
- data/xquery_use_cases/tree/q1.out +23 -0
- data/xquery_use_cases/tree/q1.rb +31 -0
- data/xquery_use_cases/tree/q1.xquery +14 -0
- data/xquery_use_cases/tree/q2.out +11 -0
- data/xquery_use_cases/tree/q2.rb +27 -0
- data/xquery_use_cases/tree/q2.xquery +10 -0
- data/xquery_use_cases/tree/q3.out +2 -0
- data/xquery_use_cases/tree/q3.rb +26 -0
- data/xquery_use_cases/tree/q3.xquery +2 -0
- data/xquery_use_cases/tree/q4.out +1 -0
- data/xquery_use_cases/tree/q4.rb +23 -0
- data/xquery_use_cases/tree/q4.xquery +5 -0
- data/xquery_use_cases/tree/q5.out +9 -0
- data/xquery_use_cases/tree/q5.rb +30 -0
- data/xquery_use_cases/tree/q5.xquery +8 -0
- data/xquery_use_cases/tree/q6.out +30 -0
- data/xquery_use_cases/tree/q6.rb +35 -0
- data/xquery_use_cases/tree/q6.xquery +21 -0
- data/xquery_use_cases/xmp/README +41 -0
- data/xquery_use_cases/xmp/bib.xml +35 -0
- data/xquery_use_cases/xmp/books.xml +15 -0
- data/xquery_use_cases/xmp/prices.xml +32 -0
- data/xquery_use_cases/xmp/q1.out +8 -0
- data/xquery_use_cases/xmp/q1.rb +29 -0
- data/xquery_use_cases/xmp/q1.xquery +10 -0
- data/xquery_use_cases/xmp/q10.out +11 -0
- data/xquery_use_cases/xmp/q10.rb +36 -0
- data/xquery_use_cases/xmp/q10.xquery +11 -0
- data/xquery_use_cases/xmp/q11.out +35 -0
- data/xquery_use_cases/xmp/q11.rb +37 -0
- data/xquery_use_cases/xmp/q11.xquery +18 -0
- data/xquery_use_cases/xmp/q12.out +6 -0
- data/xquery_use_cases/xmp/q12.rb +35 -0
- data/xquery_use_cases/xmp/q12.xquery +20 -0
- data/xquery_use_cases/xmp/q2.out +37 -0
- data/xquery_use_cases/xmp/q2.rb +30 -0
- data/xquery_use_cases/xmp/q2.xquery +12 -0
- data/xquery_use_cases/xmp/q3.out +34 -0
- data/xquery_use_cases/xmp/q3.rb +27 -0
- data/xquery_use_cases/xmp/q3.xquery +10 -0
- data/xquery_use_cases/xmp/q4.out +31 -0
- data/xquery_use_cases/xmp/q4.rb +44 -0
- data/xquery_use_cases/xmp/q4.xquery +21 -0
- data/xquery_use_cases/xmp/q5.out +17 -0
- data/xquery_use_cases/xmp/q5.rb +38 -0
- data/xquery_use_cases/xmp/q5.xquery +13 -0
- data/xquery_use_cases/xmp/q6.out +28 -0
- data/xquery_use_cases/xmp/q6.rb +33 -0
- data/xquery_use_cases/xmp/q6.xquery +19 -0
- data/xquery_use_cases/xmp/q7.out +8 -0
- data/xquery_use_cases/xmp/q7.rb +30 -0
- data/xquery_use_cases/xmp/q7.xquery +12 -0
- data/xquery_use_cases/xmp/q8.out +7 -0
- data/xquery_use_cases/xmp/q8.rb +29 -0
- data/xquery_use_cases/xmp/q8.xquery +9 -0
- data/xquery_use_cases/xmp/q9.out +4 -0
- data/xquery_use_cases/xmp/q9.rb +29 -0
- data/xquery_use_cases/xmp/q9.xquery +7 -0
- data/xquery_use_cases/xmp/reviews.xml +24 -0
- metadata +342 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
<!DOCTYPE report SYSTEM "report.dtd">
|
2
|
+
<report>
|
3
|
+
<title>Getting started with SGML</title>
|
4
|
+
<chapter>
|
5
|
+
<title>The business challenge</title>
|
6
|
+
<intro>
|
7
|
+
<para>With the ever-changing and growing global market, companies and
|
8
|
+
large organizations are searching for ways to become more viable and
|
9
|
+
competitive. Downsizing and other cost-cutting measures demand more
|
10
|
+
efficient use of corporate resources. One very important resource is
|
11
|
+
an organization's information.</para>
|
12
|
+
<para>As part of the move toward integrated information management,
|
13
|
+
whole industries are developing and implementing standards for
|
14
|
+
exchanging technical information. This report describes how one such
|
15
|
+
standard, the Standard Generalized Markup Language (SGML), works as
|
16
|
+
part of an overall information management strategy.</para>
|
17
|
+
<graphic graphname="infoflow"/></intro></chapter>
|
18
|
+
<chapter>
|
19
|
+
<title>Getting to know SGML</title>
|
20
|
+
<intro>
|
21
|
+
<para>While SGML is a fairly recent technology, the use of
|
22
|
+
<emph>markup</emph> in computer-generated documents has existed for a
|
23
|
+
while.</para></intro>
|
24
|
+
<section shorttitle="What is markup?">
|
25
|
+
<title>What is markup, or everything you always wanted to know about
|
26
|
+
document preparation but were afraid to ask?</title>
|
27
|
+
<intro>
|
28
|
+
<para>Markup is everything in a document that is not content. The
|
29
|
+
traditional meaning of markup is the manual <emph>marking</emph> up
|
30
|
+
of typewritten text to give instructions for a typesetter or
|
31
|
+
compositor about how to fit the text on a page and what typefaces to
|
32
|
+
use. This kind of markup is known as <emph>procedural markup</emph>.</para></intro>
|
33
|
+
<topic topicid="top1">
|
34
|
+
<title>Procedural markup</title>
|
35
|
+
<para>Most electronic publishing systems today use some form of
|
36
|
+
procedural markup. Procedural markup codes are good for one
|
37
|
+
presentation of the information.</para></topic>
|
38
|
+
<topic topicid="top2">
|
39
|
+
<title>Generic markup</title>
|
40
|
+
<para>Generic markup (also known as descriptive markup) describes the
|
41
|
+
<emph>purpose</emph> of the text in a document. A basic concept of
|
42
|
+
generic markup is that the content of a document must be separate from
|
43
|
+
the style. Generic markup allows for multiple presentations of the
|
44
|
+
information.</para></topic>
|
45
|
+
<topic topicid="top3">
|
46
|
+
<title>Drawbacks of procedural markup</title>
|
47
|
+
<para>Industries involved in technical documentation increasingly
|
48
|
+
prefer generic over procedural markup schemes. When a company changes
|
49
|
+
software or hardware systems, enormous data translation tasks arise,
|
50
|
+
often resulting in errors.</para></topic></section>
|
51
|
+
<section shorttitle="What is SGML?">
|
52
|
+
<title>What <emph>is</emph> SGML in the grand scheme of the universe, anyway?</title>
|
53
|
+
<intro>
|
54
|
+
<para>SGML defines a strict markup scheme with a syntax for defining
|
55
|
+
document data elements and an overall framework for marking up
|
56
|
+
documents.</para>
|
57
|
+
<para>SGML can describe and create documents that are not dependent on
|
58
|
+
any hardware, software, formatter, or operating system. Since SGML documents
|
59
|
+
conform to an international standard, they are portable.</para></intro></section>
|
60
|
+
<section shorttitle="How does SGML work?">
|
61
|
+
<title>How is SGML and would you recommend it to your grandmother?</title>
|
62
|
+
<intro>
|
63
|
+
<para>You can break a typical document into three layers: structure,
|
64
|
+
content, and style. SGML works by separating these three aspects and
|
65
|
+
deals mainly with the relationship between structure and content.</para></intro>
|
66
|
+
<topic topicid="top4">
|
67
|
+
<title>Structure</title>
|
68
|
+
<para>At the heart of an SGML application is a file called the DTD, or
|
69
|
+
Document Type Definition. The DTD sets up the structure of a document,
|
70
|
+
much like a database schema describes the types of information it
|
71
|
+
handles.</para>
|
72
|
+
<para>A database schema also defines the relationships between the
|
73
|
+
various types of data. Similarly, a DTD specifies <emph>rules</emph>
|
74
|
+
to help ensure documents have a consistent, logical structure.</para></topic>
|
75
|
+
<topic topicid="top5">
|
76
|
+
<title>Content</title>
|
77
|
+
<para>Content is the information itself. The method for identifying
|
78
|
+
the information and its meaning within this framework is called
|
79
|
+
<emph>tagging</emph>. Tagging must
|
80
|
+
conform to the rules established in the DTD (see <xref xrefid="top4"/>).</para>
|
81
|
+
<graphic graphname="tagexamp"/></topic>
|
82
|
+
<topic topicid="top6">
|
83
|
+
<title>Style</title>
|
84
|
+
<para>SGML does not standardize style or other processing methods for
|
85
|
+
information stored in SGML.</para></topic></section></chapter>
|
86
|
+
<chapter>
|
87
|
+
<title>Resources</title>
|
88
|
+
<section>
|
89
|
+
<title>Conferences, tutorials, and training</title>
|
90
|
+
<intro>
|
91
|
+
<para>The Graphic Communications Association has been
|
92
|
+
instrumental in the development of SGML. GCA provides conferences,
|
93
|
+
tutorials, newsletters, and publication sales for both members and
|
94
|
+
non-members.</para>
|
95
|
+
<para security="c">Exiled members of the former Soviet Union's secret
|
96
|
+
police, the KGB, have infiltrated the upper ranks of the GCA and are
|
97
|
+
planning the Final Revolution as soon as DSSSL is completed.</para>
|
98
|
+
</intro>
|
99
|
+
</section>
|
100
|
+
</chapter>
|
101
|
+
</report>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
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
|
+
$percentages = []
|
24
|
+
$ruby_size_total = 0
|
25
|
+
$xquery_size_total = 0
|
26
|
+
|
27
|
+
Dir.glob("*/q*.rb").sort.each{|ruby_solution|
|
28
|
+
ruby_solution =~ /^(.*)\/q(.*)\.rb$/
|
29
|
+
dir, name = $1, $2
|
30
|
+
xquery_solution = "#{dir}/q#{name}.xquery"
|
31
|
+
|
32
|
+
# Remove #!-line from Ruby solutions
|
33
|
+
# Remove #-comments from Ruby solutions
|
34
|
+
# (only those that take whole lines, otherwise we'd need a Ruby parser)
|
35
|
+
# Change URL-access to document-access in XQuery solutions
|
36
|
+
# Merge all whitespace into a single " "
|
37
|
+
ruby_size = File.read(ruby_solution).sub(/^#!.*?\n/,"").gsub(/^#.*?\n/,"").gsub(/\s+/, " ").size
|
38
|
+
xquery_size = File.read(xquery_solution).gsub(/http:\/\/bstore[12].example.com\//,"").gsub(/\s+/, " ").size
|
39
|
+
perc = sprintf "%.0f%%", (100.0 * ruby_size / xquery_size)
|
40
|
+
print "Problem #{dir.upcase} Q#{name}: Ruby #{ruby_size} (#{perc}), XQuery: #{xquery_size}\n"
|
41
|
+
$percentages.push(100.0 * ruby_size / xquery_size)
|
42
|
+
$ruby_size_total += ruby_size
|
43
|
+
$xquery_size_total += xquery_size
|
44
|
+
}
|
45
|
+
|
46
|
+
perc = sprintf "%.0f%%", (100.0 * $ruby_size_total / $xquery_size_total)
|
47
|
+
print "Total: Ruby #{$ruby_size_total} (#{perc}), XQuery: #{$xquery_size_total}\n"
|
48
|
+
printf "Median ratio: %.0f%%\n", $percentages.sort[$percentages.size/2]
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Use Case "STRING": String Search
|
2
|
+
from XML Query Use Cases.
|
3
|
+
|
4
|
+
Source: http://www.w3.org/TR/xquery-use-cases/#text
|
5
|
+
|
6
|
+
Q1 - Find the titles of all news items where
|
7
|
+
the string "Foobar Corporation" appears
|
8
|
+
in the title.
|
9
|
+
Q2 - Find news items where the Foobar Corporation
|
10
|
+
and one or more of its partners are mentioned
|
11
|
+
in the same paragraph and/or title.
|
12
|
+
List each news item by its title and date.
|
13
|
+
Q4 - Find news items where a company and one
|
14
|
+
of its partners is mentioned in the same
|
15
|
+
news item and the news item is not authored
|
16
|
+
by the company itself.
|
17
|
+
Q5 - For each news item that is relevant to the
|
18
|
+
Gorilla Corporation, create an "item summary"
|
19
|
+
element. The content of the item summary is
|
20
|
+
the content of the title, date, and first
|
21
|
+
paragraph of the news item, separated by
|
22
|
+
periods. A news item is relevant if the name
|
23
|
+
of the company is mentioned anywhere within
|
24
|
+
the content of the news item.
|
25
|
+
|
26
|
+
Note: Query Q3 has been withdrawn from the use cases document.
|
27
|
+
|
28
|
+
Note: Q5 result has "whitespace reformatted for readability"
|
29
|
+
(test_driver is dealing with this one)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<!DOCTYPE company SYSTEM "company.dtd">
|
3
|
+
<company>
|
4
|
+
<name>Foobar Corporation</name>
|
5
|
+
<ticker_symbol>FOO</ticker_symbol>
|
6
|
+
|
7
|
+
<description>Foobar Corporation is a maker of Foo(TM) and
|
8
|
+
Foobar(TM) products and a leading software company with a 300
|
9
|
+
Billion dollar revenue in 1999. It is located in Alaska.
|
10
|
+
</description>
|
11
|
+
|
12
|
+
<business_code>Software</business_code>
|
13
|
+
<partners>
|
14
|
+
<partner>YouNameItWeIntegrateIt.com</partner>
|
15
|
+
<partner>TheAppCompany Inc.</partner>
|
16
|
+
</partners>
|
17
|
+
<competitors>
|
18
|
+
<competitor>Gorilla Corporation</competitor>
|
19
|
+
</competitors>
|
20
|
+
</company>
|
@@ -0,0 +1,25 @@
|
|
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.load('string.xml').descendants(:news_item, :title).each{|t|
|
24
|
+
print t if t =~ /Foobar Corporation/
|
25
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
doc("string.xml")//news_item/title[contains(., "Foobar Corporation")]
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<news_item>
|
2
|
+
<title> Gorilla Corporation acquires YouNameItWeIntegrateIt.com </title>
|
3
|
+
<date>1-20-2000</date>
|
4
|
+
</news_item>
|
5
|
+
<news_item>
|
6
|
+
<title>Foobar Corporation releases its new line of Foo products today</title>
|
7
|
+
<date>1-20-2000</date>
|
8
|
+
</news_item>
|
9
|
+
<news_item>
|
10
|
+
<title>Foobar Corporation is suing Gorilla Corporation for patent
|
11
|
+
infringement </title>
|
12
|
+
<date>1-20-2000</date>
|
13
|
+
</news_item>
|
@@ -0,0 +1,32 @@
|
|
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
|
+
# Root of company-data is company already,
|
24
|
+
# so there is no point in searching for a particular company there.
|
25
|
+
partners = XML.load('company-data.xml').descendants(:partner).map{|p| p.text}
|
26
|
+
|
27
|
+
XML.load('string.xml').descendants(:news_item) {|item|
|
28
|
+
next unless (item.descendants(:title) + item.descendants(:par)).any?{|t|
|
29
|
+
t.text.include? "Foobar Corporation" and partners.any?{|p| t.text.include? p}
|
30
|
+
}
|
31
|
+
XML.news_item!(item.child(:title), item.child(:date))
|
32
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
declare function local:partners($company as xs:string) as element()*
|
2
|
+
{
|
3
|
+
let $c := doc("company-data.xml")//company[name = $company]
|
4
|
+
return $c//partner
|
5
|
+
};
|
6
|
+
|
7
|
+
let $foobar_partners := local:partners("Foobar Corporation")
|
8
|
+
|
9
|
+
for $item in doc("string.xml")//news_item
|
10
|
+
where
|
11
|
+
some $t in $item//title satisfies
|
12
|
+
(contains($t/text(), "Foobar Corporation")
|
13
|
+
and (some $partner in $foobar_partners satisfies
|
14
|
+
contains($t/text(), $partner/text())))
|
15
|
+
or (some $par in $item//par satisfies
|
16
|
+
(contains(string($par), "Foobar Corporation")
|
17
|
+
and (some $partner in $foobar_partners satisfies
|
18
|
+
contains(string($par), $partner/text()))))
|
19
|
+
return
|
20
|
+
<news_item>
|
21
|
+
{ $item/title }
|
22
|
+
{ $item/date }
|
23
|
+
</news_item>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
<news_item>
|
2
|
+
<title> Gorilla Corporation acquires YouNameItWeIntegrateIt.com </title>
|
3
|
+
<content>
|
4
|
+
<par> Today, Gorilla Corporation announced that it will purchase
|
5
|
+
YouNameItWeIntegrateIt.com. The shares of
|
6
|
+
YouNameItWeIntegrateIt.com dropped $3.00 as a result of this
|
7
|
+
announcement.
|
8
|
+
</par>
|
9
|
+
|
10
|
+
<par> As a result of this acquisition, the CEO of
|
11
|
+
YouNameItWeIntegrateIt.com Bill Smarts resigned. He did not
|
12
|
+
announce what he will do next. Sources close to
|
13
|
+
YouNameItWeIntegrateIt.com hint that Bill Smarts might be
|
14
|
+
taking a position in Foobar Corporation.
|
15
|
+
</par>
|
16
|
+
|
17
|
+
<par>YouNameItWeIntegrateIt.com is a leading systems integrator
|
18
|
+
that enables <quote>brick and mortar</quote> companies to
|
19
|
+
have a presence on the web.
|
20
|
+
</par>
|
21
|
+
|
22
|
+
</content>
|
23
|
+
<date>1-20-2000</date>
|
24
|
+
<author>Mark Davis</author>
|
25
|
+
<news_agent>News Online</news_agent>
|
26
|
+
</news_item>
|
27
|
+
<news_item> <title>Foobar Corporation is suing Gorilla Corporation for
|
28
|
+
patent infringement </title>
|
29
|
+
<content>
|
30
|
+
<par> In surprising developments today, Foobar Corporation
|
31
|
+
announced that it is suing Gorilla Corporation for patent
|
32
|
+
infringement. The patents that were mentioned as part of the
|
33
|
+
lawsuit are considered to be the basis of Foobar
|
34
|
+
Corporation's <quote>Wireless Foo</quote> line of products.
|
35
|
+
</par>
|
36
|
+
<par>The tension between Foobar and Gorilla Corporations has
|
37
|
+
been increasing ever since the Gorilla Corporation acquired
|
38
|
+
more than 40 engineers who have left Foobar Corporation,
|
39
|
+
TheAppCompany Inc. and YouNameItWeIntegrateIt.com over the
|
40
|
+
past 3 months. The engineers who have left the Foobar
|
41
|
+
corporation and its partners were rumored to be working on
|
42
|
+
the next generation of server products and applications which
|
43
|
+
will directly compete with Foobar's Foo 20.9 servers. Most of
|
44
|
+
the engineers have relocated to Hawaii where the Gorilla
|
45
|
+
Corporation's server development is located.
|
46
|
+
</par>
|
47
|
+
</content>
|
48
|
+
<date>1-20-2000</date>
|
49
|
+
<news_agent>Reliable News Corporation</news_agent>
|
50
|
+
</news_item>
|
@@ -0,0 +1,34 @@
|
|
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
|
+
company_data = XML.load('company-data.xml')
|
24
|
+
# Root of company-data is company already,
|
25
|
+
# so there is no point in searching for a particular company there.
|
26
|
+
partners = company_data.descendants(:partner).map{|p| p.text}
|
27
|
+
c = company_data[:@name]
|
28
|
+
|
29
|
+
XML.load('string.xml').descendants(:news_item) {|item|
|
30
|
+
next unless item.text.include? c
|
31
|
+
next unless partners.any?{|p| item.text.include? p}
|
32
|
+
next if item[:@news_agent] == c
|
33
|
+
print item
|
34
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
declare function local:partners($company as xs:string) as element()*
|
2
|
+
{
|
3
|
+
let $c := doc("company-data.xml")//company[name = $company]
|
4
|
+
return $c//partner
|
5
|
+
};
|
6
|
+
|
7
|
+
for $item in doc("string.xml")//news_item,
|
8
|
+
$c in doc("company-data.xml")//company
|
9
|
+
let $partners := local:partners($c/name)
|
10
|
+
where contains(string($item), $c/name)
|
11
|
+
and (some $p in $partners satisfies
|
12
|
+
contains(string($item), $p) and $item/news_agent != $c/name)
|
13
|
+
return
|
14
|
+
$item
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<item_summary>Gorilla Corporation acquires
|
2
|
+
YouNameItWeIntegrateIt.com. 1-20-2000. Today, Gorilla Corporation
|
3
|
+
announced that it will purchase YouNameItWeIntegrateIt.com. The shares
|
4
|
+
of YouNameItWeIntegrateIt.com dropped $3.00 as a result of this
|
5
|
+
announcement.</item_summary>
|
6
|
+
|
7
|
+
<item_summary>Foobar Corporation is suing Gorilla Corporation for
|
8
|
+
patent infringement. 1-20-2000. In surprising developments today,
|
9
|
+
Foobar Corporation announced that it is suing Gorilla Corporation for
|
10
|
+
patent infringement. The patents that were mentioned as part of the
|
11
|
+
lawsuit are considered to be the basis of Foobar Corporation's
|
12
|
+
Wireless Foo line of products.</item_summary>
|
@@ -0,0 +1,33 @@
|
|
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.load('string.xml').descendants(:news_item) {|item|
|
24
|
+
next unless item =~ /Gorilla Corporation/
|
25
|
+
XML.item_summary! {
|
26
|
+
# Whitespace is wrong without .strip
|
27
|
+
add! item[:@title].strip
|
28
|
+
add! ". "
|
29
|
+
add! item[:@date]
|
30
|
+
add! ". "
|
31
|
+
add! item.descendants(:par)[0].text
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,82 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1"?>
|
2
|
+
<news>
|
3
|
+
<news_item>
|
4
|
+
<title> Gorilla Corporation acquires YouNameItWeIntegrateIt.com </title>
|
5
|
+
<content>
|
6
|
+
<par> Today, Gorilla Corporation announced that it will purchase
|
7
|
+
YouNameItWeIntegrateIt.com. The shares of
|
8
|
+
YouNameItWeIntegrateIt.com dropped $3.00 as a result of this
|
9
|
+
announcement.
|
10
|
+
</par>
|
11
|
+
|
12
|
+
<par> As a result of this acquisition, the CEO of
|
13
|
+
YouNameItWeIntegrateIt.com Bill Smarts resigned. He did not
|
14
|
+
announce what he will do next. Sources close to
|
15
|
+
YouNameItWeIntegrateIt.com hint that Bill Smarts might be
|
16
|
+
taking a position in Foobar Corporation.
|
17
|
+
</par>
|
18
|
+
|
19
|
+
<par>YouNameItWeIntegrateIt.com is a leading systems integrator
|
20
|
+
that enables <quote>brick and mortar</quote> companies to
|
21
|
+
have a presence on the web.
|
22
|
+
</par>
|
23
|
+
|
24
|
+
</content>
|
25
|
+
<date>1-20-2000</date>
|
26
|
+
<author>Mark Davis</author>
|
27
|
+
<news_agent>News Online</news_agent>
|
28
|
+
</news_item>
|
29
|
+
|
30
|
+
<news_item>
|
31
|
+
<title>Foobar Corporation releases its new line of Foo products
|
32
|
+
today</title>
|
33
|
+
<content>
|
34
|
+
<par> Foobar Corporation releases the 20.9 version of its Foo
|
35
|
+
products. The new version of Foo products solve known
|
36
|
+
performance problems which existed in 20.8 line and
|
37
|
+
increases the speed of Foo based products tenfold. It also
|
38
|
+
allows wireless clients to be connected to the Foobar
|
39
|
+
servers.
|
40
|
+
</par>
|
41
|
+
<par> The President of Foobar Corporation announced that they
|
42
|
+
were proud to release 20.9 version of Foo products and
|
43
|
+
they will upgrade existing customers <footnote>where
|
44
|
+
service agreements exist</footnote>
|
45
|
+
promptly. TheAppCompany Inc. immediately announced that it
|
46
|
+
will release the new version of its products to utilize
|
47
|
+
the 20.9 architecture within the next three months.
|
48
|
+
</par>
|
49
|
+
<figure>
|
50
|
+
<title>Presidents of Foobar Corporation and TheAppCompany
|
51
|
+
Inc. Shake Hands</title> <image source="handshake.jpg"/>
|
52
|
+
</figure>
|
53
|
+
</content>
|
54
|
+
<date>1-20-2000</date>
|
55
|
+
<news_agent>Foobar Corporation</news_agent>
|
56
|
+
</news_item>
|
57
|
+
|
58
|
+
<news_item> <title>Foobar Corporation is suing Gorilla Corporation for
|
59
|
+
patent infringement </title>
|
60
|
+
<content>
|
61
|
+
<par> In surprising developments today, Foobar Corporation
|
62
|
+
announced that it is suing Gorilla Corporation for patent
|
63
|
+
infringement. The patents that were mentioned as part of the
|
64
|
+
lawsuit are considered to be the basis of Foobar
|
65
|
+
Corporation's <quote>Wireless Foo</quote> line of products.
|
66
|
+
</par>
|
67
|
+
<par>The tension between Foobar and Gorilla Corporations has
|
68
|
+
been increasing ever since the Gorilla Corporation acquired
|
69
|
+
more than 40 engineers who have left Foobar Corporation,
|
70
|
+
TheAppCompany Inc. and YouNameItWeIntegrateIt.com over the
|
71
|
+
past 3 months. The engineers who have left the Foobar
|
72
|
+
corporation and its partners were rumored to be working on
|
73
|
+
the next generation of server products and applications which
|
74
|
+
will directly compete with Foobar's Foo 20.9 servers. Most of
|
75
|
+
the engineers have relocated to Hawaii where the Gorilla
|
76
|
+
Corporation's server development is located.
|
77
|
+
</par>
|
78
|
+
</content>
|
79
|
+
<date>1-20-2000</date>
|
80
|
+
<news_agent>Reliable News Corporation</news_agent>
|
81
|
+
</news_item>
|
82
|
+
</news>
|
@@ -0,0 +1,60 @@
|
|
1
|
+
#!/usr/bin/ruby -I..
|
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
|
+
require 'magic_xml'
|
24
|
+
|
25
|
+
tests = 0
|
26
|
+
oks = 0
|
27
|
+
|
28
|
+
ruby_bin = ARGV.shift || "ruby"
|
29
|
+
|
30
|
+
Dir.glob("*/q*.rb").sort.each{|ruby_solution|
|
31
|
+
ruby_solution =~ /^(.*)\/q(.*)\.rb$/
|
32
|
+
dir, name = $1, $2
|
33
|
+
|
34
|
+
expected = File.read("#{dir}/q#{name}.out")
|
35
|
+
got = Dir.chdir(dir) { `#{ruby_bin} q#{name}.rb` }
|
36
|
+
|
37
|
+
# Now, expected_out contains a lot of cruft, strip!
|
38
|
+
expected.gsub!(/>\s+/, ">")
|
39
|
+
expected.gsub!(/\s+</, "<")
|
40
|
+
expected.gsub!(/\s+/, " ")
|
41
|
+
# A bit more renormalization
|
42
|
+
expected = XML.renormalize_sequence(expected)
|
43
|
+
|
44
|
+
# Do the same to got, or SEQ Q5 won't match
|
45
|
+
got.gsub!(/>\s+/, ">")
|
46
|
+
got.gsub!(/\s+</, "<")
|
47
|
+
got.gsub!(/\s+/, " ")
|
48
|
+
|
49
|
+
if expected == got
|
50
|
+
oks += 1
|
51
|
+
print "Test #{dir.upcase} Q#{name}: match\n"
|
52
|
+
else
|
53
|
+
print "Test #{dir.upcase} Q#{name}:\n"
|
54
|
+
print "Expected:\n#{expected}\n";
|
55
|
+
print "Got:\n#{got}\n";
|
56
|
+
print "They do not match\n\n"
|
57
|
+
end
|
58
|
+
tests += 1
|
59
|
+
}
|
60
|
+
print "Of #{tests} tests, #{oks} passed.\n"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Use Case "TREE": Queries that preserve hierarchy
|
2
|
+
from XML Query Use Cases.
|
3
|
+
|
4
|
+
Source: http://www.w3.org/TR/xquery-use-cases/#tree
|
5
|
+
|
6
|
+
Q1 - Prepare a (nested) table of contents for Book1,
|
7
|
+
listing all the sections and their titles.
|
8
|
+
Preserve the original attributes of each <section> element, if any.
|
9
|
+
Q2 - Prepare a (flat) figure list for Book1,
|
10
|
+
listing all the figures and their titles.
|
11
|
+
Preserve the original attributes of each <figure> element, if any.
|
12
|
+
Q3 - How many sections are in Book1, and how many figures?
|
13
|
+
Q4 - How many top-level sections are in Book1?
|
14
|
+
Q5 - Make a flat list of the section elements in Book1.
|
15
|
+
In place of its original attributes, each section
|
16
|
+
element should have two attributes, containing the
|
17
|
+
title of the section and the number of figures
|
18
|
+
immediately contained in the section.
|
19
|
+
Q6 - Make a nested list of the section elements in Book1,
|
20
|
+
preserving their original attributes and hierarchy.
|
21
|
+
Inside each section element, include the title of the
|
22
|
+
section and an element that includes the number of
|
23
|
+
figures immediately contained in the section.
|