/[suikacvs]/messaging/manakai/lib/Message/DOM/Element.pm
Suika

Diff of /messaging/manakai/lib/Message/DOM/Element.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by wakaba, Sat Nov 4 17:25:06 2006 UTC revision 1.9 by wakaba, Sun Nov 5 09:16:30 2006 UTC
# Line 1  Line 1 
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',
# Line 152  my $r; Line 1150  my $r;
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  {  {
# Line 185  $class = $obj->{ Line 1168  $class = $obj->{
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;
# Line 231  $ln = $obj->{ Line 1209  $ln = $obj->{
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        
# Line 454  xml_version Line 1366  xml_version
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    
# Line 1965  $feature =~ s/^\+//; Line 2878  $feature =~ s/^\+//;
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    
# Line 2310  my ($self, $namespaceURI, $localName) = Line 3180  my ($self, $namespaceURI, $localName) =
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    
# Line 2516  my ($self, $namespaceURI, $localName) = Line 3387  my ($self, $namespaceURI, $localName) =
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    
# Line 2714  my ($self, $namespaceURI, $localName) = Line 3586  my ($self, $namespaceURI, $localName) =
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    
# Line 3145  my ($self, $namespaceURI, $qualifiedName Line 4018  my ($self, $namespaceURI, $qualifiedName
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    
# Line 4181  my ($self, $namespaceURI, $localName) = Line 5055  my ($self, $namespaceURI, $localName) =
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    
# Line 4828  my ($self, $namespaceURI, $localName) = Line 5703  my ($self, $namespaceURI, $localName) =
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    
# Line 5048  my ($self, $namespaceURI, $localName, $i Line 5924  my ($self, $namespaceURI, $localName, $i
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    
# Line 5197  $Message::Util::Grove::ClassProp{q<Messa Line 6074  $Message::Util::Grove::ClassProp{q<Messa
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',
# Line 5326  $r = $obj; Line 6203  $r = $obj;
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;
# Line 5710  xml_version Line 6327  xml_version
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    
# Line 7038  local $Error::Depth = $Error::Depth + 1; Line 7656  local $Error::Depth = $Error::Depth + 1;
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    
# Line 7062  $r; Line 7746  $r;
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    
# Line 7168  $feature =~ s/^\+//; Line 7923  $feature =~ s/^\+//;
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    
# Line 7264  $oe = $self-> Line 7976  $oe = $self->
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    }    }
# Line 7527  $vt == Line 8260  $vt ==
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  }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24