mame-xmlparser 0.6.81.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. data/Encodings/README.ja +18 -0
  2. data/Encodings/euc-jp.enc +0 -0
  3. data/Encodings/shift_jis.enc +0 -0
  4. data/History.txt +5 -0
  5. data/Manifest.txt +118 -0
  6. data/README +697 -0
  7. data/README.ja +789 -0
  8. data/README.txt +49 -0
  9. data/Rakefile +30 -0
  10. data/ext/encoding.h +91 -0
  11. data/ext/extconf.rb +58 -0
  12. data/ext/xmlparser.c +2231 -0
  13. data/lib/sax.rb +1 -0
  14. data/lib/saxdriver.rb +1 -0
  15. data/lib/wget.rb +47 -0
  16. data/lib/xml/dom/builder-ja.rb +58 -0
  17. data/lib/xml/dom/builder.rb +310 -0
  18. data/lib/xml/dom/core.rb +3276 -0
  19. data/lib/xml/dom/digest.rb +94 -0
  20. data/lib/xml/dom/visitor.rb +182 -0
  21. data/lib/xml/dom2/attr.rb +213 -0
  22. data/lib/xml/dom2/cdatasection.rb +76 -0
  23. data/lib/xml/dom2/characterdata.rb +177 -0
  24. data/lib/xml/dom2/comment.rb +81 -0
  25. data/lib/xml/dom2/core.rb +19 -0
  26. data/lib/xml/dom2/document.rb +317 -0
  27. data/lib/xml/dom2/documentfragment.rb +82 -0
  28. data/lib/xml/dom2/documenttype.rb +102 -0
  29. data/lib/xml/dom2/dombuilder.rb +277 -0
  30. data/lib/xml/dom2/dombuilderfilter.rb +12 -0
  31. data/lib/xml/dom2/domentityresolver.rb +13 -0
  32. data/lib/xml/dom2/domentityresolverimpl.rb +37 -0
  33. data/lib/xml/dom2/domexception.rb +95 -0
  34. data/lib/xml/dom2/domimplementation.rb +61 -0
  35. data/lib/xml/dom2/dominputsource.rb +29 -0
  36. data/lib/xml/dom2/element.rb +533 -0
  37. data/lib/xml/dom2/entity.rb +110 -0
  38. data/lib/xml/dom2/entityreference.rb +107 -0
  39. data/lib/xml/dom2/namednodemap.rb +138 -0
  40. data/lib/xml/dom2/node.rb +587 -0
  41. data/lib/xml/dom2/nodelist.rb +231 -0
  42. data/lib/xml/dom2/notation.rb +86 -0
  43. data/lib/xml/dom2/processinginstruction.rb +155 -0
  44. data/lib/xml/dom2/text.rb +128 -0
  45. data/lib/xml/dom2/xpath.rb +398 -0
  46. data/lib/xml/encoding-ja.rb +42 -0
  47. data/lib/xml/parser.rb +13 -0
  48. data/lib/xml/parserns.rb +236 -0
  49. data/lib/xml/sax.rb +353 -0
  50. data/lib/xml/saxdriver.rb +370 -0
  51. data/lib/xml/xpath.rb +3284 -0
  52. data/lib/xml/xpath.ry +2352 -0
  53. data/lib/xmldigest.rb +1 -0
  54. data/lib/xmlencoding-ja.rb +11 -0
  55. data/lib/xmltree.rb +1 -0
  56. data/lib/xmltreebuilder-ja.rb +9 -0
  57. data/lib/xmltreebuilder.rb +1 -0
  58. data/lib/xmltreevisitor.rb +1 -0
  59. data/samples/buildertest.rb +47 -0
  60. data/samples/buildertest2.rb +50 -0
  61. data/samples/digesttest.rb +26 -0
  62. data/samples/digesttest2.rb +192 -0
  63. data/samples/doctype.rb +40 -0
  64. data/samples/doctype.xml +21 -0
  65. data/samples/doctypei.rb +19 -0
  66. data/samples/document.dtd +77 -0
  67. data/samples/dom2/dom2test1.rb +7 -0
  68. data/samples/dom2/dom2test2.rb +10 -0
  69. data/samples/dom2/gtkxpath.rb +259 -0
  70. data/samples/dom2/test1.xml +16 -0
  71. data/samples/dom2/test2.xml +7 -0
  72. data/samples/dtd/ext1.dtd +4 -0
  73. data/samples/dtd/ext2.dtd +1 -0
  74. data/samples/dtd/extdtd.rb +34 -0
  75. data/samples/dtd/extdtd.xml +5 -0
  76. data/samples/expat-1.2/CVS/Entries +8 -0
  77. data/samples/expat-1.2/CVS/Repository +1 -0
  78. data/samples/expat-1.2/CVS/Root +1 -0
  79. data/samples/expat-1.2/ext.ent +2 -0
  80. data/samples/expat-1.2/exttest.rb +82 -0
  81. data/samples/expat-1.2/exttesti.rb +81 -0
  82. data/samples/expat-1.2/hoge.dtd +7 -0
  83. data/samples/expat-1.2/idattr.xml +8 -0
  84. data/samples/expat-1.2/idtest.rb +21 -0
  85. data/samples/expat-1.2/idtest.xml +12 -0
  86. data/samples/expat-1.2/xmlextparser.rb +39 -0
  87. data/samples/gtktree.rb +146 -0
  88. data/samples/idattrtest.rb +28 -0
  89. data/samples/index_euc.xml +72 -0
  90. data/samples/index_jis.xml +72 -0
  91. data/samples/index_noenc.xml +71 -0
  92. data/samples/index_sjis.xml +72 -0
  93. data/samples/index_u16.xml +0 -0
  94. data/samples/index_u8.xml +72 -0
  95. data/samples/my-html.rb +65 -0
  96. data/samples/namespaces/CVS/Entries +5 -0
  97. data/samples/namespaces/CVS/Repository +1 -0
  98. data/samples/namespaces/CVS/Root +1 -0
  99. data/samples/namespaces/namespace1.rb +29 -0
  100. data/samples/namespaces/namespace1.xml +10 -0
  101. data/samples/namespaces/namespace2.rb +41 -0
  102. data/samples/namespaces/namespace2.xml +12 -0
  103. data/samples/nstest.rb +21 -0
  104. data/samples/saxtest.rb +70 -0
  105. data/samples/test/featurelist.rb +11 -0
  106. data/samples/test/skippedentity.rb +48 -0
  107. data/samples/test/useforeigndtd.rb +42 -0
  108. data/samples/treetest.rb +14 -0
  109. data/samples/visitor.rb +29 -0
  110. data/samples/visitortest.rb +36 -0
  111. data/samples/writer.rb +43 -0
  112. data/samples/xmlcheck.rb +40 -0
  113. data/samples/xmlcomments.rb +30 -0
  114. data/samples/xmlevent.rb +76 -0
  115. data/samples/xmliter.rb +57 -0
  116. data/samples/xmlstats.rb +167 -0
  117. data/samples/xpointer.rb +233 -0
  118. data/samples/xpointertest.rb +23 -0
  119. metadata +185 -0
