/[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.9 by wakaba, Sat Nov 4 17:25:06 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-11-04T12:42:32+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>.
# Line 10  require Message::DOM::DOMCore; Line 10  require Message::DOM::DOMCore;
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 = 20061104.1242;  our $VERSION = 20061230.0424;
14  package Message::DOM::IFLatest::Document;  package Message::DOM::Document::ManakaiDOMImplementationDocument;
15  our $VERSION = 20061104.1242;  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 = 20061104.1242;  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    require
51  $r = bless $obj,  Scalar::Util;
52    $r = bless \{
53      
54    'child'
55     => [],
56      
57    'impl'
58     => $self,
59      
60    'http://www.w3.org/2001/04/infoset#version'
61     => '1.0',
62      
63    'chk'
64     => 1,
65    },
66  'Message::DOM::Document::ManakaiDOMDocument'  'Message::DOM::Document::ManakaiDOMDocument'
67  ;  ;
68    
69    if (defined $doctype) {
70      
71    
72    {
73    
74    local $Error::Depth = $Error::Depth + 1;
75    
76    {
77    
78    
79    
80        $r->
81    append_child
82     ($doctype);
83      
84    
85    
86    }
87    
88    
89    ;}
90    
91    ;
92    }
93    
94    if (defined $qualifiedName) {
95      
96    
97    {
98    
99    local $Error::Depth = $Error::Depth + 1;
100    
101    {
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               ## Choose the class based on document element type
116      
117    
118    
119    }
120    
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    }
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;
# Line 458  report Message::DOM::DOMCore::ManakaiDOM Line 508  report Message::DOM::DOMCore::ManakaiDOM
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 506  $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 550  $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 590  if ($child_nt == Line 580  if ($child_nt ==
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'  
 };  
 $bag->{${$self->{  
 'id'  
 }}}  
     ->{'do'}->{${$newChild->{  
 'id'  
 }}}  
   = $newChild->{  
 'id'  
585  };  };
586      $$newChild->{
587    'od'
588  }  } = $self;
589      Scalar::Util::weaken ($$newChild->{
590  ;  'od'
591    });
592  }  }
593    
594    
# Line 1181  report Message::DOM::DOMCore::ManakaiDOM Line 1130  report Message::DOM::DOMCore::ManakaiDOM
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 1229  $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 1278  $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 1321  if ($child_nt == Line 1206  if ($child_nt ==
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 1933  report Message::DOM::DOMCore::ManakaiDOM Line 1777  report Message::DOM::DOMCore::ManakaiDOM
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 1981  $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 2033  $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 2081  if ($child_nt == Line 1852  if ($child_nt ==
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 2222  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 2402  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 2429  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 2504  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} or  
     $Message::Util::AutoLoad::Registry::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} or  
         $Message::Util::AutoLoad::Registry::Feature  
             ->{$feature}->{$version}) {  
         
   
 {  
   
   
 $r = ${($self->{'b'})->{${($self->{'id'})}}->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => ($self->{'id'}),  
     
 'b'  
  => ($self->{'b'}),  
 }, {  
           'nrcls' => \$__class,  
         });  
 ($self->{'b'})->{${($self->{'id'})}}->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
       last CLASS;  
     }  
   } # CLASS  
2173  }  }
2174    
2175    
# Line 2600  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 2640  $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:1162643135:13819:2PFx921643+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:1162643135:13819:2PFx921643+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;  
2234    
2235    $r = bless \{
 {  
   
   
 $stem = 'Message::DOM::Document::ManakaiDOMDocumentFragment'->___create_node_stem ($bag, {  
2236        
2237  'rc'  'od'
2238   => 0,   => $self,
2239        
2240  'id'  'child'
2241   => \   => [],
2242  (  },
2243    'tag:suika.fam.cx,2005-09:' . time . ':' . $$ . ':' .  'Message::DOM::Document::ManakaiDOMDocumentFragment'
2244    (++$Message::Util::ManakaiNode::UniqueIDN)  ;
2245  )  Scalar::Util::weaken ($$r->{
2246  ,  'od'
2247  }, {  });
     '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;  
   
   
 }  
   
 ;  
   
   
 {  
   
   
 $r = ${$stem->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => $stem->{  
 'id'  
 },  
     
 'b'  
  => $bag,  
 }, {  
   });  
 $stem->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
   
   
 }  
 $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 4374  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 4400  $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 4429  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 4497  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 4553  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 4598  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 4681  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 4720  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 4748  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 4787  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 4815  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 4854  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 4882  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 4921  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 4953  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 5126  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 5325  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:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';  report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1167450139:7187:cCkYT15288+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';
2958    
2959  ;  ;
2960    
# Line 5441  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:1162643135:13819:2PFx921643+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';  report Message::DOM::DOMCore::ManakaiDOMError -object => $self, '-type' => 'http://suika.fam.cx/~wakaba/archive/2004/dom/main#empty-namespace-uri', 'http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#resourceURI' => 'tag:suika.fam.cx,2005-09:tag:suika.fam.cx,2005-09:1167450139:7187:cCkYT15288+http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom%23ManakaiDOMLatest';
3075    
3076  ;  ;
3077    
# Line 5472  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 5529  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 5557  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 5596  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 5643  $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 = 20061104.1242;  our $VERSION = 20061230.0424;
3216  package Message::DOM::Document::ManakaiDOMDocumentFragment;  package Message::DOM::Document::ManakaiDOMDocumentFragment;
3217  our $VERSION = 20061104.1242;  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;
# Line 5904  report Message::DOM::DOMCore::ManakaiDOM Line 3420  report Message::DOM::DOMCore::ManakaiDOM
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 5952  $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 5996  $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 6319  report Message::DOM::DOMCore::ManakaiDOM Line 3775  report Message::DOM::DOMCore::ManakaiDOM
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 6367  $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 6416  $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 6765  report Message::DOM::DOMCore::ManakaiDOM Line 4157  report Message::DOM::DOMCore::ManakaiDOM
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 6813  $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 6865  $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 7003  $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} or  
     $Message::Util::AutoLoad::Registry::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} or  
         $Message::Util::AutoLoad::Registry::Feature  
             ->{$feature}->{$version}) {  
         
   
 {  
   
   
 $r = ${($self->{'b'})->{${($self->{'id'})}}->{  
 'cls'  
 }}->___create_node_ref ({  
     
 'id'  
  => ($self->{'id'}),  
     
 'b'  
  => ($self->{'b'}),  
 }, {  
           'nrcls' => \$__class,  
         });  
 ($self->{'b'})->{${($self->{'id'})}}->{  
 'rc'  
 }++;  
   
   
 }  
   
 ;  
       last CLASS;  
     }  
   } # CLASS  
4327  }  }
4328    
4329    
# Line 7143  $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.9  
changed lines
  Added in v.1.14

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24