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

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

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

revision 1.6 by wakaba, Sun Apr 16 08:20:27 2006 UTC revision 1.14 by wakaba, Sat Dec 30 04:42:51 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-04-16T06:46:35+00:00,  ##      at 2006-12-30T04:24:35+00:00,
4  ##      from file "Document.dis",  ##      from file "Document.dis",
5  ##      module <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.Document>,  ##      module <http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.Document>,
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;
 require Message::DOM::Element;  
10  require Message::DOM::TreeCore;  require Message::DOM::TreeCore;
11  require Message::Util::Error::DOMException;  require Message::Util::Error::DOMException;
12  package Message::DOM::Document;  package Message::DOM::Document;
13  our $VERSION = 20060416.0646;  our $VERSION = 20061230.0424;
14  package Message::DOM::IFLatest::Document;  package Message::DOM::Document::ManakaiDOMImplementationDocument;
15  our $VERSION = 20060416.0646;  our $VERSION = 20061230.0424;
16  package Message::DOM::Document::ManakaiDOMDocument;  push @Message::DOM::DOMCore::ManakaiDOMImplementation::ISA, q<Message::DOM::Document::ManakaiDOMImplementationDocument> unless Message::DOM::DOMCore::ManakaiDOMImplementation->isa (q<Message::DOM::Document::ManakaiDOMImplementationDocument>);
17  our $VERSION = 20060416.0646;  sub create_document ($;$$$) {
18  push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode',  my ($self, $namespaceURI, $qualifiedName, $doctype) = @_;
 'Message::DOM::IF::Document',  
 'Message::DOM::IF::Node',  
 'Message::DOM::IFLatest::Document',  
 'Message::DOM::IFLatest::Node',  
 'Message::DOM::IFLevel1::Document',  
 'Message::DOM::IFLevel1::Node',  
 'Message::DOM::IFLevel2::Document',  
 'Message::DOM::IFLevel2::Node',  
 'Message::DOM::IFLevel3::Document',  
 'Message::DOM::IFLevel3::Node';  
 use Char::Class::XML 'InXMLNCNameChar10',  
 'InXMLNCNameChar11',  
 'InXMLNCNameStartChar11',  
 'InXMLNameChar10',  
 'InXMLNameChar11',  
 'InXMLNameStartChar11',  
 'InXML_NCNameStartChar10',  
 'InXML_NameStartChar10';  
 sub ___create_node_stem ($$$$) {  
 my ($self, $bag, $obj, $opt) = @_;  
 my $r = {};  
19    
20  {  {
21    
22    if
23    (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {
24      require Message::DOM::DOMMain;
25      
26    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:1167450139:7187:cCkYT15288+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';
27    
28  $obj->{  ;
 'child'  
 } = [];  
 $obj->{  
 'do'  
 } = {};  
 $obj->{  
 'http://www.w3.org/2001/04/infoset#version'  
 } = '1.0';  
29    
30      
31    
32  {  {
33    
34    
35  $obj->{'impl'} = $opt->{'impl'}->{  $namespaceURI = undef;
36  'id'    
 };  
 $bag->{${$opt->{'impl'}->{  
 'id'  
 }}}  
     ->{'lpmi'}->{${$obj->{  
 'id'  
 }}}  
   = $obj->{  
 'id'  
 };  
37    
38    
39  }  }
40    
41  ;  ;
42  $r = $obj;  }
43    
44    
45  }  }
 $r}  
 sub ___create_node_ref ($$$) {  
 my ($self, $obj, $opt) = @_;  
46  my $r;  my $r;
47    
48  {  {
49    
50  my  require
51  $class;  Scalar::Util;
52  CLS: {  $r = bless \{
   if (defined $opt->{  
 'nrcls'  
 }) {  
     $class = $opt->{  
 'nrcls'  
 };  
     IFCHK: {  
       for (@{$opt->{  
 'nrifs'  
 } or []}) {  
         last IFCHK unless $$class->isa ($_);  
       }  
       last CLS;  
     } # IFCHK  
   }  
   
53        
54    'child'
55  {   => [],
56      
57    'impl'
58  $class = $obj->{   => $self,
59  'b'    
60  }->{${$obj->{  'http://www.w3.org/2001/04/infoset#version'
61  'id'   => '1.0',
62  }}}    
63           ->{'dnrcls'};  'chk'
64     => 1,
65    },
66  }  'Message::DOM::Document::ManakaiDOMDocument'
   
67  ;  ;
   if (defined $class) {  
     IFCHK: {  
       for (@{$opt->{  
 'nrifs'  
 } or []}) {  
         last IFCHK unless $$class->isa ($_);  
       }  
       last CLS;  
     } # IFCHK  
   }  
68    
69    my $cns;  if (defined $doctype) {
70        
71    
72  {  {
73    
74    local $Error::Depth = $Error::Depth + 1;
75    
 $cns = $obj->{  
 'b'  
 }->{${$obj->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
   my $bag =  
 $obj->{'b'}  
 ;  
   my $deh;  
   DC: for my $cnid (@$cns) {  
     my $cnh =  
76  {  {
   'id' => $cnid,  
   'b' => $bag,  
 }  
 ;  
     my $cncls;  
       
77    
 {  
78    
79    
80  $cncls = $cnh->{      $r->
81  'b'  append_child
82  }->{${$cnh->{   ($doctype);
83  'id'    
 }}}  
          ->{'cls'};  
84    
85    
86  }  }
87    
 ;  
     if ($$cncls eq  
 'Message::DOM::Element::ManakaiDOMElement'  
 ) {  
       $deh = $cnh;  
       last DC;  
     }  
   } # DC  
   my $dens;  
   my $deln;  
   if (defined $deh) {  
       
   
 {  
   
   
 $dens = $deh->{  
 'b'  
 }->{${$deh->{  
 'id'  
 }}}  
          ->{'ns'};  
88    
89    ;}
90    
91    ;
92  }  }
93    
94  ;  if (defined $qualifiedName) {
95      $dens = \'' unless defined $dens;    
       
96    
97  {  {
98    
99    local $Error::Depth = $Error::Depth + 1;
100    
101  $deln = $deh->{  {
 'b'  
 }->{${$deh->{  
 'id'  
 }}}  
          ->{'ln'};  
102    
103    
104  }      my
105    $el = $r->
106    create_element_ns
107    
108                       ($namespaceURI, $qualifiedName);
109        $r->
110    append_child
111     ($el);
112        $r = $el->
113    owner_document
114  ;  ;
115    } else {             ## Choose the class based on document element type
116      $dens = \'*';    
     $deln = \'*';  
   }  
117    
   A: {  
     ## Use cases:  
     ##   - Document element is |html5:html|  
     ##   - Document element is |NULL:rfc|  
   
     for my $nm (  
       [$dens, $deln],  
       [$dens, \'*'],  
     ) {  
       for my $__class (sort {  
         $Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a}  
       } grep {  
         $Message::DOM::DOMFeature::ClassInfo  
             ->{  
 'Message::DOM::Document::ManakaiDOMDocument'  
 }  
             ->{compat_class_by_type}  
             ->{${$nm->[0]}}->{${$nm->[1]}}->{$_}  
       } keys %{$Message::DOM::DOMFeature::ClassInfo  
                    ->{  
 'Message::DOM::Document::ManakaiDOMDocument'  
 }  
                    ->{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  
         }  
       }  
     }  
118    
     ## Generic  
     CLASS: for my $__class (sort {  
       $Message::DOM::ClassPoint{$b} <=> $Message::DOM::ClassPoint{$a}  
     } grep {  
       $Message::DOM::DOMFeature::ClassInfo  
           ->{  
 'Message::DOM::Document::ManakaiDOMDocument'  
 }  
           ->{compat_class}->{$_}  
     } keys %{$Message::DOM::DOMFeature::ClassInfo  
                  ->{  
 'Message::DOM::Document::ManakaiDOMDocument'  
119  }  }
                  ->{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 $deh) {  
       
   
 {  
   
120    
 $obj->{  
 'b'  
 }->{${$obj->{  
 'id'  
 }}}  
     ->{'dnrcls'} = $class;  
121    
122    ;}
123    
124  }  ;
125    } elsif (defined $namespaceURI) {
126      
127    report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NAMESPACE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'create_document', 'http://www.w3.org/2001/04/infoset#namespaceURI' => $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_NULL_QNAME_WITH_NON_NULL_URI', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMImplementationDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'namespaceURI';
128    
129  ;  ;
130    }  }
 } # CLS  
 $r = bless $obj, $$class;  
131    
132    
133  }  }
134  $r}  $r}
135    $Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::Document::ManakaiDOMImplementationDocument>}->{has_feature} = {};
136    $Message::DOM::ClassPoint{q<Message::DOM::Document::ManakaiDOMImplementationDocument>} = 0;
137    package Message::DOM::IFLatest::Document;
138    our $VERSION = 20061230.0424;
139    package Message::DOM::Document::ManakaiDOMDocument;
140    our $VERSION = 20061230.0424;
141    push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode',
142    'Message::DOM::IFLatest::Document',
143    'Message::DOM::IFLatest::Node';
144  sub node_type ($;$) {  sub node_type ($;$) {
145  if (@_ == 1) {my ($self) = @_;  if (@_ == 1) {my ($self) = @_;
146  my $r;  my $r;
147  $r = '9';  $r = 9;
148  $r;  $r;
149  } else {my ($self) = @_;  } else {my ($self) = @_;
150  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
# Line 365  local $Error::Depth = $Error::Depth + 1; Line 188  local $Error::Depth = $Error::Depth + 1;
188  $has_el;  $has_el;
189      my $has_dt;      my $has_dt;
190      if ($child_nt ==      if ($child_nt ==
191  '1'  1
192  ) {  ) {
193        $has_el =        $has_el =
194  1  1
195  ;  ;
196      } elsif ($child_nt ==      } elsif ($child_nt ==
197  '10'  10
198  ) {  ) {
199        $has_dt =        $has_dt =
200  1  1
201  ;  ;
202      } elsif ($child_nt ==      } elsif ($child_nt ==
203  '11'  11
204  ) {  ) {
205        for my $cn (@{$newChild->        for my $cn (@{$newChild->
206  child_nodes  child_nodes
# Line 386  child_nodes Line 209  child_nodes
209  node_type  node_type
210  ;  ;
211          if ($cnt ==          if ($cnt ==
212  '1'  1
213  ) {  ) {
214            if ($has_el) {            if ($has_el) {
215                            
# Line 423  last_child Line 246  last_child
246          if ($anode->          if ($anode->
247  node_type  node_type
248   ==   ==
249  '1'  1
250  ) {  ) {
251                        
252    
# Line 457  last_child Line 280  last_child
280  node_type  node_type
281  ;  ;
282          if ($ant ==          if ($ant ==
283  '1'  1
284  ) {  ) {
285                        
286    
# Line 477  report Message::DOM::DOMCore::ManakaiDOM Line 300  report Message::DOM::DOMCore::ManakaiDOM
300    
301  ;  ;
302          } elsif ($ant ==          } elsif ($ant ==
303  '10'  10
304  ) {  ) {
305                        
306    
# Line 532  strict_error_checking Line 355  strict_error_checking
355    ## -- Node Type check    ## -- Node Type check
356    my @new_child;    my @new_child;
357    if ({    if ({
358      '3' => (not $strictc),      3 => (not $strictc),
359      '5' => (not $strictc),      5 => (not $strictc),
360      '1' => 1,      1 => 1,
361      '4' => (not $strictc),      4 => (not $strictc),
362      '7' => 1,      7 => 1,
363      '8' => 1,      8 => 1,
364      '10' => 1,      10 => 1,
365    }->{$child_nt}) {    }->{$child_nt}) {
366      push @new_child, $newChild;      push @new_child, $newChild;
367    } elsif ($child_nt ==    } elsif ($child_nt ==
368  '11'  11
369  ) {  ) {
370      for my $cn (@{$newChild->      for my $cn (@{$newChild->
371  child_nodes  child_nodes
372  }) {  }) {
373        unless ({        unless ({
374      '3' => (not $strictc),      3 => (not $strictc),
375      '5' => (not $strictc),      5 => (not $strictc),
376      '1' => 1,      1 => 1,
377      '4' => (not $strictc),      4 => (not $strictc),
378      '7' => 1,      7 => 1,
379      '8' => 1,      8 => 1,
380      '10' => 1,      10 => 1,
381    }->{$cn->    }->{$cn->
382  node_type  node_type
383  }) {  }) {
# Line 683  report Message::DOM::DOMCore::ManakaiDOM Line 506  report Message::DOM::DOMCore::ManakaiDOM
506    ## -- Removes from parent    ## -- Removes from parent
507    if ($nc_parent) {    if ($nc_parent) {
508      if ($child_nt ==      if ($child_nt ==
509  '11'  11
510  ) {  ) {
511                $$newChild->{
512    'child'
513  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
514      } else {      } else {
515        my $v;        my $v = $$nc_parent->{
516          'child'
517    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
518        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
519          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
520            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
521            last RP;            last RP;
522          }          }
# Line 733  $v = $nc_parent->{ Line 526  $v = $nc_parent->{
526    
527    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
528    for my $nc (@new_child) {    for my $nc (@new_child) {
529            $$nc->{
530    'parent'
531  {  } = $self;
532        Scalar::Util::weaken ($$nc->{
533    'parent'
534  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
535    }    }
536    
537    my $children;    my $children = $$self->{
538      'child'
539    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
540    
541        
542    
# Line 777  $children = $self->{ Line 544  $children = $self->{
544    
545    
546  ## -- Adds to children list  ## -- Adds to children list
547      push @$children, map {      push @$children, @new_child;
         
 $_->{'id'}  
   
     } @new_child;  
548      $r = $newChild;      $r = $newChild;
549        
550    
# Line 812  $_->{'id'} Line 575  $_->{'id'}
575    
576  ;  ;
577  if ($child_nt ==  if ($child_nt ==
578  '10' and  10 and
579            
580  not defined $newChild->  not defined $newChild->
581  owner_document  owner_document
582  ) {  ) {
583    my $bag =    CORE::delete $$newChild->{
584  $self->{'b'}  'impl'
 ;  
     
   
 {  
   
 CORE::delete  
 $bag->{${$bag->{${$newChild->{  
 'id'  
 }}}  
                           ->{'impl'} or \''}}  
                  ->{'lpmi'};  
 $bag->{  
 'm'  
 }++;  
 CORE::delete $bag->{${$newChild->{  
 'id'  
 }}}  
                  ->{'impl'};  
   
   
 }  
   
 ;  
     
   
 {  
   
   
 $bag->{${$newChild->{  
 'id'  
 }}}->{'od'}  
   = $self->{  
 'id'  
585  };  };
586  $bag->{${$self->{    $$newChild->{
587  'id'  'od'
588  }}}  } = $self;
589      ->{'do'}->{${$newChild->{    Scalar::Util::weaken ($$newChild->{
590  'id'  'od'
591  }}}  });
   = $newChild->{  
 'id'  
 };  
   
   
 }  
   
 ;  
592  }  }
593    
594    
# Line 910  local $Error::Depth = $Error::Depth + 1; Line 632  local $Error::Depth = $Error::Depth + 1;
632  $has_el;  $has_el;
633      my $has_dt;      my $has_dt;
634      if ($child_nt ==      if ($child_nt ==
635  '1'  1
636  ) {  ) {
637        $has_el =        $has_el =
638  1  1
639  ;  ;
640      } elsif ($child_nt ==      } elsif ($child_nt ==
641  '10'  10
642  ) {  ) {
643        $has_dt =        $has_dt =
644  1  1
645  ;  ;
646      } elsif ($child_nt ==      } elsif ($child_nt ==
647  '11'  11
648  ) {  ) {
649        for my $cn (@{$newChild->        for my $cn (@{$newChild->
650  child_nodes  child_nodes
# Line 931  child_nodes Line 653  child_nodes
653  node_type  node_type
654  ;  ;
655          if ($cnt ==          if ($cnt ==
656  '1'  1
657  ) {  ) {
658            if ($has_el) {            if ($has_el) {
659                            
# Line 971  last_child Line 693  last_child
693          if ($anode->          if ($anode->
694  node_type  node_type
695   ==   ==
696  '1'  1
697  ) {  ) {
698                        
699    
# Line 1001  previous_sibling Line 723  previous_sibling
723  node_type  node_type
724  ;  ;
725          if ($ant ==          if ($ant ==
726  '1'  1
727  ) {  ) {
728                        
729    
# Line 1021  report Message::DOM::DOMCore::ManakaiDOM Line 743  report Message::DOM::DOMCore::ManakaiDOM
743    
744  ;  ;
745          } elsif ($ant ==          } elsif ($ant ==
746  '10'  10
747  ) {  ) {
748                        
749    
# Line 1058  last_child Line 780  last_child
780  node_type  node_type
781  ;  ;
782          if ($ant ==          if ($ant ==
783  '1'  1
784  ) {  ) {
785                        
786    
# Line 1078  report Message::DOM::DOMCore::ManakaiDOM Line 800  report Message::DOM::DOMCore::ManakaiDOM
800    
801  ;  ;
802          } elsif ($ant ==          } elsif ($ant ==
803  '10'  10
804  ) {  ) {
805                        
806    
# Line 1108  previous_sibling Line 830  previous_sibling
830  node_type  node_type
831    
832                  ==                  ==
833  '10'  10
834  ) {  ) {
835                        
836    
# Line 1163  strict_error_checking Line 885  strict_error_checking
885    ## -- Node Type check    ## -- Node Type check
886    my @new_child;    my @new_child;
887    if ({    if ({
888      '3' => (not $strictc),      3 => (not $strictc),
889      '5' => (not $strictc),      5 => (not $strictc),
890      '1' => 1,      1 => 1,
891      '4' => (not $strictc),      4 => (not $strictc),
892      '7' => 1,      7 => 1,
893      '8' => 1,      8 => 1,
894      '10' => 1,      10 => 1,
895    }->{$child_nt}) {    }->{$child_nt}) {
896      push @new_child, $newChild;      push @new_child, $newChild;
897    } elsif ($child_nt ==    } elsif ($child_nt ==
898  '11'  11
899  ) {  ) {
900      for my $cn (@{$newChild->      for my $cn (@{$newChild->
901  child_nodes  child_nodes
902  }) {  }) {
903        unless ({        unless ({
904      '3' => (not $strictc),      3 => (not $strictc),
905      '5' => (not $strictc),      5 => (not $strictc),
906      '1' => 1,      1 => 1,
907      '4' => (not $strictc),      4 => (not $strictc),
908      '7' => 1,      7 => 1,
909      '8' => 1,      8 => 1,
910      '10' => 1,      10 => 1,
911    }->{$cn->    }->{$cn->
912  node_type  node_type
913  }) {  }) {
# Line 1406  report Message::DOM::DOMCore::ManakaiDOM Line 1128  report Message::DOM::DOMCore::ManakaiDOM
1128    ## -- Removes from parent    ## -- Removes from parent
1129    if ($nc_parent) {    if ($nc_parent) {
1130      if ($child_nt ==      if ($child_nt ==
1131  '11'  11
1132  ) {  ) {
1133                $$newChild->{
1134    'child'
1135  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
1136      } else {      } else {
1137        my $v;        my $v = $$nc_parent->{
1138          'child'
1139    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
1140        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
1141          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
1142            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
1143            last RP;            last RP;
1144          }          }
# Line 1456  $v = $nc_parent->{ Line 1148  $v = $nc_parent->{
1148    
1149    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
1150    for my $nc (@new_child) {    for my $nc (@new_child) {
1151            $$nc->{
1152    'parent'
1153  {  } = $self;
1154        Scalar::Util::weaken ($$nc->{
1155    'parent'
1156  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
1157    }    }
1158    
1159    my $children;    my $children = $$self->{
1160      'child'
1161    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
1162    
1163        
1164    
# Line 1505  $children = $self->{ Line 1171  $children = $self->{
1171    
1172  ## -- Adds to children list  ## -- Adds to children list
1173      if ($index == -1) {      if ($index == -1) {
1174        push @$children, map {        push @$children, @new_child;
           
 $_->{'id'}  
   
       } @new_child;  
1175      } else {      } else {
1176        splice @$children, $index, 0, map {        splice @$children, $index, 0, @new_child;
           
 $_->{'id'}  
   
       } @new_child;  
1177      }      }
1178      $r = $newChild;      $r = $newChild;
1179        
# Line 1543  $_->{'id'} Line 1201  $_->{'id'}
1201    
1202  ;  ;
1203  if ($child_nt ==  if ($child_nt ==
1204  '10' and  10 and
1205            
1206  not defined $newChild->  not defined $newChild->
1207  owner_document  owner_document
1208  ) {  ) {
1209    my $bag =    CORE::delete $$newChild->{
1210  $self->{'b'}  'impl'
 ;  
     
   
 {  
   
 CORE::delete  
 $bag->{${$bag->{${$newChild->{  
 'id'  
 }}}  
                           ->{'impl'} or \''}}  
                  ->{'lpmi'};  
 $bag->{  
 'm'  
 }++;  
 CORE::delete $bag->{${$newChild->{  
 'id'  
 }}}  
                  ->{'impl'};  
   
   
 }  
   
 ;  
     
   
 {  
   
   
 $bag->{${$newChild->{  
 'id'  
 }}}->{'od'}  
   = $self->{  
 'id'  
 };  
 $bag->{${$self->{  
 'id'  
 }}}  
     ->{'do'}->{${$newChild->{  
 'id'  
 }}}  
   = $newChild->{  
 'id'  
1211  };  };
1212      $$newChild->{
1213    'od'
1214  }  } = $self;
1215      Scalar::Util::weaken ($$newChild->{
1216  ;  'od'
1217    });
1218  }  }
1219    
1220    
# Line 1641  local $Error::Depth = $Error::Depth + 1; Line 1258  local $Error::Depth = $Error::Depth + 1;
1258  $has_el;  $has_el;
1259      my $has_dt;      my $has_dt;
1260      if ($child_nt ==      if ($child_nt ==
1261  '1'  1
1262  ) {  ) {
1263        $has_el =        $has_el =
1264  1  1
1265  ;  ;
1266      } elsif ($child_nt ==      } elsif ($child_nt ==
1267  '10'  10
1268  ) {  ) {
1269        $has_dt =        $has_dt =
1270  1  1
1271  ;  ;
1272      } elsif ($child_nt ==      } elsif ($child_nt ==
1273  '11'  11
1274  ) {  ) {
1275        for my $cn (@{$newChild->        for my $cn (@{$newChild->
1276  child_nodes  child_nodes
# Line 1662  child_nodes Line 1279  child_nodes
1279  node_type  node_type
1280  ;  ;
1281          if ($cnt ==          if ($cnt ==
1282  '1'  1
1283  ) {  ) {
1284            if ($has_el) {            if ($has_el) {
1285                            
# Line 1699  previous_sibling Line 1316  previous_sibling
1316          if ($anode->          if ($anode->
1317  node_type  node_type
1318   ==   ==
1319  '1'  1
1320  ) {  ) {
1321                        
1322    
# Line 1731  next_sibling Line 1348  next_sibling
1348  node_type  node_type
1349  ;  ;
1350          if ($ant ==          if ($ant ==
1351  '1'  1
1352  ) {  ) {
1353                        
1354    
# Line 1751  report Message::DOM::DOMCore::ManakaiDOM Line 1368  report Message::DOM::DOMCore::ManakaiDOM
1368    
1369  ;  ;
1370          } elsif ($ant ==          } elsif ($ant ==
1371  '10'  10
1372  ) {  ) {
1373                        
1374    
# Line 1785  previous_sibling Line 1402  previous_sibling
1402  node_type  node_type
1403  ;  ;
1404          if ($ant ==          if ($ant ==
1405  '1'  1
1406  ) {  ) {
1407                        
1408    
# Line 1805  report Message::DOM::DOMCore::ManakaiDOM Line 1422  report Message::DOM::DOMCore::ManakaiDOM
1422    
1423  ;  ;
1424          } elsif ($ant ==          } elsif ($ant ==
1425  '10'  10
1426  ) {  ) {
1427                        
1428    
# Line 1837  next_sibling Line 1454  next_sibling
1454  node_type  node_type
1455    
1456                  ==                  ==
1457  '10'  10
1458  ) {  ) {
1459                        
1460    
# Line 1892  strict_error_checking Line 1509  strict_error_checking
1509    ## -- Node Type check    ## -- Node Type check
1510    my @new_child;    my @new_child;
1511    if ({    if ({
1512      '3' => (not $strictc),      3 => (not $strictc),
1513      '5' => (not $strictc),      5 => (not $strictc),
1514      '1' => 1,      1 => 1,
1515      '4' => (not $strictc),      4 => (not $strictc),
1516      '7' => 1,      7 => 1,
1517      '8' => 1,      8 => 1,
1518      '10' => 1,      10 => 1,
1519    }->{$child_nt}) {    }->{$child_nt}) {
1520      push @new_child, $newChild;      push @new_child, $newChild;
1521    } elsif ($child_nt ==    } elsif ($child_nt ==
1522  '11'  11
1523  ) {  ) {
1524      for my $cn (@{$newChild->      for my $cn (@{$newChild->
1525  child_nodes  child_nodes
1526  }) {  }) {
1527        unless ({        unless ({
1528      '3' => (not $strictc),      3 => (not $strictc),
1529      '5' => (not $strictc),      5 => (not $strictc),
1530      '1' => 1,      1 => 1,
1531      '4' => (not $strictc),      4 => (not $strictc),
1532      '7' => 1,      7 => 1,
1533      '8' => 1,      8 => 1,
1534      '10' => 1,      10 => 1,
1535    }->{$cn->    }->{$cn->
1536  node_type  node_type
1537  }) {  }) {
# Line 2158  report Message::DOM::DOMCore::ManakaiDOM Line 1775  report Message::DOM::DOMCore::ManakaiDOM
1775    ## -- Removes from parent    ## -- Removes from parent
1776    if ($nc_parent) {    if ($nc_parent) {
1777      if ($child_nt ==      if ($child_nt ==
1778  '11'  11
1779  ) {  ) {
1780                $$newChild->{
1781    'child'
1782  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
1783      } else {      } else {
1784        my $v;        my $v = $$nc_parent->{
1785          'child'
1786    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
1787        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
1788          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
1789            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
1790            last RP;            last RP;
1791          }          }
# Line 2208  $v = $nc_parent->{ Line 1795  $v = $nc_parent->{
1795    
1796    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
1797    for my $nc (@new_child) {    for my $nc (@new_child) {
1798            $$nc->{
1799    'parent'
1800  {  } = $self;
1801        Scalar::Util::weaken ($$nc->{
1802    'parent'
1803  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
1804    }    }
1805    
1806    my $children;    my $children = $$self->{
1807      'child'
1808    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
1809    
1810        
1811    
# Line 2260  $children = $self->{ Line 1821  $children = $self->{
1821    
1822    
1823  ## -- Replaces the node  ## -- Replaces the node
1824      splice @$children, $index, 1, map {      splice @$children, $index, 1, @new_child;
1825              CORE::delete $$oldChild->{
1826  $_->{'id'}  'parent'
1827    };
     } @new_child;  
       
   
 {  
   
 CORE::delete  
 $oldChild->{  
 'b'  
 }->{${$oldChild->{  
 'id'  
 }}}  
                  ->{'parent'};  
   
   
 }  
   
 ;  
1828      $r = $oldChild;      $r = $oldChild;
1829        
1830    
# Line 2303  $oldChild->{ Line 1847  $oldChild->{
1847    
1848  ;  ;
1849  if ($child_nt ==  if ($child_nt ==
1850  '10' and  10 and
1851            
1852  not defined $newChild->  not defined $newChild->
1853  owner_document  owner_document
1854  ) {  ) {
1855    my $bag =    CORE::delete $$newChild->{
1856  $self->{'b'}  'impl'
 ;  
     
   
 {  
   
 CORE::delete  
 $bag->{${$bag->{${$newChild->{  
 'id'  
 }}}  
                           ->{'impl'} or \''}}  
                  ->{'lpmi'};  
 $bag->{  
 'm'  
 }++;  
 CORE::delete $bag->{${$newChild->{  
 'id'  
 }}}  
                  ->{'impl'};  
   
   
 }  
   
 ;  
     
   
 {  
   
   
 $bag->{${$newChild->{  
 'id'  
 }}}->{'od'}  
   = $self->{  
 'id'  
 };  
 $bag->{${$self->{  
 'id'  
 }}}  
     ->{'do'}->{${$newChild->{  
 'id'  
 }}}  
   = $newChild->{  
 'id'  
1857  };  };
1858      $$newChild->{
1859    'od'
1860  }  } = $self;
1861      Scalar::Util::weaken ($$newChild->{
1862  ;  'od'
1863    });
1864  }  }
1865    
1866    
# Line 2394  last_child Line 1897  last_child
1897          $lc->          $lc->
1898  node_type  node_type
1899   ==   ==
1900  '3'  3
1901  ) {  ) {
1902        $lc->        $lc->
1903  manakai_append_text  manakai_append_text
# Line 2449  report Message::DOM::DOMCore::ManakaiDOM Line 1952  report Message::DOM::DOMCore::ManakaiDOM
1952  F:  F:
1953  {  {
1954    my $i = -1;    my $i = -1;
1955    for my $cld (@{$self->    my $v = $$self->{
1956  child_nodes  'child'
1957  }) {  };
1958      for my $cld (@$v) {
1959      $i++;      $i++;
1960      if ($cld eq $oldChild) {      if ($cld eq $oldChild) {
       my $v;  
         
   
 {  
   
   
 $v = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
1961        splice @$v, $i, 1, ();        splice @$v, $i, 1, ();
1962                CORE::delete $$oldChild->{
1963    'parent'
1964  {  };
   
 CORE::delete  
 $oldChild->{  
 'b'  
 }->{${$oldChild->{  
 'id'  
 }}}  
                  ->{'parent'};  
   
   
 }  
   
 ;  
1965        $r = $oldChild;        $r = $oldChild;
1966        last F;        last F;
1967      }      }
# Line 2552  child_nodes Line 2026  child_nodes
2026  node_type  node_type
2027  ;  ;
2028        if ($nt ==        if ($nt ==
2029  '3' or  3 or
2030                        
2031  $nt ==  $nt ==
2032  '4'  4
2033  ) {  ) {
2034          $r .= $node->          $r .= $node->
2035  data  data
# Line 2564  $node-> Line 2038  $node->
2038  is_element_content_whitespace  is_element_content_whitespace
2039  ;  ;
2040        } elsif ($nt ==        } elsif ($nt ==
2041  '1' or  1 or
2042                                
2043  $nt ==  $nt ==
2044  '5'  5
2045  ) {  ) {
2046          unshift @target, @{$node->          unshift @target, @{$node->
2047  child_nodes  child_nodes
# Line 2629  report Message::DOM::DOMCore::ManakaiDOM Line 2103  report Message::DOM::DOMCore::ManakaiDOM
2103    
2104  ;  ;
2105    
2106  my @__old_children = @{$self->  for my $__old_child (@{${$self}->{
2107  child_nodes  'child'
2108    }}) {
2109      CORE::delete $$__old_child->{
2110    'parent'
2111  };  };
 for my $__old_child (@__old_children) {  
     
   
 {  
   
 CORE::delete  
 $__old_child->{  
 'b'  
 }->{${$__old_child->{  
 'id'  
 }}}  
                  ->{'parent'};  
   
   
 }  
   
 ;  
2112  }  }
2113    
2114  my @__new_children;  my @__new_children;
# Line 2656  if (defined $given and length $given) { Line 2116  if (defined $given and length $given) {
2116    my $__text = $self->    my $__text = $self->
2117  create_text_node  create_text_node
2118   ($given);   ($given);
2119    push @__new_children,    push @__new_children, $__text;
2120  $__text->{'id'}    $$__text->{
2121  ;  'parent'
2122      } = $self;
2123      Scalar::Util::weaken ($$__text->{
2124  {  'parent'
2125    });
   
 $__text->{  
 'b'  
 }->{${$__text->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
 }  
   
   
   
 {  
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'child'} = \@__new_children;  
   
   
2126  }  }
2127    
2128  ;  ${$self}->{
2129    'child'
2130    } = \@__new_children;
2131    
2132    
2133  }  }
# Line 2731  my $r; Line 2164  my $r;
2164    
2165  $feature =~ s/^\+//;  $feature =~ s/^\+//;
2166    
 ## TODO: Remove this code and implement autoload  
 if ($feature eq  
 'http://suika.fam.cx/www/2006/feature/xdoctype'  
 ) {  
   require Message::DOM::XDoctype;  
 }  
   
   
2167    
2168  {  {
2169    
2170  if  if
2171  ($Message::DOM::DOMFeature::ClassInfo->{ref $self}  ($Message::Util::AutoLoad::Registry::Feature->{$feature}->{$version}) {
       ->{has_feature}->{$feature}->{$version}) {  
2172    $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::Document::ManakaiDOMDocument'}  
         ->{compat_class}->{$_}  
   } keys %{$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Document::ManakaiDOMDocument'}  
                ->{compat_class} or {}}) {  
     if ($Message::DOM::DOMFeature::ClassInfo->{$__class}  
             ->{has_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  
2173  }  }
2174    
2175    
# Line 2823  my $r = ''; Line 2209  my $r = '';
2209  {  {
2210    
2211    
2212  {  $r = $$self->{
2213    'buri'
2214    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'buri'};  
   
   
 }  
   
 ;  
2215  unless (defined $r) {  unless (defined $r) {
2216        $r = $$self->{
2217    'duri'
2218  {  };
   
   
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'duri'};  
   
   
 }  
   
 ;  
2219  }  }
2220    
2221    
# Line 2863  $r; Line 2225  $r;
2225  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'base_uri';  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'base_uri';
2226  }  }
2227  }  }
 sub create_element ($$) {  
 my ($self, $tagName) = @_;  
 my $r;  
   
 {  
   
 my  
 $strict = $self->  
 strict_error_checking  
 ;  
 if ($strict) {  
   my $version = $self->  
 xml_version  
 ;  
     
   
 {  
   
 if  
 (defined $tagName) {  
     
   
 {  
   
 if  
 (((not defined $version or $version eq '1.0') and  
          not  
 ($tagName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) or  
         (defined $version and $version eq '1.1' and  
          not  
 ($tagName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 )) {  
         
 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';  
   
 ;  
     }  
     
   
   
 }  
   
 ;  
     
   
 ;  
 }  
   
   
 }  
   
 ;  
 }  
   
   
 {  
   
 local $Error::Depth = $Error::Depth + 1;  
   
 {  
   
   
   
   $self->  
 strict_error_checking  
  (  
 0  
 );  
   $r = $self->  
 create_element_ns  
  (  
 undef  
 , [  
 undef  
 , $tagName]);  
   $self->  
 strict_error_checking  
  ($strict);  
   
   
   
 }  
   
   
 ;}  
   
 ;  
   
   
 }  
 $r}  
 sub create_element_ns ($$$) {  
 my ($self, $namespaceURI, $qualifiedName) = @_;  
   
 {  
   
 if  
 (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {  
     
 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:1145169317:11745:844uw843+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';  
   
 ;  
   
     
   
 {  
   
   
 $namespaceURI = undef;  
     
   
   
 }  
   
 ;  
 }  
   
   
 }  
 my $r;  
   
 {  
   
 require  
 Message::DOM::Element;  
   
 my ($prefix, $lname) = ref $qualifiedName eq 'ARRAY'  
                          ? @$qualifiedName  
                          : split /:/, $qualifiedName, 2;  
 ($prefix, $lname) = (  
 undef  
 , $prefix) unless defined $lname;  
 $qualifiedName = defined $prefix ? $prefix.':'.$lname : $lname;  
   
 if ($self->  
 strict_error_checking  
 ) {  
   my $version = $self->  
 xml_version  
 ;  
     
   
 {  
   
 if  
 (defined $version and $version eq '1.1') {  
     unless (  
 ($qualifiedName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
     unless (  
 ($qualifiedName =~ /\A\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*(?::\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*)?\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
   } else {  
     unless (  
 ($qualifiedName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
     unless (  
 ($qualifiedName =~ /\A\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*(?::\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*)?\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
   }  
   
   
 }  
   
 ;  
     
   
 {  
   
 if  
 (defined $prefix) {  
   if (not defined $namespaceURI) {  
       
 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';  
   
 ;  
   } elsif ($prefix eq 'xml' and $namespaceURI ne  
 'http://www.w3.org/XML/1998/namespace'  
 ) {  
       
 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';  
   
 ;  
   } elsif ($prefix eq 'xmlns' and $namespaceURI ne  
 'http://www.w3.org/2000/xmlns/'  
 ) {  
       
 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';  
   
 ;  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/XML/1998/namespace' and  
 $prefix ne 'xml') {  
       
 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';  
   
 ;  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/2000/xmlns/' and  
 $prefix ne 'xmlns') {  
       
 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';  
   
 ;  
   }  
 } else { ## No prefix  
   if (not defined $namespaceURI) {  
     #  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/2000/xmlns/' and  
 $lname ne 'xmlns') {  
       
 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';  
   
 ;  
   }  
 }  
   
   
 }  
   
 ;  
   if (defined $namespaceURI and $namespaceURI eq  
 'http://www.w3.org/2000/xmlns/' and  
         
 ($qualifiedName eq 'xmlns' or  
        (defined $prefix and $prefix eq 'xmlns'))) {  
       
 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::Document::ManakaiDOMDocument', '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';  
   
 ;  
   }  
 }  
   
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::Element::ManakaiDOMElement'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
     'ns' => \$namespaceURI,  
     'pfx' => \$prefix,  
     'ln' => \$lname,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::Element::ManakaiDOMElement') {  
   if (ref 'Message::DOM::Element::ManakaiDOMElement' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::Element::ManakaiDOMElement';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'} = \('Message::DOM::Element::ManakaiDOMElement');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMElement'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
 ## Default attributes  
   
   
 {  
   
   
 {  
   
 local $Error::Depth = $Error::Depth + 1;  
   
 {  
   
   
   XDA:  
 {  
     my $__cfg = $self->  
 dom_config  
 ;  
     last XDA unless $__cfg->  
 get_parameter  
   
                               (  
 'http://suika.fam.cx/www/2006/dom-config/dtd-default-attribute'  
 );  
     my $__doctype = $self->  
 doctype  
 ;  
     last XDA unless defined $__doctype;  
     $__doctype = $__doctype->  
 get_feature  
   
                              (  
 'http://suika.fam.cx/www/2006/feature/XDoctype'  
  => '3.0');  
     last XDA unless defined $__doctype;  
     my $__et = $__doctype->  
 get_element_type_definition_node  
   
                              ($qualifiedName);  
     if ($__et) {  
       my $__orig_strict = $self->  
 strict_error_checking  
 ;  
       $self->  
 strict_error_checking  
  (  
 0  
 );  
       my %__gattr;  
       my %__has_attr;  
       my %__pfx_to_uri;  
       my $__copy_asis = $__cfg->  
 get_parameter  
   
                                (  
 'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree'  
 );  
       $__cfg->  
 set_parameter  
   
                     (  
 'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree'  
  =>  
 1  
 );  
       for my $__at (@{$__et->  
 attribute_definitions  
 }) {  
         my $__at_default = $__at->  
 default_type  
 ;  
         if ($__at_default ==  
 '4' or  
               
 $__at_default ==  
 '1'  
 ) {  
           my ($__nn1, $__nn2) = split /:/, $__at->  
 node_name  
 ;  
           if (defined $__nn2) { # prefixed  
             if ($__nn1 eq 'xmlns') {  
               ## TODO: NCName check, prefix check and NSURI check  
               my $__attr = $self->  
 create_attribute_ns  
   
                                         (  
 'http://www.w3.org/2000/xmlns/'  
 , [$__nn1, $__nn2]);  
               for my $__at_child (@{$__at->  
 child_nodes  
 }) {  
                 $__attr->  
 append_child  
   
                            ($__at_child->  
 clone_node  
  (  
 1  
 ));  
               }  
               $__attr->  
 manakai_attribute_type  
   
                          ($__at->  
 declared_type  
 );  
               my $__nsuri = $__attr->  
 value  
 ;  
               ## TODO: Namespace well-formedness check (NSURI), v1.1 chk  
               $__pfx_to_uri{$__nn2} = $__nsuri;  
               $r->  
 set_attribute_node_ns  
  ($__attr);  
                        ## This method changes |specified| flag  
               $__attr->  
 specified  
  (  
 0  
 );  
               $__has_attr{  
 'http://www.w3.org/2000/xmlns/'  
 }->{$__nn2} =  
 1  
 ;  
             } else {  
               ## TODO: NCName check  
               $__gattr{$__nn1}->{$__nn2} = $__at;  
             }  
           } else {            # no prefixed  
             my $__attr;  
             if ($__nn1 eq 'xmlns') {  
               $__attr = $self->  
 create_attribute_ns  
   
                                         (  
 'http://www.w3.org/2000/xmlns/'  
 , 'xmlns');  
               $__has_attr{  
 'http://www.w3.org/2000/xmlns/'  
 }->{xmlns} =  
 1  
 ;  
             } else {  
               $__attr = $self->  
 create_attribute_ns  
   
                                         (  
 undef  
 , $__nn1);  
               ## TODO: NCName check  
             }  
             for my $__at_child (@{$__at->  
 child_nodes  
 }) {  
               $__attr->  
 append_child  
   
                          ($__at_child->  
 clone_node  
  (  
 1  
 ));  
             }  
             $__attr->  
 manakai_attribute_type  
   
                        ($__at->  
 declared_type  
 );  
             ## TODO: Namespace well-formedness check (NSURI)  
             $r->  
 set_attribute_node_ns  
  ($__attr);  
                        ## This method changes |specified| flag  
             $__attr->  
 specified  
  (  
 0  
 );  
           }  
         }  
       } # attrdefs  
       for my $__pfx (keys %__gattr) {  
         my $__nsuri = $__pfx_to_uri{$__pfx};  
         unless (defined $__nsuri) {  
           ## TODO: Namespace well-formedness error  
         }  
         LN: for my $__ln (keys %{$__gattr{$__pfx}}) {  
           if ($__has_attr{defined $__nsuri ? $__nsuri : ''}->{$__ln}) {  
             ## TODO: Namespace well-formedness error  
             next LN;  
           }  
           ## TODO: NCName check, prefix check and NSURI check  
           my $__at = $__gattr{$__pfx}->{$__ln};  
           my $__attr = $self->  
 create_attribute_ns  
   
                                     ($__nsuri, [$__pfx, $__ln]);  
           for my $__at_child (@{$__at->  
 child_nodes  
 }) {  
             $__attr->  
 append_child  
   
                        ($__at_child->  
 clone_node  
  (  
 1  
 ));  
           }  
           $__attr->  
 manakai_attribute_type  
   
                      ($__at->  
 declared_type  
 );  
           $r->  
 set_attribute_node_ns  
  ($__attr);  
                        ## This method changes |specified| flag  
           $__attr->  
 specified  
  (  
 0  
 );  
           $__has_attr{defined $__nsuri ? $__nsuri : ''}->{$__ln} =  
 1  
 ;  
         } # LN  
       } # pfx  
       $__cfg->  
 set_parameter  
   
               (  
 'http://suika.fam.cx/www/2006/dom-config/clone-entity-reference-subtree'  
  => $__copy_asis);  
       $self->  
 strict_error_checking  
  ($__orig_strict);  
     }  
   } # XDA  
   
   
   
 }  
   
   
 ;}  
   
 ;  
   
   
 }  
   
 ;  
   
   
 }  
 $r}  
 sub create_attribute ($$) {  
 my ($self, $name) = @_;  
 my $r;  
   
 {  
   
 my  
 $strict = $self->  
 strict_error_checking  
 ;  
 if ($strict) {  
   my $version = $self->  
 xml_version  
 ;  
     
   
 {  
   
 if  
 (defined $name) {  
     
   
 {  
   
 if  
 (((not defined $version or $version eq '1.0') and  
          not  
 ($name =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) or  
         (defined $version and $version eq '1.1' and  
          not  
 ($name =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 )) {  
         
 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';  
   
 ;  
     }  
     
   
   
 }  
   
 ;  
     
   
 ;  
 }  
   
   
 }  
   
 ;  
 }  
   
   
 {  
   
 local $Error::Depth = $Error::Depth + 1;  
   
 {  
   
   
   
   $self->  
 strict_error_checking  
  (  
 0  
 );  
   $r = $self->  
 create_attribute_ns  
  (  
 undef  
 , [  
 undef  
 , $name]);  
   $self->  
 strict_error_checking  
  ($strict);  
   
   
   
 }  
   
   
 ;}  
   
 ;  
   
   
 }  
 $r}  
 sub create_attribute_ns ($$$) {  
 my ($self, $namespaceURI, $qualifiedName) = @_;  
   
 {  
   
 if  
 (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {  
     
 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:1145169317:11745:844uw843+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';  
   
 ;  
   
     
   
 {  
   
   
 $namespaceURI = undef;  
     
   
   
 }  
   
 ;  
 }  
   
   
 }  
 my $r;  
   
 {  
   
 require  
 Message::DOM::Element;  
   
 my ($prefix, $lname) = ref $qualifiedName eq 'ARRAY'  
                          ? @$qualifiedName  
                          : split /:/, $qualifiedName, 2;  
 ($prefix, $lname) = (  
 undef  
 , $prefix) unless defined $lname;  
   
 ## TODO: autoload  
 if ((defined $namespaceURI and $namespaceURI eq  
 'http://www.w3.org/XML/1998/namespace'  
 ) or  
     ($lname =~ /^xml:/)) {  
   require Message::DOM::XML;  
 }  
   
 if ($self->  
 strict_error_checking  
 ) {  
   my $version = $self->  
 xml_version  
 ;  
   $qualifiedName = defined $prefix ? $prefix.':'.$lname  
                                    : $lname;  
     
   
 {  
   
 if  
 (defined $version and $version eq '1.1') {  
     unless (  
 ($qualifiedName =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
     unless (  
 ($qualifiedName =~ /\A\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*(?::\p{InXMLNCNameStartChar11}\p{InXMLNCNameChar11}*)?\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
   } else {  
     unless (  
 ($qualifiedName =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
     unless (  
 ($qualifiedName =~ /\A\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*(?::\p{InXML_NCNameStartChar10}\p{InXMLNCNameChar10}*)?\z/)  
 ) {  
         
 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';  
   
 ;  
     }  
   }  
   
   
 }  
   
 ;  
     
   
 {  
   
 if  
 (defined $prefix) {  
   if (not defined $namespaceURI) {  
       
 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';  
   
 ;  
   } elsif ($prefix eq 'xml' and $namespaceURI ne  
 'http://www.w3.org/XML/1998/namespace'  
 ) {  
       
 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';  
   
 ;  
   } elsif ($prefix eq 'xmlns' and $namespaceURI ne  
 'http://www.w3.org/2000/xmlns/'  
 ) {  
       
 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';  
   
 ;  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/XML/1998/namespace' and  
 $prefix ne 'xml') {  
       
 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';  
   
 ;  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/2000/xmlns/' and  
 $prefix ne 'xmlns') {  
       
 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';  
   
 ;  
   }  
 } else { ## No prefix  
   if (not defined $namespaceURI) {  
     #  
   } elsif ($namespaceURI eq  
 'http://www.w3.org/2000/xmlns/' and  
 $lname ne 'xmlns') {  
       
 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';  
   
 ;  
   }  
 }  
   
   
 }  
   
 ;  
 }  
   
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::Element::ManakaiDOMAttr'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
     'ns' => \$namespaceURI,  
     'pfx' => \$prefix,  
     'ln' => \$lname,  
     'specified' => 1,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::Element::ManakaiDOMAttr') {  
   if (ref 'Message::DOM::Element::ManakaiDOMAttr' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::Element::ManakaiDOMAttr';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'} = \('Message::DOM::Element::ManakaiDOMAttr');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::Element::ManakaiDOMAttr'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
 ## Attribute type information  
 if ((defined $namespaceURI and $namespaceURI eq  
 'http://www.w3.org/XML/1998/namespace' and  
       
 $lname eq 'id') or  
     (not defined $namespaceURI and $lname eq 'xml:id')) {  
     
   
 {  
   
 local $Error::Depth = $Error::Depth + 1;  
   
 {  
   
   
     if  
 ($self->  
 dom_config  
   
              ->  
 get_parameter  
   
                  (  
 'http://suika.fam.cx/www/2006/dom-config/xml-id'  
 )) {  
       $r->  
 manakai_attribute_type  
  (  
 '2'  
 );  
     }  
     
   
   
 }  
   
   
 ;}  
   
 ;  
 }  
   
   
 }  
 $r}  
 sub create_text_node ($$) {  
 my ($self, $data) = @_;  
 my $r;  
   
 {  
   
 require  
 Message::DOM::CharacterData;  
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::CharacterData::ManakaiDOMText'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
     'con' => \$data,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::CharacterData::ManakaiDOMText') {  
   if (ref 'Message::DOM::CharacterData::ManakaiDOMText' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::CharacterData::ManakaiDOMText';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMText'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMText'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMText'} = \('Message::DOM::CharacterData::ManakaiDOMText');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMText'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
   
 }  
 $r}  
 sub create_cdata_section ($$) {  
 my ($self, $data) = @_;  
 my $r;  
   
 {  
   
 require  
 Message::DOM::XML;  
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::XML::ManakaiDOMCDATASection'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
     'con' => \$data,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::XML::ManakaiDOMCDATASection') {  
   if (ref 'Message::DOM::XML::ManakaiDOMCDATASection' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::XML::ManakaiDOMCDATASection';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMCDATASection'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMCDATASection'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMCDATASection'} = \('Message::DOM::XML::ManakaiDOMCDATASection');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMCDATASection'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
   
 }  
 $r}  
 sub create_comment ($$) {  
 my ($self, $data) = @_;  
 my $r;  
   
 {  
   
 require  
 Message::DOM::CharacterData;  
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::CharacterData::ManakaiDOMComment'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
     'con' => \$data,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::CharacterData::ManakaiDOMComment') {  
   if (ref 'Message::DOM::CharacterData::ManakaiDOMComment' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::CharacterData::ManakaiDOMComment';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMComment'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMComment'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMComment'} = \('Message::DOM::CharacterData::ManakaiDOMComment');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::CharacterData::ManakaiDOMComment'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
   
 }  
 $r}  
2228  sub create_document_fragment ($) {  sub create_document_fragment ($) {
2229  my ($self) = @_;  my ($self) = @_;
2230  my $r;  my $r;
2231    
2232  {  {
2233    
 my  
 $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::Document::ManakaiDOMDocumentFragment'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'od' => $self,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::Document::ManakaiDOMDocumentFragment') {  
   if (ref 'Message::DOM::Document::ManakaiDOMDocumentFragment' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::Document::ManakaiDOMDocumentFragment';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::Document::ManakaiDOMDocumentFragment'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Document::ManakaiDOMDocumentFragment'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::Document::ManakaiDOMDocumentFragment'} = \('Message::DOM::Document::ManakaiDOMDocumentFragment');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::Document::ManakaiDOMDocumentFragment'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
2234    
2235  $r = ${$stem->{  $r = bless \{
 'cls'  
 }}->___create_node_ref ({  
2236        
2237  'id'  'od'
2238   => $stem->{   => $self,
 'id'  
 },  
2239        
2240  'b'  'child'
2241   => $bag,   => [],
2242  }, {  },
2243    });  'Message::DOM::Document::ManakaiDOMDocumentFragment'
2244  $stem->{  ;
2245  'rc'  Scalar::Util::weaken ($$r->{
2246  }++;  'od'
2247    });
   
 }  
   
 ;  
   
   
 }  
 $r}  
 sub create_entity_reference ($$) {  
 my ($self, $name) = @_;  
 my $r;  
   
 {  
   
 require  
 Message::DOM::XML;  
 our $CreateEntityReference_OpenEntity;  
   ## NOTE: Multithread unsafe  
   
 my $orig_strict = $self->  
 strict_error_checking  
 ;  
 if ($orig_strict) {  
   my $version = $self->  
 xml_version  
 ;  
     
   
 {  
   
 if  
 (defined $name) {  
     
   
 {  
   
 if  
 (((not defined $version or $version eq '1.0') and  
          not  
 ($name =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) or  
         (defined $version and $version eq '1.1' and  
          not  
 ($name =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 )) {  
         
 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';  
   
 ;  
     }  
     
   
   
 }  
   
 ;  
     
   
 ;  
 }  
   
   
 }  
   
 ;  
 }  
   
 my $bag =  
 $self->{'b'}  
 ;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::XML::ManakaiDOMEntityReference'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'xname' => \$name,  
     'od' => $self,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::XML::ManakaiDOMEntityReference') {  
   if (ref 'Message::DOM::XML::ManakaiDOMEntityReference' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::XML::ManakaiDOMEntityReference';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMEntityReference'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMEntityReference'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMEntityReference'} = \('Message::DOM::XML::ManakaiDOMEntityReference');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMEntityReference'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
 ## Expansion  
   
   
 {  
   
 local $Error::Depth = $Error::Depth + 1;  
   
 {  
   
   
   unless  
 ($CreateEntityReference_OpenEntity->{$name}) {  
     local $CreateEntityReference_OpenEntity->{$name} =  
 1  
 ;  
     my $__doctype = $self->  
 doctype  
 ;  
     $__doctype = $__doctype->  
 get_feature  
   
                              (  
 'http://suika.fam.cx/www/2006/feature/XDoctype'  
  => '3.0')  
       if $__doctype;  
     if ($__doctype) {  
       my $__et = $__doctype->  
 get_general_entity_node  
  ($name);  
       if ($__et) {  
         $self->  
 strict_error_checking  
  (  
 0  
 );  
         my @node;  
         for my $c (@{$__et->  
 child_nodes  
 }) {  
           my $clone = $c->  
 clone_node  
  (  
 1  
 );  
           $r->  
 append_child  
  ($clone);  
           push @node, $clone;  
         }  
         $r->  
 manakai_expanded  
   
               ($__et->  
 has_replacement_tree  
 );  
         $self->  
 strict_error_checking  
  ($orig_strict);  
       } # entity  
     } # doctype  
   }  
   $r->  
 manakai_set_read_only  
  (  
 1  
 ,  
 1  
 );  
   
   
   
 }  
   
   
 ;}  
   
 ;  
   
   
 }  
 $r}  
 sub create_processing_instruction ($$$) {  
 my ($self, $target, $data) = @_;  
 my $r;  
   
 {  
   
 require  
 Message::DOM::XML;  
   
 if ($self->  
 strict_error_checking  
 ) {  
   my $version = $self->  
 xml_version  
 ;  
     
   
 {  
   
 if  
 (defined $target) {  
     
   
 {  
   
 if  
 (((not defined $version or $version eq '1.0') and  
          not  
 ($target =~ /\A\p{InXML_NameStartChar10}\p{InXMLNameChar10}*\z/)  
 ) or  
         (defined $version and $version eq '1.1' and  
          not  
 ($target =~ /\A\p{InXMLNameStartChar11}\p{InXMLNameChar11}*\z/)  
 )) {  
         
 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' => $target, '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';  
   
 ;  
     }  
     
   
   
 }  
   
 ;  
     
   
 ;  
 }  
   
   
 }  
   
 ;  
 }  
   
 my $bag =  
 $self->{'b'}  
 ;  
 $data = '' unless defined $data;  
 my $stem;  
   
   
 {  
   
   
 $stem = 'Message::DOM::XML::ManakaiDOMProcessingInstruction'->___create_node_stem ($bag, {  
     
 'rc'  
  => 0,  
     
 'id'  
  => \  
 (  
   'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  
   (++$Message::Util::ManakaiNode::UniqueIDN)  
 )  
 ,  
 }, {  
     'target' => \$target,  
     'con' => \$data,  
     'od' => $self,  
   });  
   
   
 {  
   
 if  
 (defined 'Message::DOM::XML::ManakaiDOMProcessingInstruction') {  
   if (ref 'Message::DOM::XML::ManakaiDOMProcessingInstruction' eq 'SCALAR') {  
     $stem->{'cls'} = 'Message::DOM::XML::ManakaiDOMProcessingInstruction';  
   } elsif (defined $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMProcessingInstruction'}) {  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMProcessingInstruction'};  
   } else {  
     require Scalar::Util;  
     $stem->{'cls'} = $Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMProcessingInstruction'} = \('Message::DOM::XML::ManakaiDOMProcessingInstruction');  
     Scalar::Util::weaken ($Message::Util::ManakaiStringRef::Value{'Message::DOM::XML::ManakaiDOMProcessingInstruction'});  
   }  
 } else {  
   CORE::delete $stem->{'cls'};  
 }  
   
   
 }  
   
 ;  
 $bag->{${$stem->{  
 'id'  
 }}} = $stem;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
2248    
2249    
2250  }  }
# Line 4597  my $r = 0; Line 2256  my $r = 0;
2256  {  {
2257    
2258    
2259  {  $r = $$self->{
2260    'chk'
2261    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'chk'};  
   
   
 }  
   
 ;  
 $r =  
 1 unless  
 defined $r;  
2262    
2263    
2264  }  }
# Line 4623  $r; Line 2268  $r;
2268  {  {
2269    
2270    
2271  {  $$self->{
2272    'chk'
2273    } = $given;
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'chk'} = $given ? 1 : 0;  
   
   
 }  
   
 ;  
2274    
2275    
2276  }  }
# Line 4652  my $r; Line 2286  my $r;
2286  {  {
2287    
2288    
2289  $r = bless [$self, ($self->{'b'}->{${$self->{'id'}}}), 'Message::DOM::IFLatest::Document'],  $r = bless [$self, $$self, 'Message::DOM::IFLatest::Document'],
2290                                    
2291  'Message::DOM::DOMCore::ManakaiDOMConfiguration'  'Message::DOM::DOMCore::ManakaiDOMConfiguration'
2292  ;  ;
# Line 4690  child_nodes Line 2324  child_nodes
2324      if ($child->      if ($child->
2325  node_type  node_type
2326   ==   ==
2327  '1'  1
2328  ) {  ) {
2329        $r = $child;        $r = $child;
2330        last F;        last F;
# Line 4720  my $r; Line 2354  my $r;
2354  {  {
2355    
2356    
2357  {  $r = $$self->{
2358    'impl'
2359  my  };
 $__v = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
               ->{'impl'};  
 if (defined $__v) {  
     
   
 {  
   
   
 $r = ${$self->{'b'}->{${$__v}}->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $__v,  
     
 'b'  
  => $self->{'b'},  
 }, {  
     'nrifs' => ['Message::DOM::IFLatest::DOMImplementation'],  
   });  
 $self->{'b'}->{${$__v}}->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
 }  
   
   
 }  
   
 ;  
2360    
2361    
2362  }  }
# Line 4776  my $r = ''; Line 2372  my $r = '';
2372  {  {
2373    
2374    
2375  {  $r = $$self->{
2376    'http://www.w3.org/2001/04/infoset#version'
2377    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'http://www.w3.org/2001/04/infoset#version'};  
   
   
 }  
   
 ;  
 $r = '1.0' unless defined $r;  
2378    
2379    
2380  }  }
# Line 4821  if (defined $given and Line 2405  if (defined $given and
2405       not $self->       not $self->
2406  strict_error_checking  strict_error_checking
2407  )) {  )) {
2408        $$self->{
2409    'http://www.w3.org/2001/04/infoset#version'
2410  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'http://www.w3.org/2001/04/infoset#version'} = $given;  
   
   
 }  
   
 ;  
2411  } else {  } else {
2412        
2413  report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'set', '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_IMPL_NOSUPPORT_XMLVER', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'xml_version', 'http://www.w3.org/2001/04/infoset#version' => $given;  report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'set', '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_IMPL_NOSUPPORT_XMLVER', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'xml_version', 'http://www.w3.org/2001/04/infoset#version' => $given;
# Line 4870  child_nodes Line 2441  child_nodes
2441  node_type  node_type
2442  ;  ;
2443      if ($nt ==      if ($nt ==
2444  '10'  10
2445  ) {  ) {
2446        $r = $child;        $r = $child;
2447        last F;        last F;
2448      } elsif ($nt ==      } elsif ($nt ==
2449  '1'  1
2450  ) { # document element  ) { # document element
2451        last F;        last F;
2452      }      }
# Line 4904  my $r = ''; Line 2475  my $r = '';
2475  {  {
2476    
2477    
2478  {  $r = $$self->{
2479    'duri'
2480    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'duri'};  
   
   
 }  
   
 ;  
2481    
2482    
2483  }  }
# Line 4943  report Message::DOM::DOMCore::ManakaiDOM Line 2503  report Message::DOM::DOMCore::ManakaiDOM
2503  }  }
2504    
2505  ;  ;
2506    $$self->{
2507    'duri'
2508  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'duri'} = $given;  
   
   
 }  
   
 ;  
2509    
2510    
2511  }  }
# Line 4971  my $r = ''; Line 2518  my $r = '';
2518  {  {
2519    
2520    
2521  {  $r = $$self->{
2522    'ces'
2523    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'ces'};  
   
   
 }  
   
 ;  
2524    
2525    
2526  }  }
# Line 5010  report Message::DOM::DOMCore::ManakaiDOM Line 2546  report Message::DOM::DOMCore::ManakaiDOM
2546  }  }
2547    
2548  ;  ;
2549    $$self->{
2550    'ces'
2551  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'ces'} = $given;  
   
   
 }  
   
 ;  
2552    
2553    
2554  }  }
# Line 5038  my $r = ''; Line 2561  my $r = '';
2561  {  {
2562    
2563    
2564  {  $r = $$self->{
2565    'xcs'
2566    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'xcs'};  
   
   
 }  
   
 ;  
2567    
2568    
2569  }  }
# Line 5077  report Message::DOM::DOMCore::ManakaiDOM Line 2589  report Message::DOM::DOMCore::ManakaiDOM
2589  }  }
2590    
2591  ;  ;
2592    $$self->{
2593    'xcs'
2594  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'xcs'} = $given;  
   
   
 }  
   
 ;  
2595    
2596    
2597  }  }
# Line 5105  my $r = 0; Line 2604  my $r = 0;
2604  {  {
2605    
2606    
2607  {  $r = $$self->{
2608    'http://www.w3.org/2001/04/infoset#standalone'
2609    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'http://www.w3.org/2001/04/infoset#standalone'};  
   
   
 }  
   
 ;  
2610    
2611    
2612  }  }
# Line 5144  report Message::DOM::DOMCore::ManakaiDOM Line 2632  report Message::DOM::DOMCore::ManakaiDOM
2632  }  }
2633    
2634  ;  ;
2635    $$self->{
2636    'http://www.w3.org/2001/04/infoset#standalone'
2637  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'http://www.w3.org/2001/04/infoset#standalone'} = $given;  
   
   
 }  
   
 ;  
2638    
2639    
2640  }  }
# Line 5176  ADOPT: Line 2651  ADOPT:
2651    last ADOPT    last ADOPT
2652      unless $source->isa (      unless $source->isa (
2653  'Message::DOM::TreeCore::ManakaiDOMNode'  'Message::DOM::TreeCore::ManakaiDOMNode'
2654  ) and  );
             
 $self->{'b'}  
                eq  
   
 $source->{'b'}  
 ;  
2655    
2656    my $strict = $self->    my $strict = $self->
2657  strict_error_checking  strict_error_checking
# Line 5212  node_type Line 2681  node_type
2681  ;  ;
2682    my $oe;    my $oe;
2683    if ($nt ==    if ($nt ==
2684  '2'  2
2685  ) {  ) {
2686      $oe = $source->      $oe = $source->
2687  owner_element  owner_element
# Line 5226  report Message::DOM::DOMCore::ManakaiDOM Line 2695  report Message::DOM::DOMCore::ManakaiDOM
2695  ;  ;
2696      }      }
2697    } elsif ($nt ==    } elsif ($nt ==
2698  '9' or  9 or
2699                        
2700  $nt ==  $nt ==
2701  '10' or  10 or
2702                        
2703  $nt ==  $nt ==
2704  '6' or  6 or
2705                        
2706  $nt ==  $nt ==
2707  '12'  12
2708  ) {  ) {
2709            
2710  report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'adopt_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#ADOPT_NODE_TYPE_NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'source', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#node' => 'source';  report Message::DOM::DOMCore::ManakaiDOMException -object => $self, '-type' => 'NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#method' => 'adopt_node', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#ADOPT_NODE_TYPE_NOT_SUPPORTED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocument', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#param-name' => 'source', 'http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#node' => 'source';
# Line 5259  report Message::DOM::DOMCore::ManakaiDOM Line 2728  report Message::DOM::DOMCore::ManakaiDOM
2728  ;  ;
2729      }      }
2730      if ($nt ==      if ($nt ==
2731  '1'  1
2732  ) {  ) {
2733        push @change_od, $node;        push @change_od, $node;
2734        push @nodes, @{$node->        push @nodes, @{$node->
# Line 5277  item Line 2746  item
2746   ($i);   ($i);
2747        }        }
2748      } elsif ($nt ==      } elsif ($nt ==
2749  '2' or  2 or
2750                            
2751  $nt ==  $nt ==
2752  '5' or  5 or
2753                            
2754  $nt ==  $nt ==
2755  '11'  11
2756  ) {  ) {
2757        push @change_od, $node;        push @change_od, $node;
2758        push @nodes, @{$node->        push @nodes, @{$node->
2759  child_nodes  child_nodes
2760  };  };
2761      } elsif ($nt ==      } elsif ($nt ==
2762  '3' or  3 or
2763                            
2764  $nt ==  $nt ==
2765  '8' or  8 or
2766                            
2767  $nt ==  $nt ==
2768  '7' or  7 or
2769                            
2770  $nt ==  $nt ==
2771  '4'  4
2772  ) {  ) {
2773        push @change_od, $node;        push @change_od, $node;
2774      } else {      } else {
# Line 5349  owner_document Line 2818  owner_document
2818      last ADOPT;      last ADOPT;
2819    }    }
2820    
   my $old_od_list;  
     
   
 {  
   
   
 $old_od_list = $old_od->{  
 'b'  
 }->{${$old_od->{  
 'id'  
 }}}  
          ->{'do'};  
   
   
 }  
   
 ;  
   my $new_od_list;  
     
   
 {  
   
   
 $new_od_list = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'do'};  
   
   
 }  
   
 ;  
2821    for my $n (@change_od) {    for my $n (@change_od) {
2822            $$n->{
2823    'od'
2824  {  } = $self;
2825        Scalar::Util::weaken ($$n->{
2826    'od'
2827  $n->{  });
 'b'  
 }->{${$n->{  
 'id'  
 }}}  
     ->{'od'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
     my $nid =  
 $n->{'id'}  
 ;  
     CORE::delete $old_od_list->{$$nid};  
     $new_od_list->{$$nid} = $nid;  
2828    }    }
2829    
2830    for my $src (@change_od) {    for my $src (@change_od) {
2831      my $src_ud;      my $src_ud = $$src->{
2832        'ud'
2833    };
 {  
   
   
 $src_ud = $src->{  
 'b'  
 }->{${$src->{  
 'id'  
 }}}  
          ->{'ud'};  
   
   
 }  
   
 ;  
2834      for my $key (keys %{$src_ud or {}}) {      for my $key (keys %{$src_ud or {}}) {
2835        my $dh = $src_ud->{$key}->[1];        my $dh = $src_ud->{$key}->[1];
2836        if ($dh) {        if ($dh) {
# Line 5434  $src_ud = $src->{ Line 2838  $src_ud = $src->{
2838  handle  handle
2839    
2840                   (                   (
2841  '5'  5
2842  ,  ,
2843                    $key, $src_ud->{$key}->[0], $src,                    $key, $src_ud->{$key}->[0], $src,
2844  undef  undef
# Line 5470  child_nodes Line 2874  child_nodes
2874      next N unless $node->      next N unless $node->
2875  node_type  node_type
2876   ==   ==
2877  '1'  1
2878  ;  ;
2879      for my $attr (@{$node->      for my $attr (@{$node->
2880  attributes  attributes
# Line 5548  my ($self, $namespaceURI, $localName) = Line 2952  my ($self, $namespaceURI, $localName) =
2952    
2953  if  if
2954  (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {  (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {
2955      require Message::DOM::DOMMain;
2956        
2957  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:1145169317:11745:844uw843+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:1167450139:7187:cCkYT15288+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';
2958    
2959  ;  ;
2960    
# Line 5664  my ($self, $n, $namespaceURI, $qualified Line 3069  my ($self, $n, $namespaceURI, $qualified
3069    
3070  if  if
3071  (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {  (CORE::defined $namespaceURI and CORE::length $namespaceURI == 0) {
3072      require Message::DOM::DOMMain;
3073        
3074  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:1145169317:11745:844uw843+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:1167450139:7187:cCkYT15288+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';
3075    
3076  ;  ;
3077    
# Line 5695  my $r = ''; Line 3101  my $r = '';
3101  {  {
3102    
3103    
3104  {  $r = $$self->{
3105    'buri'
3106    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'buri'};  
   
   
 }  
   
 ;  
3107  unless (defined $r) {  unless (defined $r) {
3108        $r = $$self->{
3109    'duri'
3110  {  };
   
   
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'duri'};  
   
   
 }  
   
 ;  
3111  }  }
3112    
3113    
# Line 5752  report Message::DOM::DOMCore::ManakaiDOM Line 3134  report Message::DOM::DOMCore::ManakaiDOM
3134  }  }
3135    
3136  ;  ;
3137    $$self->{
3138    'buri'
3139  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'buri'} = $given;  
   
   
 }  
   
 ;  
3140    
3141    
3142  }  }
# Line 5780  my $r = 0; Line 3149  my $r = 0;
3149  {  {
3150    
3151    
3152  {  $r = $$self->{
3153    'http://www.w3.org/2001/04/infoset#allDeclarationsProcessed'
3154    };
 $r = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'http://www.w3.org/2001/04/infoset#allDeclarationsProcessed'};  
   
   
 }  
   
 ;  
3155    
3156    
3157  }  }
# Line 5819  report Message::DOM::DOMCore::ManakaiDOM Line 3177  report Message::DOM::DOMCore::ManakaiDOM
3177  }  }
3178    
3179  ;  ;
3180    $$self->{
3181    'http://www.w3.org/2001/04/infoset#allDeclarationsProcessed'
3182  {  } = $given;
   
   
 $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
     ->{'http://www.w3.org/2001/04/infoset#allDeclarationsProcessed'} = $given;  
   
   
 }  
   
 ;  
3183    
3184    
3185  }  }
# Line 5866  $Message::DOM::DOMFeature::ClassInfo->{q Line 3211  $Message::DOM::DOMFeature::ClassInfo->{q
3211  '1.1',  '1.1',
3212  '1'}};  '1'}};
3213  $Message::DOM::ClassPoint{q<Message::DOM::Document::ManakaiDOMDocument>} = 14.1;  $Message::DOM::ClassPoint{q<Message::DOM::Document::ManakaiDOMDocument>} = 14.1;
 $Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::Document::ManakaiDOMDocument>}->{compat_class}->{q<Message::DOM::Document::ManakaiDOMDocument>} = 1;  
 $Message::Util::Grove::ClassProp{q<Message::DOM::Document::ManakaiDOMDocument>} = {'s1a',  
 ['child'],  
 'v1h',  
 ['do'],  
 'w0',  
 ['impl']};  
3214  package Message::DOM::IFLatest::DocumentFragment;  package Message::DOM::IFLatest::DocumentFragment;
3215  our $VERSION = 20060416.0646;  our $VERSION = 20061230.0424;
3216  package Message::DOM::Document::ManakaiDOMDocumentFragment;  package Message::DOM::Document::ManakaiDOMDocumentFragment;
3217  our $VERSION = 20060416.0646;  our $VERSION = 20061230.0424;
3218  push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode',  push our @ISA, 'Message::DOM::TreeCore::ManakaiDOMNode',
 'Message::DOM::IF::DocumentFragment',  
 'Message::DOM::IF::Node',  
3219  'Message::DOM::IFLatest::DocumentFragment',  'Message::DOM::IFLatest::DocumentFragment',
3220  'Message::DOM::IFLatest::Node',  'Message::DOM::IFLatest::Node';
 'Message::DOM::IFLevel1::DocumentFragment',  
 'Message::DOM::IFLevel1::Node',  
 'Message::DOM::IFLevel2::DocumentFragment',  
 'Message::DOM::IFLevel2::Node',  
 'Message::DOM::IFLevel3::DocumentFragment',  
 'Message::DOM::IFLevel3::Node';  
 sub ___create_node_stem ($$$$) {  
 my ($self, $bag, $obj, $opt) = @_;  
 my $r = {};  
   
 {  
   
   
 $obj->{  
 'child'  
 } = [];  
   
   
 {  
   
   
 $obj->{'od'} = $opt->{'od'}->{  
 'id'  
 };  
 $bag->{${$opt->{'od'}->{  
 'id'  
 }}}  
     ->{'do'}->{${$obj->{  
 'id'  
 }}}  
   = $obj->{  
 'id'  
 };  
   
   
 }  
   
 ;  
 $r = $obj;  
   
   
 }  
 $r}  
3221  sub node_type ($;$) {  sub node_type ($;$) {
3222  if (@_ == 1) {my ($self) = @_;  if (@_ == 1) {my ($self) = @_;
3223  my $r;  my $r;
3224  $r = '11';  $r = 11;
3225  $r;  $r;
3226  } else {my ($self) = @_;  } else {my ($self) = @_;
3227  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocumentFragment', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';  report Message::Util::Error::DOMException::CoreException -object => $self, '-type' => 'NO_MODIFICATION_ALLOWED_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#on' => 'get', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#subtype' => 'http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#READ_ONLY_ATTRIBUTE_ERR', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#class' => 'Message::DOM::Document::ManakaiDOMDocumentFragment', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#attr' => 'node_type';
# Line 5976  strict_error_checking Line 3269  strict_error_checking
3269    ## -- Node Type check    ## -- Node Type check
3270    my @new_child;    my @new_child;
3271    if ({    if ({
3272      '3' => 1,      3 => 1,
3273      '5' => 1,      5 => 1,
3274      '1' => 1,      1 => 1,
3275      '7' => 1,      7 => 1,
3276      '4' => 1,      4 => 1,
3277      '8' => 1,      8 => 1,
3278    }->{$child_nt}) {    }->{$child_nt}) {
3279      push @new_child, $newChild;      push @new_child, $newChild;
3280    } elsif ($child_nt ==    } elsif ($child_nt ==
3281  '11'  11
3282  ) {  ) {
3283      for my $cn (@{$newChild->      for my $cn (@{$newChild->
3284  child_nodes  child_nodes
3285  }) {  }) {
3286        unless ({        unless ({
3287      '3' => 1,      3 => 1,
3288      '5' => 1,      5 => 1,
3289      '1' => 1,      1 => 1,
3290      '7' => 1,      7 => 1,
3291      '4' => 1,      4 => 1,
3292      '8' => 1,      8 => 1,
3293    }->{$cn->    }->{$cn->
3294  node_type  node_type
3295  }) {  }) {
# Line 6125  report Message::DOM::DOMCore::ManakaiDOM Line 3418  report Message::DOM::DOMCore::ManakaiDOM
3418    ## -- Removes from parent    ## -- Removes from parent
3419    if ($nc_parent) {    if ($nc_parent) {
3420      if ($child_nt ==      if ($child_nt ==
3421  '11'  11
3422  ) {  ) {
3423                $$newChild->{
3424    'child'
3425  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
3426      } else {      } else {
3427        my $v;        my $v = $$nc_parent->{
3428          'child'
3429    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
3430        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
3431          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
3432            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
3433            last RP;            last RP;
3434          }          }
# Line 6175  $v = $nc_parent->{ Line 3438  $v = $nc_parent->{
3438    
3439    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
3440    for my $nc (@new_child) {    for my $nc (@new_child) {
3441            $$nc->{
3442    'parent'
3443  {  } = $self;
3444        Scalar::Util::weaken ($$nc->{
3445    'parent'
3446  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
3447    }    }
3448    
3449    my $children;    my $children = $$self->{
3450      'child'
3451    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
3452    
3453        
3454    
# Line 6219  $children = $self->{ Line 3456  $children = $self->{
3456    
3457    
3458  ## -- Adds to children list  ## -- Adds to children list
3459      push @$children, map {      push @$children, @new_child;
         
 $_->{'id'}  
   
     } @new_child;  
3460      $r = $newChild;      $r = $newChild;
3461        
3462    
# Line 6299  strict_error_checking Line 3532  strict_error_checking
3532    ## -- Node Type check    ## -- Node Type check
3533    my @new_child;    my @new_child;
3534    if ({    if ({
3535      '3' => 1,      3 => 1,
3536      '5' => 1,      5 => 1,
3537      '1' => 1,      1 => 1,
3538      '7' => 1,      7 => 1,
3539      '4' => 1,      4 => 1,
3540      '8' => 1,      8 => 1,
3541    }->{$child_nt}) {    }->{$child_nt}) {
3542      push @new_child, $newChild;      push @new_child, $newChild;
3543    } elsif ($child_nt ==    } elsif ($child_nt ==
3544  '11'  11
3545  ) {  ) {
3546      for my $cn (@{$newChild->      for my $cn (@{$newChild->
3547  child_nodes  child_nodes
3548  }) {  }) {
3549        unless ({        unless ({
3550      '3' => 1,      3 => 1,
3551      '5' => 1,      5 => 1,
3552      '1' => 1,      1 => 1,
3553      '7' => 1,      7 => 1,
3554      '4' => 1,      4 => 1,
3555      '8' => 1,      8 => 1,
3556    }->{$cn->    }->{$cn->
3557  node_type  node_type
3558  }) {  }) {
# Line 6540  report Message::DOM::DOMCore::ManakaiDOM Line 3773  report Message::DOM::DOMCore::ManakaiDOM
3773    ## -- Removes from parent    ## -- Removes from parent
3774    if ($nc_parent) {    if ($nc_parent) {
3775      if ($child_nt ==      if ($child_nt ==
3776  '11'  11
3777  ) {  ) {
3778                $$newChild->{
3779    'child'
3780  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
3781      } else {      } else {
3782        my $v;        my $v = $$nc_parent->{
3783          'child'
3784    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
3785        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
3786          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
3787            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
3788            last RP;            last RP;
3789          }          }
# Line 6590  $v = $nc_parent->{ Line 3793  $v = $nc_parent->{
3793    
3794    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
3795    for my $nc (@new_child) {    for my $nc (@new_child) {
3796            $$nc->{
3797    'parent'
3798  {  } = $self;
3799        Scalar::Util::weaken ($$nc->{
3800    'parent'
3801  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
3802    }    }
3803    
3804    my $children;    my $children = $$self->{
3805      'child'
3806    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
3807    
3808        
3809    
# Line 6639  $children = $self->{ Line 3816  $children = $self->{
3816    
3817  ## -- Adds to children list  ## -- Adds to children list
3818      if ($index == -1) {      if ($index == -1) {
3819        push @$children, map {        push @$children, @new_child;
           
 $_->{'id'}  
   
       } @new_child;  
3820      } else {      } else {
3821        splice @$children, $index, 0, map {        splice @$children, $index, 0, @new_child;
           
 $_->{'id'}  
   
       } @new_child;  
3822      }      }
3823      $r = $newChild;      $r = $newChild;
3824        
# Line 6722  strict_error_checking Line 3891  strict_error_checking
3891    ## -- Node Type check    ## -- Node Type check
3892    my @new_child;    my @new_child;
3893    if ({    if ({
3894      '3' => 1,      3 => 1,
3895      '5' => 1,      5 => 1,
3896      '1' => 1,      1 => 1,
3897      '7' => 1,      7 => 1,
3898      '4' => 1,      4 => 1,
3899      '8' => 1,      8 => 1,
3900    }->{$child_nt}) {    }->{$child_nt}) {
3901      push @new_child, $newChild;      push @new_child, $newChild;
3902    } elsif ($child_nt ==    } elsif ($child_nt ==
3903  '11'  11
3904  ) {  ) {
3905      for my $cn (@{$newChild->      for my $cn (@{$newChild->
3906  child_nodes  child_nodes
3907  }) {  }) {
3908        unless ({        unless ({
3909      '3' => 1,      3 => 1,
3910      '5' => 1,      5 => 1,
3911      '1' => 1,      1 => 1,
3912      '7' => 1,      7 => 1,
3913      '4' => 1,      4 => 1,
3914      '8' => 1,      8 => 1,
3915    }->{$cn->    }->{$cn->
3916  node_type  node_type
3917  }) {  }) {
# Line 6986  report Message::DOM::DOMCore::ManakaiDOM Line 4155  report Message::DOM::DOMCore::ManakaiDOM
4155    ## -- Removes from parent    ## -- Removes from parent
4156    if ($nc_parent) {    if ($nc_parent) {
4157      if ($child_nt ==      if ($child_nt ==
4158  '11'  11
4159  ) {  ) {
4160                $$newChild->{
4161    'child'
4162  {  } = [];
   
   
 $newChild->{  
 'b'  
 }->{${$newChild->{  
 'id'  
 }}}  
     ->{'child'} = [];  
   
   
 }  
   
 ;  
4163      } else {      } else {
4164        my $v;        my $v = $$nc_parent->{
4165          'child'
4166    };
 {  
   
   
 $v = $nc_parent->{  
 'b'  
 }->{${$nc_parent->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
4167        RP: for my $i (0..$#$v) {        RP: for my $i (0..$#$v) {
4168          my $nodeid = $v->[$i];          if ($v->[$i] eq $new_child[0]) {
         if (  
 (${$new_child[0]->{'id'}} eq ${$nodeid})  
 ) {  
4169            splice @$v, $i, 1, ();            splice @$v, $i, 1, ();
4170            last RP;            last RP;
4171          }          }
# Line 7036  $v = $nc_parent->{ Line 4175  $v = $nc_parent->{
4175    
4176    ## -- Rewrite the |parentNode| properties    ## -- Rewrite the |parentNode| properties
4177    for my $nc (@new_child) {    for my $nc (@new_child) {
4178            $$nc->{
4179    'parent'
4180  {  } = $self;
4181        Scalar::Util::weaken ($$nc->{
4182    'parent'
4183  $nc->{  });
 'b'  
 }->{${$nc->{  
 'id'  
 }}}  
     ->{'parent'} = $self->{  
 'id'  
 };  
   
   
 }  
   
 ;  
4184    }    }
4185    
4186    my $children;    my $children = $$self->{
4187      'child'
4188    };
 {  
   
   
 $children = $self->{  
 'b'  
 }->{${$self->{  
 'id'  
 }}}  
          ->{'child'};  
   
   
 }  
   
 ;  
4189    
4190        
4191    
# Line 7088  $children = $self->{ Line 4201  $children = $self->{
4201    
4202    
4203  ## -- Replaces the node  ## -- Replaces the node
4204      splice @$children, $index, 1, map {      splice @$children, $index, 1, @new_child;
4205              CORE::delete $$oldChild->{
4206  $_->{'id'}  'parent'
4207    };
     } @new_child;  
       
   
 {  
   
 CORE::delete  
 $oldChild->{  
 'b'  
 }->{${$oldChild->{  
 'id'  
 }}}  
                  ->{'parent'};  
   
   
 }  
   
 ;  
4208      $r = $oldChild;      $r = $oldChild;
4209        
4210    
# Line 7165  last_child Line 4261  last_child
4261        $lc->        $lc->
4262  node_type  node_type
4263   ==   ==
4264  '3'  3
4265  ) {  ) {
4266      $lc->      $lc->
4267  manakai_append_text  manakai_append_text
# Line 7226  $feature =~ s/^\+//; Line 4322  $feature =~ s/^\+//;
4322  {  {
4323    
4324  if  if
4325  ($Message::DOM::DOMFeature::ClassInfo->{ref $self}  ($Message::Util::AutoLoad::Registry::Feature->{$feature}->{$version}) {
       ->{has_feature}->{$feature}->{$version}) {  
4326    $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::Document::ManakaiDOMDocumentFragment'}  
         ->{compat_class}->{$_}  
   } keys %{$Message::DOM::DOMFeature::ClassInfo->{'Message::DOM::Document::ManakaiDOMDocumentFragment'}  
                ->{compat_class} or {}}) {  
     if ($Message::DOM::DOMFeature::ClassInfo->{$__class}  
             ->{has_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  
4327  }  }
4328    
4329    
# Line 7362  $Message::DOM::DOMFeature::ClassInfo->{q Line 4419  $Message::DOM::DOMFeature::ClassInfo->{q
4419  '1.1',  '1.1',
4420  '1'}};  '1'}};
4421  $Message::DOM::ClassPoint{q<Message::DOM::Document::ManakaiDOMDocumentFragment>} = 14.1;  $Message::DOM::ClassPoint{q<Message::DOM::Document::ManakaiDOMDocumentFragment>} = 14.1;
4422  $Message::DOM::DOMFeature::ClassInfo->{q<Message::DOM::Document::ManakaiDOMDocumentFragment>}->{compat_class}->{q<Message::DOM::Document::ManakaiDOMDocumentFragment>} = 1;  for ($Message::DOM::IFLatest::Node::){}
 $Message::Util::Grove::ClassProp{q<Message::DOM::Document::ManakaiDOMDocumentFragment>} = {'s1a',  
 ['child'],  
 'w0',  
 ['od']};  
 for ($Message::DOM::IF::Document::, $Message::DOM::IF::DocumentFragment::, $Message::DOM::IF::Node::, $Message::DOM::IFLatest::Node::, $Message::DOM::IFLevel1::Document::, $Message::DOM::IFLevel1::DocumentFragment::, $Message::DOM::IFLevel1::Node::, $Message::DOM::IFLevel2::Document::, $Message::DOM::IFLevel2::DocumentFragment::, $Message::DOM::IFLevel2::Node::, $Message::DOM::IFLevel3::Document::, $Message::DOM::IFLevel3::DocumentFragment::, $Message::DOM::IFLevel3::Node::){}  
4423  ## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL>  ## License: <http://suika.fam.cx/~wakaba/archive/2004/8/18/license#Perl+MPL>
4424  1;  1;

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.14

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24