1 |
#!/usr/bin/perl |
#!/usr/bin/perl |
2 |
## This file is automatically generated |
## This file is automatically generated |
3 |
## at 2006-11-04T12:47:31+00:00, |
## at 2006-11-05T08:23:49+00:00, |
4 |
## from file "Element.dis", |
## from file "Element.dis", |
5 |
## module <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.Element>, |
## module <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.Element>, |
6 |
## for <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOMLatest>. |
## for <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOMLatest>. |
7 |
## Don't edit by hand! |
## Don't edit by hand! |
8 |
use strict; |
use strict; |
9 |
require Message::DOM::DOMCore; |
require Message::DOM::DOMCore; |
10 |
|
require Message::DOM::Document; |
11 |
require Message::DOM::TreeCore; |
require Message::DOM::TreeCore; |
12 |
require Message::Util::Error::DOMException; |
require Message::Util::Error::DOMException; |
13 |
package Message::DOM::Element; |
package Message::DOM::Element; |
14 |
our $VERSION = 20061104.1247; |
our $VERSION = 20061105.0823; |
15 |
|
package Message::DOM::Element::ManakaiDOMDocumentElement; |
16 |
|
our $VERSION = 20061105.0823; |
17 |
|
push @Message::DOM::Document::ManakaiDOMDocument::ISA, q<Message::DOM::Element::ManakaiDOMDocumentElement> unless Message::DOM::Document::ManakaiDOMDocument->isa (q<Message::DOM::Element::ManakaiDOMDocumentElement>); |
18 |
|
use Char::Class::XML 'InXMLNCNameChar10', |
19 |
|
'InXMLNCNameChar11', |
20 |
|
'InXMLNCNameStartChar11', |
21 |
|
'InXMLNameChar10', |
22 |
|
'InXMLNameChar11', |
23 |
|
'InXMLNameStartChar11', |
24 |
|
'InXML_NCNameStartChar10', |
25 |
|
'InXML_NameStartChar10'; |
26 |
|
sub create_element ($$) { |
27 |
|
my ($self, $tagName) = @_; |
28 |
|
my $r; |
29 |
|
|
30 |
|
{ |
31 |
|
|
32 |
|
my |
33 |
|
$strict = $self-> |
34 |
|
strict_error_checking |
35 |
|
; |
36 |
|
if ($strict) { |
37 |
|
my $version = $self-> |
38 |
|
xml_version |
39 |
|
; |
40 |
|
|
41 |
|
|
42 |
|
{ |
43 |
|
|
44 |
|
if |
45 |
|
(defined $tagName) { |
46 |
|
|
47 |
|
|
48 |
|
{ |
49 |
|
|
50 |
|
if |
51 |
|
(((not defined $version or $version eq '1.0') and |
52 |
|
not |
53 |
|
($tagName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/) |
54 |
|
) or |
55 |
|
(defined $version and $version eq '1.1' and |
56 |
|
not |
57 |
|
($tagName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/) |
58 |
|
)) { |
59 |
|
|
60 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $tagName, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_PARAM_NAME'; |
61 |
|
|
62 |
|
; |
63 |
|
} |
64 |
|
|
65 |
|
|
66 |
|
|
67 |
|
} |
68 |
|
|
69 |
|
; |
70 |
|
|
71 |
|
|
72 |
|
; |
73 |
|
} |
74 |
|
|
75 |
|
|
76 |
|
} |
77 |
|
|
78 |
|
; |
79 |
|
} |
80 |
|
|
81 |
|
|
82 |
|
{ |
83 |
|
|
84 |
|
local $Error::Depth = $Error::Depth + 1; |
85 |
|
|
86 |
|
{ |
87 |
|
|
88 |
|
|
89 |
|
|
90 |
|
$self-> |
91 |
|
strict_error_checking |
92 |
|
( |
93 |
|
0 |
94 |
|
); |
95 |
|
$r = $self-> |
96 |
|
create_element_ns |
97 |
|
( |
98 |
|
undef |
99 |
|
, [ |
100 |
|
undef |
101 |
|
, $tagName]); |
102 |
|
$self-> |
103 |
|
strict_error_checking |
104 |
|
($strict); |
105 |
|
|
106 |
|
|
107 |
|
|
108 |
|
} |
109 |
|
|
110 |
|
|
111 |
|
;} |
112 |
|
|
113 |
|
; |
114 |
|
|
115 |
|
|
116 |
|
} |
117 |
|
$r} |
118 |
|
sub create_element_ns ($$$) { |
119 |
|
my ($self, $namespaceURI, $qualifiedName) = @_; |
120 |
|
|
121 |
|
{ |
122 |
|
|
123 |
|
if |
124 |
|
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
125 |
|
require Message::DOM::DOMMain; |
126 |
|
|
127 |
|
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
128 |
|
|
129 |
|
; |
130 |
|
|
131 |
|
|
132 |
|
|
133 |
|
{ |
134 |
|
|
135 |
|
|
136 |
|
$namespaceURI = undef; |
137 |
|
|
138 |
|
|
139 |
|
|
140 |
|
} |
141 |
|
|
142 |
|
; |
143 |
|
} |
144 |
|
|
145 |
|
|
146 |
|
} |
147 |
|
my $r; |
148 |
|
|
149 |
|
{ |
150 |
|
|
151 |
|
my |
152 |
|
($prefix, $lname) = ref $qualifiedName eq 'ARRAY' |
153 |
|
? @$qualifiedName |
154 |
|
: split /:/, $qualifiedName, 2; |
155 |
|
($prefix, $lname) = ( |
156 |
|
undef |
157 |
|
, $prefix) unless defined $lname; |
158 |
|
$qualifiedName = defined $prefix ? $prefix.':'.$lname : $lname; |
159 |
|
|
160 |
|
if ($self-> |
161 |
|
strict_error_checking |
162 |
|
) { |
163 |
|
my $version = $self-> |
164 |
|
xml_version |
165 |
|
; |
166 |
|
|
167 |
|
|
168 |
|
{ |
169 |
|
|
170 |
|
if |
171 |
|
(defined $version and $version eq '1.1') { |
172 |
|
unless ( |
173 |
|
($qualifiedName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/) |
174 |
|
) { |
175 |
|
|
176 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => '1.1', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
177 |
|
|
178 |
|
; |
179 |
|
} |
180 |
|
unless ( |
181 |
|
($qualifiedName =~ /\A\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*(?::\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*)?\z/) |
182 |
|
) { |
183 |
|
|
184 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_MALFORMED_QNAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => '1.1', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
185 |
|
|
186 |
|
; |
187 |
|
} |
188 |
|
} else { |
189 |
|
unless ( |
190 |
|
($qualifiedName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/) |
191 |
|
) { |
192 |
|
|
193 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
194 |
|
|
195 |
|
; |
196 |
|
} |
197 |
|
unless ( |
198 |
|
($qualifiedName =~ /\A\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*(?::\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*)?\z/) |
199 |
|
) { |
200 |
|
|
201 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_MALFORMED_QNAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
202 |
|
|
203 |
|
; |
204 |
|
} |
205 |
|
} |
206 |
|
|
207 |
|
|
208 |
|
} |
209 |
|
|
210 |
|
; |
211 |
|
|
212 |
|
|
213 |
|
{ |
214 |
|
|
215 |
|
if |
216 |
|
(defined $prefix) { |
217 |
|
if (not defined $namespaceURI) { |
218 |
|
|
219 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_PREFIX_WITH_NULL_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
220 |
|
|
221 |
|
; |
222 |
|
} elsif ($prefix eq 'xml' and $namespaceURI ne |
223 |
|
'http://www.w3.org/XML/1998/namespace' |
224 |
|
) { |
225 |
|
|
226 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#namespaceName' => $namespaceURI, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_XML_WITH_OTHER_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
227 |
|
|
228 |
|
; |
229 |
|
} elsif ($prefix eq 'xmlns' and $namespaceURI ne |
230 |
|
'http://www.w3.org/2000/xmlns/' |
231 |
|
) { |
232 |
|
|
233 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#namespaceName' => $namespaceURI, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_XMLNS_WITH_OTHER_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
234 |
|
|
235 |
|
; |
236 |
|
} elsif ($namespaceURI eq |
237 |
|
'http://www.w3.org/XML/1998/namespace' and |
238 |
|
$prefix ne 'xml') { |
239 |
|
|
240 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XML_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
241 |
|
|
242 |
|
; |
243 |
|
} elsif ($namespaceURI eq |
244 |
|
'http://www.w3.org/2000/xmlns/' and |
245 |
|
$prefix ne 'xmlns') { |
246 |
|
|
247 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XMLNS_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
248 |
|
|
249 |
|
; |
250 |
|
} |
251 |
|
} else { ## No prefix |
252 |
|
if (not defined $namespaceURI) { |
253 |
|
# |
254 |
|
} elsif ($namespaceURI eq |
255 |
|
'http://www.w3.org/2000/xmlns/' and |
256 |
|
$lname ne 'xmlns') { |
257 |
|
|
258 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => undef, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XMLNS_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
259 |
|
|
260 |
|
; |
261 |
|
} |
262 |
|
} |
263 |
|
|
264 |
|
|
265 |
|
} |
266 |
|
|
267 |
|
; |
268 |
|
if (defined $namespaceURI and $namespaceURI eq |
269 |
|
'http://www.w3.org/2000/xmlns/' and |
270 |
|
|
271 |
|
($qualifiedName eq 'xmlns' or |
272 |
|
(defined $prefix and $prefix eq 'xmlns'))) { |
273 |
|
|
274 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'create_element_ns', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Element::ManakaiDOMDocumentElement', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'qualifiedName', 'http://www.w3.org/2001/04/infoset#localName' => $lname, 'http://www.w3.org/2001/04/infoset#namespaceName' => $namespaceURI, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XMLNS_URI'; |
275 |
|
|
276 |
|
; |
277 |
|
} |
278 |
|
} |
279 |
|
|
280 |
|
my $bag = |
281 |
|
$self->{'b'} |
282 |
|
; |
283 |
|
my $stem; |
284 |
|
|
285 |
|
|
286 |
|
{ |
287 |
|
|
288 |
|
|
289 |
|
$stem = 'Message::DOM::Element::ManakaiDOMElement'->___create_node_stem ($bag, { |
290 |
|
|
291 |
|
'rc' |
292 |
|
=> 0, |
293 |
|
|
294 |
|
'id' |
295 |
|
=> \ |
296 |
|
( |
297 |
|
'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' . |
298 |
|
(++$Message::Util::ManakaiNode::UniqueIDN) |
299 |
|
) |
300 |
|
, |
301 |
|
}, { |
302 |
|
'od' => $self, |
303 |
|
'ns' => \$namespaceURI, |
304 |
|
'pfx' => \$prefix, |
305 |
|
'ln' => \$lname, |
306 |
|
}); |
307 |
|
|
308 |
|
|
309 |
|
{ |
310 |
|
|
311 |
|
if |
312 |
|
(defined 'Message::DOM::Element::ManakaiDOMElement') { |
313 |
|
if (ref 'Message::DOM::Element::ManakaiDOMElement' eq 'SCALAR') { |
314 |
|
$stem->{'cls'} = 'Message::DOM::Element::ManakaiDOMElement'; |
315 |
|
} elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'}) { |
316 |
|
$stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'}; |
317 |
|
} else { |
318 |
|
require Scalar::Util; |
319 |
|
$stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'} = \('Message::DOM::Element::ManakaiDOMElement'); |
320 |
|
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'}); |
321 |
|
} |
322 |
|
} else { |
323 |
|
CORE::delete $stem->{'cls'}; |
324 |
|
} |
325 |
|
|
326 |
|
|
327 |
|
} |
328 |
|
|
329 |
|
; |
330 |
|
$bag->{${$stem->{ |
331 |
|
'id' |
332 |
|
}}} = $stem; |
333 |
|
|
334 |
|
|
335 |
|
} |
336 |
|
|
337 |
|
; |
338 |
|
|
339 |
|
|
340 |
|
{ |
341 |
|
|
342 |
|
|
343 |
|
$r = ${$stem->{ |
344 |
|
'cls' |
345 |
|
}}->___create_node_ref ({ |
346 |
|
|
347 |
|
'id' |
348 |
|
=> $stem->{ |
349 |
|
'id' |
350 |
|
}, |
351 |
|
|
352 |
|
'b' |
353 |
|
=> $bag, |
354 |
|
}, { |
355 |
|
}); |
356 |
|
$stem->{ |
357 |
|
'rc' |
358 |
|
}++; |
359 |
|
|
360 |
|
|
361 |
|
} |
362 |
|
|
363 |
|
; |
364 |
|
|
365 |
|
## Default attributes |
366 |
|
|
367 |
|
|
368 |
|
{ |
369 |
|
|
370 |
|
|
371 |
|
{ |
372 |
|
|
373 |
|
local $Error::Depth = $Error::Depth + 1; |
374 |
|
|
375 |
|
{ |
376 |
|
|
377 |
|
|
378 |
|
XDA: |
379 |
|
{ |
380 |
|
my $__cfg = $self-> |
381 |
|
dom_config |
382 |
|
; |
383 |
|
last XDA unless $__cfg-> |
384 |
|
get_parameter |
385 |
|
|
386 |
|
( |
387 |
|
'http://suika.fam.cx/www/2006/dom-config/dtd-default-attribute' |
388 |
|
); |
389 |
|
my $__doctype = $self-> |
390 |
|
doctype |
391 |
|
; |
392 |
|
last XDA unless defined $__doctype; |
393 |
|
$__doctype = $__doctype-> |
394 |
|
get_feature |
395 |
|
|
396 |
|
( |
397 |
|
'http://suika.fam.cx/www/2006/feature/XDoctype' |
398 |
|
=> '3.0'); |
399 |
|
last XDA unless defined $__doctype; |
400 |
|
my $__et = $__doctype-> |
401 |
|
get_element_type_definition_node |
402 |
|
|
403 |
|
($qualifiedName); |
404 |
|
if ($__et) { |
405 |
|
my $__orig_strict = $self-> |
406 |
|
strict_error_checking |
407 |
|
; |
408 |
|
$self-> |
409 |
|
strict_error_checking |
410 |
|
( |
411 |
|
0 |
412 |
|
); |
413 |
|
my %__gattr; |
414 |
|
my %__has_attr; |
415 |
|
my %__pfx_to_uri; |
416 |
|
my $__copy_asis = $__cfg-> |
417 |
|
get_parameter |
418 |
|
|
419 |
|
( |
420 |
|
'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree' |
421 |
|
); |
422 |
|
$__cfg-> |
423 |
|
set_parameter |
424 |
|
|
425 |
|
( |
426 |
|
'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree' |
427 |
|
=> |
428 |
|
1 |
429 |
|
); |
430 |
|
for my $__at (@{$__et-> |
431 |
|
attribute_definitions |
432 |
|
}) { |
433 |
|
my $__at_default = $__at-> |
434 |
|
default_type |
435 |
|
; |
436 |
|
if ($__at_default == |
437 |
|
4 or |
438 |
|
|
439 |
|
$__at_default == |
440 |
|
1 |
441 |
|
) { |
442 |
|
my ($__nn1, $__nn2) = split /:/, $__at-> |
443 |
|
node_name |
444 |
|
; |
445 |
|
if (defined $__nn2) { # prefixed |
446 |
|
if ($__nn1 eq 'xmlns') { |
447 |
|
## TODO: NCName check, prefix check and NSURI check |
448 |
|
my $__attr = $self-> |
449 |
|
create_attribute_ns |
450 |
|
|
451 |
|
( |
452 |
|
'http://www.w3.org/2000/xmlns/' |
453 |
|
, [$__nn1, $__nn2]); |
454 |
|
for my $__at_child (@{$__at-> |
455 |
|
child_nodes |
456 |
|
}) { |
457 |
|
$__attr-> |
458 |
|
append_child |
459 |
|
|
460 |
|
($__at_child-> |
461 |
|
clone_node |
462 |
|
( |
463 |
|
1 |
464 |
|
)); |
465 |
|
} |
466 |
|
$__attr-> |
467 |
|
manakai_attribute_type |
468 |
|
|
469 |
|
($__at-> |
470 |
|
declared_type |
471 |
|
); |
472 |
|
my $__nsuri = $__attr-> |
473 |
|
value |
474 |
|
; |
475 |
|
## TODO: Namespace well-formedness check (NSURI), v1.1 chk |
476 |
|
$__pfx_to_uri{$__nn2} = $__nsuri; |
477 |
|
$r-> |
478 |
|
set_attribute_node_ns |
479 |
|
($__attr); |
480 |
|
## This method changes |specified| flag |
481 |
|
$__attr-> |
482 |
|
specified |
483 |
|
( |
484 |
|
0 |
485 |
|
); |
486 |
|
$__has_attr{ |
487 |
|
'http://www.w3.org/2000/xmlns/' |
488 |
|
}->{$__nn2} = |
489 |
|
1 |
490 |
|
; |
491 |
|
} else { |
492 |
|
## TODO: NCName check |
493 |
|
$__gattr{$__nn1}->{$__nn2} = $__at; |
494 |
|
} |
495 |
|
} else { # no prefixed |
496 |
|
my $__attr; |
497 |
|
if ($__nn1 eq 'xmlns') { |
498 |
|
$__attr = $self-> |
499 |
|
create_attribute_ns |
500 |
|
|
501 |
|
( |
502 |
|
'http://www.w3.org/2000/xmlns/' |
503 |
|
, 'xmlns'); |
504 |
|
$__has_attr{ |
505 |
|
'http://www.w3.org/2000/xmlns/' |
506 |
|
}->{xmlns} = |
507 |
|
1 |
508 |
|
; |
509 |
|
} else { |
510 |
|
$__attr = $self-> |
511 |
|
create_attribute_ns |
512 |
|
|
513 |
|
( |
514 |
|
undef |
515 |
|
, $__nn1); |
516 |
|
## TODO: NCName check |
517 |
|
} |
518 |
|
for my $__at_child (@{$__at-> |
519 |
|
child_nodes |
520 |
|
}) { |
521 |
|
$__attr-> |
522 |
|
append_child |
523 |
|
|
524 |
|
($__at_child-> |
525 |
|
clone_node |
526 |
|
( |
527 |
|
1 |
528 |
|
)); |
529 |
|
} |
530 |
|
$__attr-> |
531 |
|
manakai_attribute_type |
532 |
|
|
533 |
|
($__at-> |
534 |
|
declared_type |
535 |
|
); |
536 |
|
## TODO: Namespace well-formedness check (NSURI) |
537 |
|
$r-> |
538 |
|
set_attribute_node_ns |
539 |
|
($__attr); |
540 |
|
## This method changes |specified| flag |
541 |
|
$__attr-> |
542 |
|
specified |
543 |
|
( |
544 |
|
0 |
545 |
|
); |
546 |
|
} |
547 |
|
} |
548 |
|
} # attrdefs |
549 |
|
for my $__pfx (keys %__gattr) { |
550 |
|
my $__nsuri = $__pfx_to_uri{$__pfx}; |
551 |
|
unless (defined $__nsuri) { |
552 |
|
## TODO: Namespace well-formedness error |
553 |
|
} |
554 |
|
LN: for my $__ln (keys %{$__gattr{$__pfx}}) { |
555 |
|
if ($__has_attr{defined $__nsuri ? $__nsuri : ''}->{$__ln}) { |
556 |
|
## TODO: Namespace well-formedness error |
557 |
|
next LN; |
558 |
|
} |
559 |
|
## TODO: NCName check, prefix check and NSURI check |
560 |
|
my $__at = $__gattr{$__pfx}->{$__ln}; |
561 |
|
my $__attr = $self-> |
562 |
|
create_attribute_ns |
563 |
|
|
564 |
|
($__nsuri, [$__pfx, $__ln]); |
565 |
|
for my $__at_child (@{$__at-> |
566 |
|
child_nodes |
567 |
|
}) { |
568 |
|
$__attr-> |
569 |
|
append_child |
570 |
|
|
571 |
|
($__at_child-> |
572 |
|
clone_node |
573 |
|
( |
574 |
|
1 |
575 |
|
)); |
576 |
|
} |
577 |
|
$__attr-> |
578 |
|
manakai_attribute_type |
579 |
|
|
580 |
|
($__at-> |
581 |
|
declared_type |
582 |
|
); |
583 |
|
$r-> |
584 |
|
set_attribute_node_ns |
585 |
|
($__attr); |
586 |
|
## This method changes |specified| flag |
587 |
|
$__attr-> |
588 |
|
specified |
589 |
|
( |
590 |
|
0 |
591 |
|
); |
592 |
|
$__has_attr{defined $__nsuri ? $__nsuri : ''}->{$__ln} = |
593 |
|
1 |
594 |
|
; |
595 |
|
} # LN |
596 |
|
} # pfx |
597 |
|
$__cfg-> |
598 |
|
set_parameter |
599 |
|
|
600 |
|
( |
601 |
|
'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree' |
602 |
|
=> $__copy_asis); |
603 |
|
$self-> |
604 |
|
strict_error_checking |
605 |
|
($__orig_strict); |
606 |
|
} |
607 |
|
} # XDA |
608 |
|
|
609 |
|
|
610 |
|
|
611 |
|
} |
612 |
|
|
613 |
|
|
614 |
|
;} |
615 |
|
|
616 |
|
; |
617 |
|
|
618 |
|
|
619 |
|
} |
620 |
|
|
621 |
|
; |
622 |
|
|
623 |
|
|
624 |
|
} |
625 |
|
$r} |
626 |
|
sub create_attribute ($$) { |
627 |
|
my ($self, $name) = @_; |
628 |
|
my $r; |
629 |
|
|
630 |
|
{ |
631 |
|
|
632 |
|
my |
633 |
|
$strict = $self-> |
634 |
|
strict_error_checking |
635 |
|
; |
636 |
|
if ($strict) { |
637 |
|
my $version = $self-> |
638 |
|
xml_version |
639 |
|
; |
640 |
|
|
641 |
|
|
642 |
|
{ |
643 |
|
|
644 |
|
if |
645 |
|
(defined $name) { |
646 |
|
|
647 |
|
|
648 |
|
{ |
649 |
|
|
650 |
|
if |
651 |
|
(((not defined $version or $version eq '1.0') and |
652 |
|
not |
653 |
|
($name =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/) |
654 |
|
) or |
655 |
|
(defined $version and $version eq '1.1' and |
656 |
|
not |
657 |
|
($name =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/) |
658 |
|
)) { |
659 |
|
|
660 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $name, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_PARAM_NAME'; |
661 |
|
|
662 |
|
; |
663 |
|
} |
664 |
|
|
665 |
|
|
666 |
|
|
667 |
|
} |
668 |
|
|
669 |
|
; |
670 |
|
|
671 |
|
|
672 |
|
; |
673 |
|
} |
674 |
|
|
675 |
|
|
676 |
|
} |
677 |
|
|
678 |
|
; |
679 |
|
} |
680 |
|
|
681 |
|
|
682 |
|
{ |
683 |
|
|
684 |
|
local $Error::Depth = $Error::Depth + 1; |
685 |
|
|
686 |
|
{ |
687 |
|
|
688 |
|
|
689 |
|
|
690 |
|
$self-> |
691 |
|
strict_error_checking |
692 |
|
( |
693 |
|
0 |
694 |
|
); |
695 |
|
$r = $self-> |
696 |
|
create_attribute_ns |
697 |
|
( |
698 |
|
undef |
699 |
|
, [ |
700 |
|
undef |
701 |
|
, $name]); |
702 |
|
$self-> |
703 |
|
strict_error_checking |
704 |
|
($strict); |
705 |
|
|
706 |
|
|
707 |
|
|
708 |
|
} |
709 |
|
|
710 |
|
|
711 |
|
;} |
712 |
|
|
713 |
|
; |
714 |
|
|
715 |
|
|
716 |
|
} |
717 |
|
$r} |
718 |
|
sub create_attribute_ns ($$$) { |
719 |
|
my ($self, $namespaceURI, $qualifiedName) = @_; |
720 |
|
|
721 |
|
{ |
722 |
|
|
723 |
|
if |
724 |
|
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
725 |
|
require Message::DOM::DOMMain; |
726 |
|
|
727 |
|
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
728 |
|
|
729 |
|
; |
730 |
|
|
731 |
|
|
732 |
|
|
733 |
|
{ |
734 |
|
|
735 |
|
|
736 |
|
$namespaceURI = undef; |
737 |
|
|
738 |
|
|
739 |
|
|
740 |
|
} |
741 |
|
|
742 |
|
; |
743 |
|
} |
744 |
|
|
745 |
|
|
746 |
|
} |
747 |
|
my $r; |
748 |
|
|
749 |
|
{ |
750 |
|
|
751 |
|
my |
752 |
|
($prefix, $lname) = ref $qualifiedName eq 'ARRAY' |
753 |
|
? @$qualifiedName |
754 |
|
: split /:/, $qualifiedName, 2; |
755 |
|
($prefix, $lname) = ( |
756 |
|
undef |
757 |
|
, $prefix) unless defined $lname; |
758 |
|
|
759 |
|
## TODO: autoload |
760 |
|
if ((defined $namespaceURI and $namespaceURI eq |
761 |
|
'http://www.w3.org/XML/1998/namespace' |
762 |
|
) or |
763 |
|
($lname =~ /^xml:/)) { |
764 |
|
require Message::DOM::XML; |
765 |
|
} |
766 |
|
|
767 |
|
if ($self-> |
768 |
|
strict_error_checking |
769 |
|
) { |
770 |
|
my $version = $self-> |
771 |
|
xml_version |
772 |
|
; |
773 |
|
$qualifiedName = defined $prefix ? $prefix.':'.$lname |
774 |
|
: $lname; |
775 |
|
|
776 |
|
|
777 |
|
{ |
778 |
|
|
779 |
|
if |
780 |
|
(defined $version and $version eq '1.1') { |
781 |
|
unless ( |
782 |
|
($qualifiedName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/) |
783 |
|
) { |
784 |
|
|
785 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => '1.1', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
786 |
|
|
787 |
|
; |
788 |
|
} |
789 |
|
unless ( |
790 |
|
($qualifiedName =~ /\A\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*(?::\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*)?\z/) |
791 |
|
) { |
792 |
|
|
793 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_MALFORMED_QNAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => '1.1', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
794 |
|
|
795 |
|
; |
796 |
|
} |
797 |
|
} else { |
798 |
|
unless ( |
799 |
|
($qualifiedName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/) |
800 |
|
) { |
801 |
|
|
802 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'INVALID_CHARACTER_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_BAD_NAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
803 |
|
|
804 |
|
; |
805 |
|
} |
806 |
|
unless ( |
807 |
|
($qualifiedName =~ /\A\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*(?::\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*)?\z/) |
808 |
|
) { |
809 |
|
|
810 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_MALFORMED_QNAME', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#name' => $qualifiedName, 'http://www.w3.org/2001/04/infoset#version' => $version, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureXMLQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => '$INPUT_NAME'; |
811 |
|
|
812 |
|
; |
813 |
|
} |
814 |
|
} |
815 |
|
|
816 |
|
|
817 |
|
} |
818 |
|
|
819 |
|
; |
820 |
|
|
821 |
|
|
822 |
|
{ |
823 |
|
|
824 |
|
if |
825 |
|
(defined $prefix) { |
826 |
|
if (not defined $namespaceURI) { |
827 |
|
|
828 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_PREFIX_WITH_NULL_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
829 |
|
|
830 |
|
; |
831 |
|
} elsif ($prefix eq 'xml' and $namespaceURI ne |
832 |
|
'http://www.w3.org/XML/1998/namespace' |
833 |
|
) { |
834 |
|
|
835 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#namespaceName' => $namespaceURI, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_XML_WITH_OTHER_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
836 |
|
|
837 |
|
; |
838 |
|
} elsif ($prefix eq 'xmlns' and $namespaceURI ne |
839 |
|
'http://www.w3.org/2000/xmlns/' |
840 |
|
) { |
841 |
|
|
842 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#namespaceName' => $namespaceURI, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_XMLNS_WITH_OTHER_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
843 |
|
|
844 |
|
; |
845 |
|
} elsif ($namespaceURI eq |
846 |
|
'http://www.w3.org/XML/1998/namespace' and |
847 |
|
$prefix ne 'xml') { |
848 |
|
|
849 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XML_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
850 |
|
|
851 |
|
; |
852 |
|
} elsif ($namespaceURI eq |
853 |
|
'http://www.w3.org/2000/xmlns/' and |
854 |
|
$prefix ne 'xmlns') { |
855 |
|
|
856 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => $prefix, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XMLNS_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
857 |
|
|
858 |
|
; |
859 |
|
} |
860 |
|
} else { ## No prefix |
861 |
|
if (not defined $namespaceURI) { |
862 |
|
# |
863 |
|
} elsif ($namespaceURI eq |
864 |
|
'http://www.w3.org/2000/xmlns/' and |
865 |
|
$lname ne 'xmlns') { |
866 |
|
|
867 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://www.w3.org/2001/04/infoset#prefix' => undef, 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#MDOM_NS_OTHER_WITH_XMLNS_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23checkXMLNamesQName+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
868 |
|
|
869 |
|
; |
870 |
|
} |
871 |
|
} |
872 |
|
|
873 |
|
|
874 |
|
} |
875 |
|
|
876 |
|
; |
877 |
|
} |
878 |
|
|
879 |
|
my $bag = |
880 |
|
$self->{'b'} |
881 |
|
; |
882 |
|
my $stem; |
883 |
|
|
884 |
|
|
885 |
|
{ |
886 |
|
|
887 |
|
|
888 |
|
$stem = 'Message::DOM::Element::ManakaiDOMAttr'->___create_node_stem ($bag, { |
889 |
|
|
890 |
|
'rc' |
891 |
|
=> 0, |
892 |
|
|
893 |
|
'id' |
894 |
|
=> \ |
895 |
|
( |
896 |
|
'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' . |
897 |
|
(++$Message::Util::ManakaiNode::UniqueIDN) |
898 |
|
) |
899 |
|
, |
900 |
|
}, { |
901 |
|
'od' => $self, |
902 |
|
'ns' => \$namespaceURI, |
903 |
|
'pfx' => \$prefix, |
904 |
|
'ln' => \$lname, |
905 |
|
'specified' => 1, |
906 |
|
}); |
907 |
|
|
908 |
|
|
909 |
|
{ |
910 |
|
|
911 |
|
if |
912 |
|
(defined 'Message::DOM::Element::ManakaiDOMAttr') { |
913 |
|
if (ref 'Message::DOM::Element::ManakaiDOMAttr' eq 'SCALAR') { |
914 |
|
$stem->{'cls'} = 'Message::DOM::Element::ManakaiDOMAttr'; |
915 |
|
} elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'}) { |
916 |
|
$stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'}; |
917 |
|
} else { |
918 |
|
require Scalar::Util; |
919 |
|
$stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'} = \('Message::DOM::Element::ManakaiDOMAttr'); |
920 |
|
Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'}); |
921 |
|
} |
922 |
|
} else { |
923 |
|
CORE::delete $stem->{'cls'}; |
924 |
|
} |
925 |
|
|
926 |
|
|
927 |
|
} |
928 |
|
|
929 |
|
; |
930 |
|
$bag->{${$stem->{ |
931 |
|
'id' |
932 |
|
}}} = $stem; |
933 |
|
|
934 |
|
|
935 |
|
} |
936 |
|
|
937 |
|
; |
938 |
|
|
939 |
|
|
940 |
|
{ |
941 |
|
|
942 |
|
|
943 |
|
$r = ${$stem->{ |
944 |
|
'cls' |
945 |
|
}}->___create_node_ref ({ |
946 |
|
|
947 |
|
'id' |
948 |
|
=> $stem->{ |
949 |
|
'id' |
950 |
|
}, |
951 |
|
|
952 |
|
'b' |
953 |
|
=> $bag, |
954 |
|
}, { |
955 |
|
}); |
956 |
|
$stem->{ |
957 |
|
'rc' |
958 |
|
}++; |
959 |
|
|
960 |
|
|
961 |
|
} |
962 |
|
|
963 |
|
; |
964 |
|
|
965 |
|
## Attribute type information |
966 |
|
if ((defined $namespaceURI and $namespaceURI eq |
967 |
|
'http://www.w3.org/XML/1998/namespace' and |
968 |
|
|
969 |
|
$lname eq 'id') or |
970 |
|
(not defined $namespaceURI and $lname eq 'xml:id')) { |
971 |
|
|
972 |
|
|
973 |
|
{ |
974 |
|
|
975 |
|
local $Error::Depth = $Error::Depth + 1; |
976 |
|
|
977 |
|
{ |
978 |
|
|
979 |
|
|
980 |
|
if |
981 |
|
($self-> |
982 |
|
dom_config |
983 |
|
|
984 |
|
-> |
985 |
|
get_parameter |
986 |
|
|
987 |
|
( |
988 |
|
'http://suika.fam.cx/www/2006/dom-config/xml-id' |
989 |
|
)) { |
990 |
|
$r-> |
991 |
|
manakai_attribute_type |
992 |
|
( |
993 |
|
2 |
994 |
|
); |
995 |
|
} |
996 |
|
|
997 |
|
|
998 |
|
|
999 |
|
} |
1000 |
|
|
1001 |
|
|
1002 |
|
;} |
1003 |
|
|
1004 |
|
; |
1005 |
|
} |
1006 |
|
|
1007 |
|
|
1008 |
|
} |
1009 |
|
$r} |
1010 |
|
$Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::Element::ManakaiDOMDocumentElement>}->{has_feature} = {}; |
1011 |
|
$Message::DOM::ClassPoint{q<Message::DOM::Element::ManakaiDOMDocumentElement>} = 0; |
1012 |
package Message::DOM::IFLatest::Element; |
package Message::DOM::IFLatest::Element; |
1013 |
our $VERSION = 20061104.1247; |
our $VERSION = 20061105.0823; |
1014 |
package Message::DOM::Element::ManakaiDOMElement; |
package Message::DOM::Element::ManakaiDOMElement; |
1015 |
our $VERSION = 20061104.1247; |
our $VERSION = 20061105.0823; |
1016 |
push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode', |
push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode', |
1017 |
'Message::DOM::IF::Element', |
'Message::DOM::IF::Element', |
1018 |
'Message::DOM::IF::Node', |
'Message::DOM::IF::Node', |
1150 |
my |
my |
1151 |
$class; |
$class; |
1152 |
CLS: { |
CLS: { |
1153 |
if (defined $opt->{ |
## From the cache |
|
'nrcls' |
|
|
}) { |
|
|
$class = $opt->{ |
|
|
'nrcls' |
|
|
}; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last CLS; |
|
|
} # IFCHK |
|
|
} |
|
|
|
|
1154 |
|
|
1155 |
|
|
1156 |
{ |
{ |
1168 |
|
|
1169 |
; |
; |
1170 |
if (defined $class) { |
if (defined $class) { |
1171 |
IFCHK: { |
last CLS; |
1172 |
for (@{$opt->{ |
} else { |
1173 |
'nrifs' |
$class = \$self; |
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last CLS; |
|
|
} # IFCHK |
|
1174 |
} |
} |
1175 |
|
|
1176 |
my $nsuri; |
my $nsuri; |
1209 |
|
|
1210 |
; |
; |
1211 |
|
|
1212 |
A: { |
## Use cases: |
1213 |
## Use cases: |
## - |html5:a| element type |
1214 |
## - |html5:a| element type |
## - |html5:*| element types |
1215 |
## - |html5:*| element types |
A: for my $nm ( |
1216 |
|
[$nsuri, $ln], |
1217 |
for my $nm ( |
[$nsuri, \'*'], |
1218 |
[$nsuri, $ln], |
) { |
1219 |
[$nsuri, \'*'], |
unless ($Message::DOM::Element::ElementClass |
1220 |
) { |
->{${$nm->[0]}}->{${$nm->[1]}}) { |
1221 |
unless ($Message::DOM::Element::ElementClass |
if ($Message::Util::AutoLoad::Registry::ElementType |
1222 |
->{${$nm->[0]}}->{${$nm->[1]}}) { |
->{${$nm->[0]}}->{${$nm->[1]}}) { |
1223 |
if ($Message::Util::AutoLoad::Registry::ElementType |
eval qq{require |
1224 |
->{${$nm->[0]}}->{${$nm->[1]}}) { |
$Message::Util::AutoLoad::Registry::ElementType->{ |
1225 |
eval qq{require $Message::Util::AutoLoad::Registry::ElementType->{${$nm->[0]}}->{${$nm->[1]}}->{module}}; |
${$nm->[0]}}->{${$nm->[1]}}->{module}}; |
1226 |
die $@ if $@; |
die $@ if $@; |
|
} |
|
|
} |
|
|
|
|
|
if ($Message::DOM::Element::ElementClass |
|
|
->{${$nm->[0]}}->{${$nm->[1]}}) { |
|
|
$class = \($Message::DOM::Element::ElementClass |
|
|
->{${$nm->[0]}}->{${$nm->[1]}}); |
|
|
last A; |
|
|
} |
|
|
} |
|
|
|
|
|
for my $nm ( |
|
|
[$nsuri, $ln], |
|
|
[$nsuri, \'*'], |
|
|
) { |
|
|
for my $__class (sort { |
|
|
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
|
|
} grep { |
|
|
$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMElement' |
|
|
} |
|
|
->{compat_class_by_type} |
|
|
->{${$nm->[0]}}->{${$nm->[1]}}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMElement' |
|
|
} |
|
|
->{compat_class_by_type} |
|
|
->{${$nm->[0]}}->{${$nm->[1]}} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{xml}->{'3.0'}) { |
|
|
$class = \$__class; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last A; |
|
|
} # IFCHK |
|
|
} |
|
1227 |
} |
} |
1228 |
} |
} |
1229 |
|
|
1230 |
## Generic |
if ($Message::DOM::Element::ElementClass |
1231 |
CLASS: for my $__class (sort { |
->{${$nm->[0]}}->{${$nm->[1]}}) { |
1232 |
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
$class = \($Message::DOM::Element::ElementClass |
1233 |
} grep { |
->{${$nm->[0]}}->{${$nm->[1]}}); |
1234 |
$Message::DOM::DOMFeature::ClassInfo |
last A; |
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMElement' |
|
|
} |
|
|
->{compat_class}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMElement' |
|
|
} |
|
|
->{compat_class} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{xml}->{'3.0'}) { |
|
|
$class = \$__class; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last A; |
|
|
} # IFCHK |
|
|
} |
|
1235 |
} |
} |
|
|
|
|
## Default |
|
|
$class = \$self; |
|
1236 |
} # A |
} # A |
1237 |
|
|
1238 |
|
|
1366 |
|
|
1367 |
if |
if |
1368 |
(defined $given and $given eq '') { |
(defined $given and $given eq '') { |
1369 |
|
require Message::DOM::DOMMain; |
1370 |
|
|
1371 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-prefix', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureNamespacePrefix+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-prefix', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureNamespacePrefix+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
1372 |
|
|
2878 |
{ |
{ |
2879 |
|
|
2880 |
if |
if |
2881 |
($Message::DOM::DOMFeature::ClassInfo->{ref $self} |
($Message::Util::AutoLoad::Registry::Feature->{$feature}->{$version}) { |
|
->{has_feature}->{$feature}->{$version} or |
|
|
$Message::Util::AutoLoad::Registry::Feature |
|
|
->{$feature}->{$version}) { |
|
2882 |
$r = $self; |
$r = $self; |
|
} else { |
|
|
CLASS: for my $__class (sort { |
|
|
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
|
|
} grep { |
|
|
$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Element::ManakaiDOMElement'} |
|
|
->{compat_class}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Element::ManakaiDOMElement'} |
|
|
->{compat_class} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{$feature}->{$version} or |
|
|
$Message::Util::AutoLoad::Registry::Feature |
|
|
->{$feature}->{$version}) { |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$r = ${($self->{'b'})->{${($self->{'id'})}}->{ |
|
|
'cls' |
|
|
}}->___create_node_ref ({ |
|
|
|
|
|
'id' |
|
|
=> ($self->{'id'}), |
|
|
|
|
|
'b' |
|
|
=> ($self->{'b'}), |
|
|
}, { |
|
|
'nrcls' => \$__class, |
|
|
}); |
|
|
($self->{'b'})->{${($self->{'id'})}}->{ |
|
|
'rc' |
|
|
}++; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
last CLASS; |
|
|
} |
|
|
} # CLASS |
|
2883 |
} |
} |
2884 |
|
|
2885 |
|
|
3180 |
|
|
3181 |
if |
if |
3182 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
3183 |
|
require Message::DOM::DOMMain; |
3184 |
|
|
3185 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
3186 |
|
|
3187 |
; |
; |
3188 |
|
|
3387 |
|
|
3388 |
if |
if |
3389 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
3390 |
|
require Message::DOM::DOMMain; |
3391 |
|
|
3392 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
3393 |
|
|
3394 |
; |
; |
3395 |
|
|
3586 |
|
|
3587 |
if |
if |
3588 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
3589 |
|
require Message::DOM::DOMMain; |
3590 |
|
|
3591 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
3592 |
|
|
3593 |
; |
; |
3594 |
|
|
4018 |
|
|
4019 |
if |
if |
4020 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
4021 |
|
require Message::DOM::DOMMain; |
4022 |
|
|
4023 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
4024 |
|
|
4025 |
; |
; |
4026 |
|
|
5055 |
|
|
5056 |
if |
if |
5057 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
5058 |
|
require Message::DOM::DOMMain; |
5059 |
|
|
5060 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
5061 |
|
|
5062 |
; |
; |
5063 |
|
|
5703 |
|
|
5704 |
if |
if |
5705 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
5706 |
|
require Message::DOM::DOMMain; |
5707 |
|
|
5708 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
5709 |
|
|
5710 |
; |
; |
5711 |
|
|
5924 |
|
|
5925 |
if |
if |
5926 |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
(CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) { |
5927 |
|
require Message::DOM::DOMMain; |
5928 |
|
|
5929 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1162711890:16031:uDMne5008+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
5930 |
|
|
5931 |
; |
; |
5932 |
|
|
6074 |
'w0', |
'w0', |
6075 |
['od']}; |
['od']}; |
6076 |
package Message::DOM::IFLatest::Attr; |
package Message::DOM::IFLatest::Attr; |
6077 |
our $VERSION = 20061104.1247; |
our $VERSION = 20061105.0823; |
6078 |
package Message::DOM::Element::ManakaiDOMAttr; |
package Message::DOM::Element::ManakaiDOMAttr; |
6079 |
our $VERSION = 20061104.1247; |
our $VERSION = 20061105.0823; |
6080 |
push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode', |
push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode', |
6081 |
'Message::DOM::IF::Attr', |
'Message::DOM::IF::Attr', |
6082 |
'Message::DOM::IF::Node', |
'Message::DOM::IF::Node', |
6203 |
|
|
6204 |
} |
} |
6205 |
$r} |
$r} |
|
sub ___create_node_ref ($$$) { |
|
|
my ($self, $obj, $opt) = @_; |
|
|
my $r; |
|
|
|
|
|
{ |
|
|
|
|
|
my |
|
|
$class; |
|
|
CLS: { |
|
|
if (defined $opt->{ |
|
|
'nrcls' |
|
|
}) { |
|
|
$class = $opt->{ |
|
|
'nrcls' |
|
|
}; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last CLS; |
|
|
} # IFCHK |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$class = $obj->{ |
|
|
'b' |
|
|
}->{${$obj->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'dnrcls'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
if (defined $class) { |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last CLS; |
|
|
} # IFCHK |
|
|
} |
|
|
|
|
|
my $nsuri; |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$nsuri = $obj->{ |
|
|
'b' |
|
|
}->{${$obj->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'ns'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
$nsuri = \'' unless defined $nsuri; |
|
|
my $ln; |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$ln = $obj->{ |
|
|
'b' |
|
|
}->{${$obj->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'ln'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
my $oeid; |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$oeid = $obj->{ |
|
|
'b' |
|
|
}->{${$obj->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'owner'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
my $oens; |
|
|
my $oeln; |
|
|
if (defined $oeid) { |
|
|
my $bag = |
|
|
$obj->{'b'} |
|
|
; |
|
|
my $oeh = |
|
|
{ |
|
|
'id' => $oeid, |
|
|
'b' => $bag, |
|
|
} |
|
|
; |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$oens = $oeh->{ |
|
|
'b' |
|
|
}->{${$oeh->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'ns'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
$oens = \'' unless defined $oens; |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$oeln = $oeh->{ |
|
|
'b' |
|
|
}->{${$oeh->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'ln'}; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
} else { |
|
|
$oens = \'*'; |
|
|
$oeln = \'*'; |
|
|
} |
|
|
|
|
|
A: { |
|
|
## Use cases: |
|
|
## - Any element type, |xml:id| attribute |
|
|
## - Any element type, |xlink:href| attribute |
|
|
## - |xslt:*| element type, any attribute |
|
|
## - |xslt:*| element type, NULL namespace attribute |
|
|
## - |xhtml1:*| element type, NULL namespace attribute |
|
|
|
|
|
for my $nm ( |
|
|
[$oens, $oeln, $nsuri, $ln], |
|
|
[$oens, \'*', $nsuri, $ln], |
|
|
[\'*', \'*', $nsuri, $ln], |
|
|
[$oens, $oeln, $nsuri, \'*'], |
|
|
[$oens, \'*', $nsuri, \'*'], |
|
|
[\'*', \'*', $nsuri, \'*'], |
|
|
[$oens, $oeln, \'*', \'*'], |
|
|
[$oens, \'*', \'*', \'*'], |
|
|
) { |
|
|
for my $__class (sort { |
|
|
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
|
|
} grep { |
|
|
$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMAttr' |
|
|
} |
|
|
->{compat_class_by_type} |
|
|
->{${$nm->[0]}}->{${$nm->[1]}} |
|
|
->{${$nm->[2]}}->{${$nm->[3]}}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMAttr' |
|
|
} |
|
|
->{compat_class_by_type} |
|
|
->{${$nm->[0]}}->{${$nm->[1]}} |
|
|
->{${$nm->[2]}}->{${$nm->[3]}} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{xml}->{'3.0'}) { |
|
|
$class = \$__class; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last A; |
|
|
} # IFCHK |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
## Generic |
|
|
CLASS: for my $__class (sort { |
|
|
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
|
|
} grep { |
|
|
$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMAttr' |
|
|
} |
|
|
->{compat_class}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo |
|
|
->{ |
|
|
'Message::DOM::Element::ManakaiDOMAttr' |
|
|
} |
|
|
->{compat_class} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{xml}->{'3.0'}) { |
|
|
$class = \$__class; |
|
|
IFCHK: { |
|
|
for (@{$opt->{ |
|
|
'nrifs' |
|
|
} or []}) { |
|
|
last IFCHK unless $$class->isa ($_); |
|
|
} |
|
|
last A; |
|
|
} # IFCHK |
|
|
} |
|
|
} |
|
|
|
|
|
## Default |
|
|
$class = \$self; |
|
|
} # A |
|
|
|
|
|
if (defined $oeid) { |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$obj->{ |
|
|
'b' |
|
|
}->{${$obj->{ |
|
|
'id' |
|
|
}}} |
|
|
->{'dnrcls'} = $class; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
} |
|
|
} # CLS |
|
|
$r = bless $obj, $$class; |
|
|
|
|
|
|
|
|
} |
|
|
$r} |
|
6206 |
sub node_type ($;$) { |
sub node_type ($;$) { |
6207 |
if (@_ == 1) {my ($self) = @_; |
if (@_ == 1) {my ($self) = @_; |
6208 |
my $r; |
my $r; |
6327 |
|
|
6328 |
if |
if |
6329 |
(defined $given and $given eq '') { |
(defined $given and $given eq '') { |
6330 |
|
require Message::DOM::DOMMain; |
6331 |
|
|
6332 |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-prefix', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureNamespacePrefix+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-prefix', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2004/dom/main%23ensureNamespacePrefix+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
6333 |
|
|
7656 |
{ |
{ |
7657 |
|
|
7658 |
|
|
7659 |
|
for |
7660 |
|
my $child (@{$self-> |
7661 |
|
child_nodes |
7662 |
|
}) { |
7663 |
|
if ($child-> |
7664 |
|
node_type |
7665 |
|
== |
7666 |
|
|
7667 |
|
5 |
7668 |
|
) { |
7669 |
|
my $v = $child-> |
7670 |
|
text_content |
7671 |
|
; |
7672 |
|
$v =~ s/[\x09\x0A\x0D]/ /; |
7673 |
|
$r .= $v; |
7674 |
|
} else { |
7675 |
|
$r .= $child-> |
7676 |
|
text_content |
7677 |
|
; |
7678 |
|
} |
7679 |
|
} # childNodes |
7680 |
|
my $vt; |
7681 |
|
|
7682 |
|
|
7683 |
|
{ |
7684 |
|
|
7685 |
|
|
7686 |
|
$vt = $self->{ |
7687 |
|
'b' |
7688 |
|
}->{${$self->{ |
7689 |
|
'id' |
7690 |
|
}}} |
7691 |
|
->{'at'}; |
7692 |
|
|
7693 |
|
|
7694 |
|
} |
7695 |
|
|
|
$r = $self-> |
|
|
value |
|
7696 |
; |
; |
7697 |
|
unless (not defined $vt or |
7698 |
|
$vt == |
7699 |
|
0 or |
7700 |
|
|
7701 |
|
$vt == |
7702 |
|
11 or |
7703 |
|
|
7704 |
|
$vt == |
7705 |
|
1 |
7706 |
|
) { |
7707 |
|
$r =~ s/\A\x20+//; |
7708 |
|
$r =~ s/\x20+\z//; |
7709 |
|
$r =~ s/\x20+/ /g; |
7710 |
|
} |
7711 |
|
|
7712 |
|
if (defined $vt and $vt == |
7713 |
|
2 and |
7714 |
|
|
7715 |
|
$self-> |
7716 |
|
owner_document |
7717 |
|
-> |
7718 |
|
dom_config |
7719 |
|
|
7720 |
|
-> |
7721 |
|
get_parameter |
7722 |
|
( |
7723 |
|
'http://suika.fam.cx/www/2006/dom-config/xml-id' |
7724 |
|
)) { |
7725 |
|
$r =~ s/[\x09\x0A\x0D\x20]+/ /g; |
7726 |
|
$r =~ s/\A //; |
7727 |
|
$r =~ s/ \z//; |
7728 |
|
} |
7729 |
|
|
7730 |
|
|
7731 |
|
|
7746 |
|
|
7747 |
{ |
{ |
7748 |
|
|
|
local $Error::Depth = $Error::Depth + 1; |
|
7749 |
|
|
7750 |
{ |
{ |
7751 |
|
|
7752 |
|
if |
7753 |
|
($self-> |
7754 |
|
manakai_read_only |
7755 |
|
) { |
7756 |
|
|
7757 |
|
report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#NOMOD_THIS', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeCore/NodeReadOnlyError+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest'; |
7758 |
|
|
7759 |
|
; |
7760 |
|
} |
7761 |
|
|
7762 |
|
|
7763 |
|
} |
7764 |
|
|
7765 |
|
; |
7766 |
|
|
7767 |
|
my @__old_children = @{$self-> |
7768 |
|
child_nodes |
7769 |
|
}; |
7770 |
|
for my $__old_child (@__old_children) { |
7771 |
|
|
7772 |
|
|
7773 |
|
{ |
7774 |
|
|
7775 |
|
CORE::delete |
7776 |
|
$__old_child->{ |
7777 |
|
'b' |
7778 |
|
}->{${$__old_child->{ |
7779 |
|
'id' |
7780 |
|
}}} |
7781 |
|
->{'parent'}; |
7782 |
|
|
7783 |
|
|
7784 |
|
} |
7785 |
|
|
7786 |
$self-> |
; |
7787 |
value |
} |
7788 |
|
|
7789 |
|
my @__new_children; |
7790 |
|
if (defined $given and length $given) { |
7791 |
|
my $__text = $self->owner_document-> |
7792 |
|
create_text_node |
7793 |
($given); |
($given); |
7794 |
|
push @__new_children, |
7795 |
|
$__text->{'id'} |
7796 |
|
; |
7797 |
|
|
7798 |
|
|
7799 |
|
{ |
7800 |
|
|
7801 |
|
|
7802 |
|
$__text->{ |
7803 |
|
'b' |
7804 |
|
}->{${$__text->{ |
7805 |
|
'id' |
7806 |
|
}}} |
7807 |
|
->{'parent'} = $self->{ |
7808 |
|
'id' |
7809 |
|
}; |
7810 |
|
|
7811 |
|
|
7812 |
} |
} |
7813 |
|
|
7814 |
|
; |
7815 |
|
} |
7816 |
|
|
7817 |
;} |
|
7818 |
|
|
7819 |
|
{ |
7820 |
|
|
7821 |
|
|
7822 |
|
$self->{ |
7823 |
|
'b' |
7824 |
|
}->{${$self->{ |
7825 |
|
'id' |
7826 |
|
}}} |
7827 |
|
->{'child'} = \@__new_children; |
7828 |
|
|
7829 |
|
|
7830 |
|
} |
7831 |
|
|
7832 |
|
; |
7833 |
|
|
7834 |
|
|
7835 |
|
} |
7836 |
|
|
7837 |
; |
; |
7838 |
|
|
7923 |
{ |
{ |
7924 |
|
|
7925 |
if |
if |
7926 |
($Message::DOM::DOMFeature::ClassInfo->{ref $self} |
($Message::Util::AutoLoad::Registry::Feature->{$feature}->{$version}) { |
|
->{has_feature}->{$feature}->{$version} or |
|
|
$Message::Util::AutoLoad::Registry::Feature |
|
|
->{$feature}->{$version}) { |
|
7927 |
$r = $self; |
$r = $self; |
|
} else { |
|
|
CLASS: for my $__class (sort { |
|
|
$Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a} |
|
|
} grep { |
|
|
$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Element::ManakaiDOMAttr'} |
|
|
->{compat_class}->{$_} |
|
|
} keys %{$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Element::ManakaiDOMAttr'} |
|
|
->{compat_class} or {}}) { |
|
|
if ($Message::DOM::DOMFeature::ClassInfo->{$__class} |
|
|
->{has_feature}->{$feature}->{$version} or |
|
|
$Message::Util::AutoLoad::Registry::Feature |
|
|
->{$feature}->{$version}) { |
|
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
$r = ${($self->{'b'})->{${($self->{'id'})}}->{ |
|
|
'cls' |
|
|
}}->___create_node_ref ({ |
|
|
|
|
|
'id' |
|
|
=> ($self->{'id'}), |
|
|
|
|
|
'b' |
|
|
=> ($self->{'b'}), |
|
|
}, { |
|
|
'nrcls' => \$__class, |
|
|
}); |
|
|
($self->{'b'})->{${($self->{'id'})}}->{ |
|
|
'rc' |
|
|
}++; |
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
; |
|
|
last CLASS; |
|
|
} |
|
|
} # CLASS |
|
7928 |
} |
} |
7929 |
|
|
7930 |
|
|
7976 |
owner_element |
owner_element |
7977 |
; |
; |
7978 |
if ($oe) { |
if ($oe) { |
7979 |
$r = $oe-> |
my $ln = $self->local_name; |
7980 |
|
my $nsuri = $self->namespace_uri; |
7981 |
|
if (($ln eq 'base' and defined $nsuri and $nsuri eq |
7982 |
|
'http://www.w3.org/XML/1998/namespace' |
7983 |
|
) or |
7984 |
|
($ln eq 'xml:base' and not defined $nsuri)) { |
7985 |
|
my $oep = $oe-> |
7986 |
|
parent_node |
7987 |
|
; |
7988 |
|
if ($oep) { |
7989 |
|
$r = $oep-> |
7990 |
base_uri |
base_uri |
7991 |
; |
; |
7992 |
} else { |
} else { |
7993 |
my $od = $self-> |
$r = $self-> |
7994 |
owner_document |
owner_document |
7995 |
|
-> |
7996 |
|
base_uri |
7997 |
; |
; |
7998 |
$r = $od-> |
} |
7999 |
|
} else { |
8000 |
|
$r = $oe-> |
8001 |
|
base_uri |
8002 |
|
; |
8003 |
|
} |
8004 |
|
} else { |
8005 |
|
$r = $self-> |
8006 |
|
owner_document |
8007 |
|
-> |
8008 |
base_uri |
base_uri |
8009 |
; |
; |
8010 |
} |
} |
8260 |
$r =~ s/\x20+/ /g; |
$r =~ s/\x20+/ /g; |
8261 |
} |
} |
8262 |
|
|
8263 |
|
if (defined $vt and $vt == |
8264 |
|
2 and |
8265 |
|
|
8266 |
|
$self-> |
8267 |
|
owner_document |
8268 |
|
-> |
8269 |
|
dom_config |
8270 |
|
|
8271 |
|
-> |
8272 |
|
get_parameter |
8273 |
|
( |
8274 |
|
'http://suika.fam.cx/www/2006/dom-config/xml-id' |
8275 |
|
)) { |
8276 |
|
$r =~ s/[\x09\x0A\x0D\x20]+/ /g; |
8277 |
|
$r =~ s/\A //; |
8278 |
|
$r =~ s/ \z//; |
8279 |
|
} |
8280 |
|
|
8281 |
|
|
8282 |
|
|
8283 |
} |
} |