@@ -0,0 +1,81 @@
1
+ #! /usr/local/bin/ruby
2
+
3
+ require 'xmlextparser'
4
+
5
+ def escapeAttrVal(str)
6
+ ret = ""
7
+ str.scan(/./um) do |c|
8
+ code = c.unpack("U")[0]
9
+ if code == 9 || code == 10 || code == 13
10
+ ret << sprintf("&#x%X;", code)
11
+ elsif c == "&"
12
+ ret << "&amp;"
13
+ elsif c == "\""
14
+ ret << "&quot;"
15
+ elsif c == "<"
16
+ ret << "&lt;"
17
+ else
18
+ ret << c
19
+ end
20
+ end
21
+ ret
22
+ end
23
+
24
+ def escapeText(str)
25
+ ret = ""
26
+ str.scan(/./um) do |c|
27
+ code = c.unpack("U")[0]
28
+ if code == 13
29
+ ret << sprintf("&#x%X;", code)
30
+ elsif c == "&"
31
+ ret << "&amp;"
32
+ elsif c == "<"
33
+ ret << "&lt;"
34
+ elsif c == ">"
35
+ ret << "&gt;"
36
+ else
37
+ ret << c
38
+ end
39
+ end
40
+ ret
41
+ end
42
+
43
+
44
+ p = XML::ExtParser.new
45
+ def p.externalParsedEntityDecl; end
46
+ def p.internalParsedEntityDecl; end
47
+
48
+ pos = ARGV[0].rindex("/")
49
+ if pos
50
+ p.setBase(ARGV[0][0, pos + 1])
51
+ else
52
+ p.setBase("")
53
+ end
54
+ begin
55
+ p.parse($<.read) do |event, name, data|
56
+ case event
57
+ when XML::Parser::EXTERNAL_PARSED_ENTITY_DECL
58
+ p(["externalParsedEntityDecl", name, data])
59
+
60
+ when XML::Parser::INTERNAL_PARSED_ENTITY_DECL
61
+ p(["internalParsedEntityDecl", name, data])
62
+
63
+
64
+ when XML::Parser::START_ELEM
65
+ print "<" + name
66
+ data.each do |n, v|
67
+ print " " + n + "='" + escapeAttrVal(v) + "'"
68
+ end
69
+ print ">"
70
+
71
+ when XML::Parser::END_ELEM
72
+ print "</" + name + ">"
73
+
74
+ when XML::Parser::CDATA
75
+ print escapeText(data)
76
+
77
+ end
78
+ end
79
+ rescue XML::Parser::Error
80
+ p([$!, p.line])
81
+ end
@@ -0,0 +1,7 @@
1
+ <!ELEMENT test (#PCDATA|aaaa)*>
2
+ <!ATTLIST test hoge ID #IMPLIED
3
+ b CDATA #REQUIRED
4
+ moke CDATA "MOKE">
5
+ <!ELEMENT aaaa (#PCDATA)>
6
+ <!ATTLIST aaaa a ID #IMPLIED
7
+ b CDATA #IMPLIED>
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE test [
2
+ <!ATTLIST test hage ID #IMPLIED>
3
+ <!ATTLIST a hoge ID #IMPLIED>
4
+ ]>
5
+ <test hage="id0001">
6
+ <a hoge="id0002">
7
+ </a>
8
+ </test>
@@ -0,0 +1,21 @@
1
+ #! /usr/local/bin/ruby
2
+
3
+ require 'xmlextparser'
4
+
5
+ #if XML::Parser.expatVersion != "1.2"
6
+ # raise "This program work with expat-1.2"
7
+ #end
8
+
9
+ p = XML::ExtParser.new
10
+
11
+ def p.startElement(name, attr)
12
+ idattr = getIdAttribute
13
+ idvalue = idattr ? attr[idattr] : nil;
14
+ printf("%s: ID=(%s:%s)\n", name, idattr, idvalue)
15
+ end
16
+
17
+ begin
18
+ p.parse($<.read)
19
+ rescue XML::Parser::Error
20
+ p([$!, p.line])
21
+ end
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="EUC-JP"?>
2
+ <!DOCTYPE test SYSTEM "hoge.dtd" [
3
+ <!ENTITY qqqq "QQQQ">
4
+ <!ENTITY rrrr SYSTEM "ext.ent">
5
+ <!ENTITY ssss PUBLIC "-//Hoge//EN" "ext.ent">
6
+ ]>
7
+ <test b="a1234&#x9;&#xA;&#xD;" hoge ="4567">
8
+ <aaaa b="abcd" a="defg">
9
+ ����&#xD;����
10
+ bbbb&rrrr;
11
+ </aaaa>
12
+ </test>
@@ -0,0 +1,39 @@
1
+ require 'xml/parser'
2
+
3
+ module XML
4
+ class ExtParser < Parser
5
+
6
+ def readResource(base, systemId, publicId = nil)
7
+ systemId = base + systemId unless base.nil?
8
+ open(systemId).read
9
+ end
10
+
11
+ def parse(*args)
12
+ setParamEntityParsing(XML::Parser::PARAM_ENTITY_PARSING_UNLESS_STANDALONE)
13
+
14
+ if iterator?
15
+ super(*args) do |event, name, data|
16
+ if (event == XML::Parser::EXTERNAL_ENTITY_REF)
17
+ base, systemId, publicId = data
18
+ extp = self.class.new(self, name)
19
+ extp.parse(readResource(base, systemId)) do |event, name, data|
20
+ yield(event, name, data)
21
+ end
22
+ extp.done
23
+ else
24
+ yield(event, name, data)
25
+ end
26
+ end
27
+ else
28
+ super(*args)
29
+ end
30
+ end
31
+
32
+ def externalEntityRef(context, base, systemId, publicId)
33
+ ## p ["externalEntityRef", context, base, systemId, publicId]
34
+ extp = self.class.new(self, context)
35
+ extp.parse(readResource(base, systemId))
36
+ extp.done
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,146 @@
1
+ #! /usr/local/bin/ruby
2
+
3
+ ## XML Tree viewer for Gtk
4
+ ## 1998 by yoshidam
5
+ ##
6
+ ## Required: ruby-gtk-0.11 (and gtk+-1.0jp)
7
+ ## xmlparser-0.4.17
8
+ ## uconv-0.2.1
9
+
10
+ require 'gtk'
11
+ require 'xml/dom/builder-ja'
12
+
13
+ ## Extend the Node class to manipulate the Gtk::Tree
14
+ module XML
15
+ module DOM
16
+ class Node
17
+ ## append a node to Gtk::Tree
18
+ def appendNodeToTree(node)
19
+ if @treeitem.nil?
20
+ raise "Cannot append tree"
21
+ end
22
+ if @tree.nil?
23
+ @tree = Gtk::Tree::new()
24
+ @treeitem.set_subtree(@tree)
25
+ @tree.show
26
+ @treeitem.expand
27
+ end
28
+ @tree.append(node)
29
+ end
30
+
31
+ ## create Gtk::Tree from XML::Node tree
32
+ def newTreeItem(parent = nil)
33
+ if !@treeitem.nil?
34
+ raise "tree item already exist"
35
+ end
36
+
37
+ case self.nodeType
38
+ when TEXT_NODE
39
+ str = "\"" + self.nodeValue + "\""
40
+ when CDATA_SECTION_NODE
41
+ str = "<![CDATA[" + self.nodeValue + "]]>"
42
+ when PROCESSING_INSTRUCTION_NODE
43
+ str = "?" + self.nodeValue
44
+ when ELEMENT_NODE
45
+ attr = ''
46
+ @attr.each do |a| ## self.attributes do |a|
47
+ attr += a.to_s + ", "
48
+ end if @attr
49
+ attr.chop!
50
+ attr.chop!
51
+ str = self.nodeName
52
+ if (attr != '');
53
+ str += " (" + attr + ")"
54
+ end
55
+ when COMMENT_NODE
56
+ str = "<!--" + self.nodeValue + "-->"
57
+ when DOCUMENT_TYPE_NODE
58
+ str = "#doctype: " + self.nodeName
59
+ else
60
+ str = self.nodeName
61
+ end
62
+ str.gsub!(/\n/, "\\\\n")
63
+ @treeitem = Gtk::TreeItem::new(str)
64
+ if (parent.nil? && !self.parentNode.nil?)
65
+ self.parentNode.appendNodeToTree(@treeitem)
66
+ else
67
+ parent.append(@treeitem)
68
+ end
69
+ @treeitem.show
70
+ self.childNodes do |c|
71
+ c.newTreeItem
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ ## Gtk resources
79
+ #Gtk::RC::parse_string <<EOS
80
+ #style "default"
81
+ #{
82
+ # fontset = "-adobe-helvetica-medium-r-normal--*-140-*-*-*-*-*-*,\
83
+ # -*-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1983-0,*"
84
+ #}
85
+ #widget_class "*" style "default"
86
+ #EOS
87
+
88
+ ## create XML tree
89
+ builder = XML::DOM::JapaneseBuilder.new(1)
90
+ begin
91
+ xmltree = builder.parseStream($<)
92
+ rescue XML::Parser::Error
93
+ line = builder.line
94
+ print "#{$0}: #{$!} (in line #{line})\n"
95
+ exit 1
96
+ end
97
+ print "Parsing end\n"
98
+
99
+ ## unify sequential Text nodes
100
+ xmltree.documentElement.normalize
101
+ xmltree.trim
102
+ print "Normalization end\n"
103
+
104
+ ## create Gtk window
105
+ window = Gtk::Window::new(Gtk::WINDOW_TOPLEVEL)
106
+ window.signal_connect("delete_event") { exit }
107
+ window.signal_connect("destroy_event") { exit }
108
+
109
+ window.border_width(10)
110
+ window.set_title($<.filename)
111
+
112
+ box1 = Gtk::VBox::new(FALSE, 5)
113
+ window.add(box1)
114
+ box1.show
115
+
116
+ scroll = Gtk::ScrolledWindow.new
117
+ scroll.show
118
+ scroll.set_usize(300,300)
119
+ box1.add(scroll)
120
+
121
+
122
+ tree = Gtk::Tree::new()
123
+ scroll.add_with_viewport(tree) ## gtk+-1.2
124
+ ##scroll.add(tree) ## gtk+-1.0
125
+ tree.show
126
+
127
+ ## construct Gtk tree
128
+ xmltree.newTreeItem(tree)
129
+ print "Tree construction end\n"
130
+
131
+ box2 = Gtk::VBox::new(FALSE, 10)
132
+ box2.border_width(10)
133
+ box1.pack_start(box2, FALSE, TRUE, 0)
134
+ box2.show
135
+
136
+ button = Gtk::Button::new("Quit")
137
+ button.signal_connect("clicked") do
138
+ # window.destroy
139
+ exit
140
+ end
141
+ box2.pack_start(button, TRUE, TRUE, 0)
142
+ button.show
143
+
144
+
145
+ window.show
146
+ Gtk::main()
@@ -0,0 +1,28 @@
1
+ #! /usr/local/bin/ruby
2
+
3
+ ## ID attribute for XPointer test implementation
4
+ ## 1998 by yoshidam
5
+
6
+ require 'xml/dom/builder'
7
+
8
+ ## create test XML tree
9
+ doc = XML::DOM::Builder.new.parse("
10
+ <test>
11
+ <section name=\"section1\">
12
+ <p id='para1'>test</p>
13
+ <p id='para2'>test</p>
14
+ </section>
15
+ <section name=\"section2\">
16
+ </section>
17
+ </test>
18
+ ")
19
+
20
+ ## setup ID attribute
21
+ doc._setIDAttr('id') ## for all element
22
+ doc._setIDAttr('name', 'section') ## for section element
23
+
24
+ ## find ID attribute
25
+ p doc.getNodesByXPointer("id(section1)")[0].makeXPointer(false)
26
+ p doc.getNodesByXPointer("id(section1)")[0].makeXPointer(true)
27
+ p doc.getNodesByXPointer("id(para1)")[0].makeXPointer(false)
28
+ p doc.getNodesByXPointer("id(para1)")[0].makeXPointer(true)
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="euc-jp"?>
2
+ <!DOCTYPE document SYSTEM "document.dtd">
3
+
4
+ <document>
5
+ <title>�褷�������̩�Υڡ���</title>
6
+
7
+ <para>
8
+ �褷�������̩�Υڡ����ˤ褦������
9
+ </para>
10
+ <para>
11
+ ���Υڡ����� HTML4.0��CSS 1.0 �˽�򤷤� Web �֥饦���DZ������뤳�Ȥ�
12
+ �����ᤷ�ޤ���
13
+ </para>
14
+
15
+ <index>
16
+ <link xml:link="simple" href="/">[bekkoame �ۡ���ڡ���]</link>
17
+ </index>
18
+
19
+
20
+ <section>
21
+ <heading>��������</heading>
22
+ <subsection>
23
+ <heading>1998/07/08</heading>
24
+ <list>
25
+ <item>XML2HTML �ǥڡ�������������褦�ˤ��ޤ���</item>
26
+ <item>Ruby �ڡ����� XMLParser �⥸�塼��� Uconv �⥸�塼��θ���
27
+ ��Ϥ�ޤ���</item>
28
+ </list>
29
+ </subsection>
30
+ </section>
31
+
32
+
33
+ <section id="hobby">
34
+ <heading>��̣</heading>
35
+ <subsection id="ruby">
36
+ <heading><link xml:link="simple" href="Ruby.html">��Ruby</link></heading>
37
+ <para>�Ƕ�� Ruby �ʤΤǤ���</para>
38
+ </subsection>
39
+
40
+ <subsection id="xml">
41
+ <heading><link xml:link="simple" href="XML.html">��XML</link></heading>
42
+ <para>XML ���äƤޤ���</para>
43
+ <list>
44
+ <item>
45
+ <link xml:link="simple" href="index.xml">���Υڡ����Υ�����
46
+ (XML)</link>
47
+ </item>
48
+ <item>
49
+ <link xml:link="simple" href="document.dtd">���Υڡ����� DTD</link>
50
+ </item>
51
+ <item>
52
+ <link xml:link="simple" href="document.css">���Υڡ����Υ�������
53
+ ������</link>
54
+ </item>
55
+ </list>
56
+ </subsection>
57
+ </section>
58
+
59
+ <section id="misc">
60
+ <heading>����¾�Υڡ���</heading>
61
+ <list>
62
+ <item><link xml:link="simple" href="http://www.cipuco.net/">
63
+ CIPUCO!!</link></item>
64
+ </list>
65
+ </section>
66
+
67
+ <rpara>
68
+ Copyright 1998 by
69
+ <link xml:link="simple" href="mailto:yoshidam@yoshidam.net">
70
+ Yoshida Masato (yoshidam@yoshidam.net)</link>
71
+ </rpara>
72
+ </document>
@@ -0,0 +1,72 @@
1
+ <?xml version="1.0" encoding="iso-2022-jp"?>
2
+ <!DOCTYPE document SYSTEM "document.dtd">
3
+
4
+ <document>
5
+ <title>$B$h$7$@$`$NHkL)$N%Z!<%8(B</title>
6
+
7
+ <para>
8
+ $B$h$7$@$`$NHkL)$N%Z!<%8$K$h$&$3$=!y(B
9
+ </para>
10
+ <para>
11
+ $B$3$N%Z!<%8$O(B HTML4.0$B!$(BCSS 1.0 $B$K=`5r$7$?(B Web $B%V%i%&%6$G1\Mw$9$k$3$H$r(B
12
+ $B$*4+$a$7$^$9!#(B
13
+ </para>
14
+
15
+ <index>
16
+ <link xml:link="simple" href="/">[bekkoame $B%[!<%`%Z!<%8(B]</link>
17
+ </index>
18
+
19
+
20
+ <section>
21
+ <heading>$B99?7>pJs(B</heading>
22
+ <subsection>
23
+ <heading>1998/07/08</heading>
24
+ <list>
25
+ <item>XML2HTML $B$G%Z!<%8$r@8@.$9$k$h$&$K$7$^$7$?(B</item>
26
+ <item>Ruby $B%Z!<%8$G(B XMLParser $B%b%8%e!<%k$H(B Uconv $B%b%8%e!<%k$N8x3+(B
27
+ $B$r;O$a$^$7$?(B</item>
28
+ </list>
29
+ </subsection>
30
+ </section>
31
+
32
+
33
+ <section id="hobby">
34
+ <heading>$B<qL#(B</heading>
35
+ <subsection id="ruby">
36
+ <heading><link xml:link="simple" href="Ruby.html">$B"v(BRuby</link></heading>
37
+ <para>$B:G6a$O(B Ruby $B$J$N$G$9!#(B</para>
38
+ </subsection>
39
+
40
+ <subsection id="xml">
41
+ <heading><link xml:link="simple" href="XML.html">$B"v(BXML</link></heading>
42
+ <para>XML $B$b$d$C$F$^$9!#(B</para>
43
+ <list>
44
+ <item>
45
+ <link xml:link="simple" href="index.xml">$B$3$N%Z!<%8$N%=!<%9(B
46
+ (XML)</link>
47
+ </item>
48
+ <item>
49
+ <link xml:link="simple" href="document.dtd">$B$3$N%Z!<%8$N(B DTD</link>
50
+ </item>
51
+ <item>
52
+ <link xml:link="simple" href="document.css">$B$3$N%Z!<%8$N%9%?%$%k(B
53
+ $B%7!<%H(B</link>
54
+ </item>
55
+ </list>
56
+ </subsection>
57
+ </section>
58
+
59
+ <section id="misc">
60
+ <heading>$B$=$NB>$N%Z!<%8(B</heading>
61
+ <list>
62
+ <item><link xml:link="simple" href="http://www.cipuco.net/">
63
+ CIPUCO!!</link></item>
64
+ </list>
65
+ </section>
66
+
67
+ <rpara>
68
+ Copyright 1998 by
69
+ <link xml:link="simple" href="mailto:yoshidam@yoshidam.net">
70
+ Yoshida Masato (yoshidam@yoshidam.net)</link>
71
+ </rpara>
72
+ </document>