/[suikacvs]/messaging/manakai/lib/Message/DOM/TreeStore.dis
Suika

Contents of /messaging/manakai/lib/Message/DOM/TreeStore.dis

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (hide annotations) (download)
Tue Aug 15 03:54:37 2006 UTC (19 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.1: +2 -2 lines
++ manakai/t/ChangeLog	15 Aug 2006 03:53:40 -0000
2006-08-15  Wakaba  <wakaba@suika.fam.cx>

	* Makefile (util-dis-Value.t): New test.

++ manakai/lib/Message/Util/ChangeLog	15 Aug 2006 03:50:57 -0000
2006-08-15  Wakaba  <wakaba@suika.fam.cx>

	* Makefile (.discore-all.pm): |../DOM/TreeStore.pm| is added
	to the list.

++ manakai/lib/Message/Util/DIS/ChangeLog	15 Aug 2006 03:53:08 -0000
2006-08-15  Wakaba  <wakaba@suika.fam.cx>

	* Value.dis (Require): References to |MDOM:TreeCore|
	and |MDOM:TreeStore| modules are added.
	(ManakaiDISImplementationValue): Now it
	extends the |ManakaiDOMImplementationTreeStore| class.
	(ValueFeature10): Now it requires the |TSFeature30| feature.
	(createDVXMLValue): New method.
	(createXMLValue): New code.
	(DVXMLValue): New interface.

++ manakai/lib/Message/DOM/ChangeLog	15 Aug 2006 03:50:21 -0000
2006-08-15  Wakaba  <wakaba@suika.fam.cx>

	* TreeStore.pm: Added to the CVS repository
	to enable for the dis database to contain XML
	fragments.

	* Makefile (DOT_CORE_DIS_FILES): |TreeStore.pm| is added.

	* TreeStore.dis (Namespace): Namespace URI was incorrect.

1 wakaba 1.1 Module:
2     @QName: MDOM|TreeStore
3     @enFN:
4     DOM Tree Store Module
5     @enDesc:
6     The manakai DOM Tree Store Module provides a simple
7     storable representation of a DOM subtree.
8    
9     @Namespace:
10 wakaba 1.2 http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeStore/
11 wakaba 1.1
12     @DISCore:author: DISCore|Wakaba
13     @License: license|Perl+MPL
14     @Date:
15 wakaba 1.2 $Date: 2006/04/02 12:14:43 $
16 wakaba 1.1
17     @Require:
18     @@Module:
19     @@@QName: MDOM|TreeCore
20     @@@WithFor: ManakaiDOM|ManakaiDOMLatest
21     @@Module:
22     @@@WithFor: ManakaiDOM|ManakaiDOM
23     @@Module:
24     @@@WithFor: ManakaiDOM|ManakaiDOMLatest
25     @DefaultFor: ManakaiDOM|ManakaiDOMLatest
26    
27     Namespace:
28     @c:
29     http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
30     @cfg:
31     http://suika.fam.cx/www/2006/dom-config/
32     @dis:
33     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
34     @doc:
35     http://suika.fam.cx/~wakaba/archive/2005/7/tutorial#
36     @d:
37     http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
38     @DOMMain:
39     http://suika.fam.cx/~wakaba/archive/2004/dom/main#
40     @dx:
41     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
42     @dxm:
43     http://suika.fam.cx/~wakaba/archive/2004/dis/XML#
44     @ecore:
45     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
46     @ev:
47     http://www.w3.org/2001/xml-events
48     @f:
49     http://suika.fam.cx/~wakaba/archive/2004/dom/feature#
50     @fe:
51     http://suika.fam.cx/www/2006/feature/
52     @idl:
53     http://suika.fam.cx/~wakaba/archive/2004/dis/IDL#
54     @infoset:
55     http://www.w3.org/2001/04/infoset#
56     @kwd:
57     http://suika.fam.cx/~wakaba/archive/2005/rfc2119/
58     @lang:
59     http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
60     @license:
61     http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
62     @ManakaiDOM:
63     http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
64     @ManakaiDOMCore:
65     http://suika.fam.cx/~wakaba/archive/2004/mdom-core#
66     @MDOM:
67     http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
68     @MDOMX:
69     http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
70     @mg:
71     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Grove/
72     @null:
73     http://suika.fam.cx/~wakaba/-temp/2003/09/27/null
74     @rdf:
75     http://www.w3.org/1999/02/22-rdf-syntax-ns#
76     @rdfs:
77     http://www.w3.org/2000/01/rdf-schema#
78     @sw010:
79     urn:x-suika-fam-cx:markup:suikawiki:0:10:
80     @t:
81     http://suika.fam.cx/~wakaba/archive/2004/dom/tree#
82     @tc:
83     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeCore/
84     @td:
85     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Document/
86     @te:
87     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
88     @test:
89     http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
90     @tst:
91     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/TreeStore/
92     @tx:
93     http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
94     @urigen:
95     http://suika.fam.cx/~wakaba/archive/2005/manakai/URI/Generic/
96     @Util:
97     http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/
98     @xml:
99     http://www.w3.org/XML/1998/namespace
100     @xml-dtd:
101     http://www.w3.org/TR/REC-xml
102     @xmlns:
103     http://www.w3.org/2000/xmlns/
104    
105     ElementTypeBinding:
106     @Name: CODE
107     @ElementType:
108     dis:ResourceDef
109     @ShadowContent:
110     @@DISCore:resourceType: DISPerl|BlockCode
111     @@ForCheck: ManakaiDOM|ForClass
112    
113     ElementTypeBinding:
114     @Name: Method
115     @ElementType:
116     dis:ResourceDef
117     @ShadowContent:
118     @@rdf:type: DISLang|Method
119     @@ForCheck: !=ManakaiDOM|ManakaiDOM
120    
121     ElementTypeBinding:
122     @Name: Param
123     @ElementType:
124     dis:ResourceDef
125     @ShadowContent:
126     @@rdf:type: DISLang|MethodParameter
127    
128     ElementTypeBinding:
129     @Name: Return
130     @ElementType:
131     dis:ResourceDef
132     @ShadowContent:
133     @@rdf:type: DISLang|MethodReturn
134    
135     ElementTypeBinding:
136     @Name: nullCase
137     @ElementType:
138     dis:ResourceDef
139     @ShadowContent:
140     @@rdf:type:
141     ManakaiDOM:InCase
142     @@Value:
143     @@@is-null:1
144    
145     ElementTypeBinding:
146     @Name: IFQName
147     @ElementType:
148     dis:QName
149     @ShadowContent:
150     @@ForCheck: ManakaiDOM|ForIF
151    
152     ElementTypeBinding:
153     @Name: ClsQName
154     @ElementType:
155     dis:QName
156     @ShadowContent:
157     @@ForCheck: ManakaiDOM|ForClass
158    
159     ElementTypeBinding:
160     @Name: IFISA
161     @ElementType:
162     dis:ISA
163     @ShadowContent:
164     @@ForCheck: ManakaiDOM|ForIF
165    
166     ElementTypeBinding:
167     @Name: ClsISA
168     @ElementType:
169     dis:ISA
170     @ShadowContent:
171     @@ForCheck: ManakaiDOM|ForClass
172    
173     ## -- Features
174    
175     ElementTypeBinding:
176     @Name: FeatureDef
177     @ElementType:
178     dis:ResourceDef
179     @ShadowContent:
180     @@rdf:type: f|Feature
181     @@For: =ManakaiDOM|all
182    
183     ElementTypeBinding:
184     @Name: FeatureVerDef
185     @ElementType:
186     dis:ResourceDef
187     @ShadowContent:
188     @@rdf:type: f|Feature
189    
190     ElementTypeBinding:
191     @Name: featureQName
192     @ElementType:
193     f:name
194     @ShadowContent:
195     @@ContentType: DISCore|QName
196    
197     FeatureDef:
198     @QName: TSFeature
199     @featureQName: fe|TreeStore
200     @FeatureVerDef:
201     @@QName: TSFeature30
202     @@f:instanceOf: d|Feature
203     @@Version: 3.0
204     @@f:requires: c|CoreFeature30
205     @@f:requires: tx|XMLFeature30
206    
207     ElementTypeBinding:
208     @Name: IFClsDef
209     @ElementType:
210     dis:ResourceDef
211     @ShadowContent:
212     @@DISCore:resourceType:
213     @@@@: dis|MultipleResource
214     @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass
215     @@resourceFor: ManakaiDOM|ForIF
216     @@resourceFor:
217     @@@@: ManakaiDOM|ForClass
218     @@@ForCheck: ManakaiDOM|ManakaiDOMLatest
219     @@For: ManakaiDOM|DOM1
220     @@For: =ManakaiDOM|ManakaiDOM
221    
222     @@DISCore:resourceType:
223     @@@@: DISLang|Interface
224     @@@ForCheck: ManakaiDOM|ForIF
225    
226     @@DISCore:resourceType:
227     @@@@: DISLang|Class
228     @@@ForCheck: ManakaiDOM|ForClass
229     @@Implement:
230     @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF
231     @@@ContentType: DISCore|TFPQNames
232     @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM
233     @@Implement:
234     @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF
235     @@@ContentType: DISCore|TFPQNames
236     @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest
237    
238     ElementTypeBinding:
239     @Name: Test
240     @ElementType:
241     dis:ResourceDef
242     @ShadowContent:
243     @@DISCore:resourceType: test|StandaloneTest
244     @@ForCheck: ManakaiDOM|ForClass
245    
246     ## -- Implementation
247    
248     IFClsDef:
249     @IFQName: DOMImplementationTreeStore
250     @ClsQName: ManakaiDOMImplementationTreeStore
251    
252     @IFISA: c|DOMImplementation
253     @ClsISA: c|ManakaiDOMImplementation
254    
255     @f:provides: TSFeature30
256    
257     @Test:
258     @@QName: ImplementationRegistry.getImplementation.1.test
259     @@PerlDef:
260     my $impl = $Message::DOM::ImplementationRegistry
261     ->get_implementation ({<Q::fe|TreeStore> => '3.0'});
262    
263     $test->id ('DOMImplementationTreeStore');
264     $test->assert_isa ($impl, <IFName::DOMImplementationTreeStore>);
265    
266     $test->id ('DOMImplementationTree');
267     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
268     @Test:
269     @@QName: ImplementationRegistry.getImplementation.2.test
270     @@PerlDef:
271     my $impl = $Message::DOM::ImplementationRegistry
272     ->get_implementation ({<Q::fe|TreeStore> => '3.0',
273     Core => '3.0'});
274    
275     $test->id ('DOMImplementationTreeStore');
276     $test->assert_isa ($impl, <IFName::DOMImplementationTreeStore>);
277    
278     $test->id ('DOMImplementationTree');
279     $test->assert_isa ($impl, <IFName::c|DOMImplementation>);
280     @Test:
281     @@QName: DOMImplementation.getFeature.1.test
282     @@PerlDef:
283     my $impl;
284     __CODE{tc|createImplForTest:: $impl => $impl}__;
285    
286     my $gf = $impl->get_feature (<Q::fe|TreeStore> => '3.0');
287    
288     $test->id ('DOMImplementationTreeStore');
289     $test->assert_isa ($gf, <IFName::DOMImplementationTreeStore>);
290    
291     $test->id ('DOMImplementationTree');
292     $test->assert_isa ($gf, <IFName::c|DOMImplementation>);
293    
294     @CODE:
295     @@QName: tst|createImplForTest
296     @@PerlDef:
297     $impl = <Class::ManakaiDOMImplementationTreeStore>->_new;
298    
299     @Method:
300     @@Name: createStorableObjectFromNode
301     @@enDesc:
302     Creates a storable representation of the <IF::tc|Node>
303     and its subtree.
304     @@Param:
305     @@@Name: in
306     @@@Type: tc|Node
307     @@@enDesc:
308     The original <IF::tc|Node> to convert.
309     @@Return:
310     @@@Type: StorableObject
311     @@@enDesc:
312     A storable representation of the <P::in> node.
313     @@@dx:raises:
314     @@@@@: c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR
315     @@@@enDesc:
316     If the <P::in> node is of type other than
317     <IF::td|Document>, <IF::td|DocumentFragment>,
318     <IF::te|Element>, <IF::te|Attr>,
319     <IF::tc|Text>, or <IF::tx|CDATASection>.
320     @@@PerlDef:
321     if ({
322     <C::tc|Node.DOCUMENT_NODE> => true,
323     <C::tc|Node.DOCUMENT_FRAGMENT_NODE> => true,
324     <C::tc|Node.ELEMENT_NODE> => true,
325     <C::tc|Node.ATTRIBUTE_NODE> => true,
326     <C::tc|Node.TEXT_NODE> => true,
327     <C::tc|Node.CDATA_SECTION_NODE> => true,
328     }->{$in-><AG::tc|Node.nodeType>}) {
329     my @target = ([$in, # node
330     null]); # origin
331    
332     while (@target) {
333     my $target = shift @target;
334     my $tnt = $target->[0]-><AG::tc|Node.nodeType>;
335     if ($tnt == <C::tc|Node.ELEMENT_NODE>) {
336     my $v = {};
337    
338     my $pv;
339     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
340     $r => $pv,
341     $prop => {<H::infoset|namespaceName>},
342     $ref => {$target->[0]},
343     }__;
344     $v->{namespace_uri} = $pv if defined $pv;
345    
346     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
347     $r => $pv,
348     $prop => {<H::infoset|localName>},
349     $ref => {$target->[0]},
350     }__;
351     $v->{local_name} = $pv;
352    
353     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
354     $r => $pv,
355     $prop => {<H::infoset|prefix>},
356     $ref => {$target->[0]},
357     }__;
358     $v->{prefix} = $pv if defined $pv;
359    
360     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
361     push @target, [$_, $v];
362     }
363     for (@{$target->[0]-><AG::tc|Node.attributes>}) {
364     push @target, [$_, $v];
365     }
366     if (defined $target->[1]) {
367     push @{$target->[1]->{child_nodes} ||= []}, $v;
368     } else {
369     $r = $v unless defined $r;
370     }
371     } elsif ($tnt == <C::tc|Node.ATTRIBUTE_NODE>) {
372     my $v = {
373     value => \ $target->[0]-><AG::te|Attr.value>,
374     };
375    
376     my $pv;
377     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
378     $r => $pv,
379     $prop => {<H::infoset|namespaceName>},
380     $ref => {$target->[0]},
381     }__;
382     $v->{namespace_uri} = $pv if defined $pv;
383    
384     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
385     $r => $pv,
386     $prop => {<H::infoset|localName>},
387     $ref => {$target->[0]},
388     }__;
389     $v->{local_name} = $pv;
390    
391     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
392     $r => $pv,
393     $prop => {<H::infoset|prefix>},
394     $ref => {$target->[0]},
395     }__;
396     $v->{prefix} = $pv if defined $pv;
397    
398     if (defined $target->[1]) {
399     push @{$target->[1]->{attributes} ||= []}, $v;
400     } else {
401     $r = $v unless defined $r;
402     }
403     } elsif ($tnt == <C::tc|Node.TEXT_NODE> or
404     $tnt == <C::tc|Node.CDATA_SECTION_NODE>) {
405     my $v = {};
406     __CODE{mg|getNodeStemPropValue||ManakaiDOM|all::
407     $r => {$v->{data}},
408     $prop => {<H::infoset|content>},
409     $ref => {$target->[0]},
410     }__;
411    
412     if (defined $target->[1]) {
413     push @{$target->[1]->{child_nodes} ||= []}, $v;
414     } else {
415     $r = $v unless defined $r;
416     }
417     } elsif ($tnt == <C::tc|Node.DOCUMENT_NODE>) {
418     my $v = {
419     xml_version => $target->[0]-><AG::td|Document.xmlVersion>,
420     };
421    
422     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
423     push @target, [$_, $v];
424     }
425     $r = $v unless defined $r;
426     } elsif ($tnt == <C::tc|Node.DOCUMENT_FRAGMENT_NODE>) {
427     my $v = {};
428    
429     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
430     push @target, [$_, $v];
431     }
432     $r = $v unless defined $r;
433     } elsif ($tnt == <C::tc|Node.ENTITY_REFERENCE_NODE>) {
434     for (@{$target->[0]-><AG::tc|Node.childNodes>}) {
435     push @target, [$_, $target->[1]];
436     }
437     }
438     }
439     } else {
440     __EXCEPTION{c|CLONE_NODE_TYPE_NOT_SUPPORTED_ERR::
441     MDOMX|param-name => 'in',
442     c|node => {$in},
443     }__;
444     }
445    
446     @Method:
447     @@Name: createNodeFromStorableObject
448     @@enDesc:
449     Creates a <IF::tc|Node> and its subtree from a storable representation.
450     @@Param:
451     @@@Name: in
452     @@@Type: StorableObject
453     @@@enDesc:
454     The original node storable representation to convert.
455     @@Param:
456     @@@Name: od
457     @@@Type: td|Document
458     @@@enDesc:
459     The owner document to which the generated nodes
460     belong. If the top-level <P::in> object represents
461     a document, this parameter <kwd:MUST> be ignored.
462     @@@nullCase:
463     @@@@enDesc:
464     A new empty <IF::td|Document> is created. If the top-level
465     <P::in> object represents a document, the created <IF::td|Document>
466     <kwd:MUST> be modified so that it represents that document.
467     @@Return:
468     @@@Type: tc|Node
469     @@@enDesc:
470     A <IF::tc|Node> created from the top-level <P::in> object.
471     @@@PerlDef:
472     __DEEP{
473     $od = $self-><M::c|DOMImplementation.createDocument>;
474     my $orig_strict = $od-><AG::td|Document.strictErrorChecking>;
475     $od-><AS::td|Document.strictErrorChecking> (false);
476    
477     my @target = ([$in,
478     null, # parent node
479     null]); # owner element
480     while (@target) {
481     my $target = shift @target;
482     if (defined $target->[0]->{local_name}) {
483     if (defined $target->[0]->{value}) {
484     # Attribute
485     my $node = $od-><M::td|Document.createAttributeNS>
486     ($target->[0]->{namespace_uri},
487     [$target->[0]->{prefix},
488     $target->[0]->{local_name}]);
489     $node-><M::tc|Node.manakaiAppendText> ($target->[0]->{value});
490     if (defined $target->[2]) {
491     $target->[2]-><M::te|Element.setAttributeNodeNS> ($node);
492     } else {
493     $r = $node unless defined $r;
494     }
495     } else {
496     # Element
497     my $node = $od-><M::td|Document.createElementNS>
498     ($target->[0]->{namespace_uri},
499     [$target->[0]->{prefix},
500     $target->[0]->{local_name}]);
501     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
502     ? $target->[0]->{child_nodes} : []}) {
503     push @target, [$_, $node];
504     }
505     for (@{ref $target->[0]->{attributes} eq 'ARRAY'
506     ? $target->[0]->{attributes} : []}) {
507     push @target, [$_, null, $node];
508     }
509     if (defined $target->[1]) {
510     $target->[1]-><M::tc|Node.appendChild> ($node);
511     } else {
512     $r = $node unless defined $r;
513     }
514     }
515     } elsif (defined $target->[0]->{data}) {
516     # Text
517     if (defined $target->[1]) {
518     $target->[1]-><M::tc|Node.manakaiAppendText>
519     ($target->[0]->{data});
520     } elsif (not defined $r) {
521     $r = $od-><M::td|Document.createTextNode> ('');
522     $r-><M::tc|Node.manakaiAppendText> ($target->[0]->{data});
523     }
524     } elsif (defined $target->[0]->{xml_version}) {
525     # Document
526     my $node = $self-><M::c|DOMImplementation.createDocument>;
527     $node-><AS::td|Document.strictErrorChecking> (false);
528     $node-><AG::td|Document.domConfig>
529     -><M::c|DOMConfiguration.setParameter>
530     (<Q::cfg|strict-document-children> => false);
531     $node-><AS::td|Document.xmlVersion> ($target->[0]->{xml_version});
532     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
533     ? $target->[0]->{child_nodes} : []}) {
534     push @target, [$_, $node];
535     }
536     unless (defined $r) {
537     $r = $node;
538     $od = $node;
539     $orig_strict = true;
540     }
541     } else {
542     # Document fragment
543     unless (defined $r) {
544     $r = $od-><M::td|Document.createDocumentFragment>;
545     for (@{ref $target->[0]->{child_nodes} eq 'ARRAY'
546     ? $target->[0]->{child_nodes} : []}) {
547     push @target, [$_, $r];
548     }
549     }
550     }
551     }
552     $od-><AS::td|Document.strictErrorChecking> ($orig_strict);
553     if ($r-><AG::tc|Node.nodeType> == <C::tc|Node.DOCUMENT_NODE>) {
554     $r-><AG::td|Document.domConfig>
555     -><M::c|DOMConfiguration.setParameter>
556     (<Q::cfg|strict-document-children> => null);
557     }
558     }__;
559    
560     @Test:
561     @@QName: TreeStore.1.test
562     @@enDesc:
563     A non-NS element.
564     @@PerlDef:
565     my $impl;
566     __CODE{tst|createImplForTest:: $impl => $impl}__;
567    
568     my $doc = $impl->create_document;
569    
570     my $e1 = $doc->create_element_ns (null, 'element');
571    
572     my $e2 = $impl->create_storable_object_from_node ($e1);
573    
574     my $e3 = $impl->create_node_from_storable_object ($e2);
575    
576     $test->assert_num_equals
577     (actual_value => $e3,
578     expected_value => $e1);
579     @Test:
580     @@QName: TreeStore.2.test
581     @@enDesc:
582     An NS element.
583     @@PerlDef:
584     my $impl;
585     __CODE{tst|createImplForTest:: $impl => $impl}__;
586    
587     my $doc = $impl->create_document;
588    
589     my $e1 = $doc->create_element_ns ('about:', 'a:element');
590    
591     my $e2 = $impl->create_storable_object_from_node ($e1);
592    
593     my $e3 = $impl->create_node_from_storable_object ($e2);
594    
595     $test->assert_num_equals
596     (actual_value => $e3,
597     expected_value => $e1);
598     @Test:
599     @@QName: TreeStore.3.test
600     @@enDesc:
601     A non-NS attribute.
602     @@PerlDef:
603     my $impl;
604     __CODE{tst|createImplForTest:: $impl => $impl}__;
605    
606     my $doc = $impl->create_document;
607    
608     my $e1 = $doc->create_attribute_ns (null, 'element');
609     $e1->value ('attr value');
610    
611     my $e2 = $impl->create_storable_object_from_node ($e1);
612    
613     my $e3 = $impl->create_node_from_storable_object ($e2);
614    
615     $test->assert_num_equals
616     (actual_value => $e3,
617     expected_value => $e1);
618     @Test:
619     @@QName: TreeStore.4.test
620     @@enDesc:
621     An NS attribute.
622     @@PerlDef:
623     my $impl;
624     __CODE{tst|createImplForTest:: $impl => $impl}__;
625    
626     my $doc = $impl->create_document;
627    
628     my $e1 = $doc->create_attribute_ns ('about:', 'a:element');
629     $e1->value ('attr value');
630    
631     my $e2 = $impl->create_storable_object_from_node ($e1);
632    
633     my $e3 = $impl->create_node_from_storable_object ($e2);
634    
635     $test->assert_num_equals
636     (actual_value => $e3,
637     expected_value => $e1);
638     @Test:
639     @@QName: TreeStore.5.test
640     @@enDesc:
641     A text.
642     @@PerlDef:
643     my $impl;
644     __CODE{tst|createImplForTest:: $impl => $impl}__;
645    
646     my $doc = $impl->create_document;
647    
648     my $e1 = $doc->create_text_node ('text value');
649    
650     my $e2 = $impl->create_storable_object_from_node ($e1);
651    
652     my $e3 = $impl->create_node_from_storable_object ($e2);
653    
654     $test->assert_num_equals
655     (actual_value => $e3,
656     expected_value => $e1);
657     @Test:
658     @@QName: TreeStore.6.test
659     @@enDesc:
660     A cdata section.
661     @@PerlDef:
662     my $impl;
663     __CODE{tst|createImplForTest:: $impl => $impl}__;
664    
665     my $doc = $impl->create_document;
666    
667     my $e1 = $doc->create_cdata_section ('text value');
668    
669     my $e2 = $impl->create_storable_object_from_node ($e1);
670    
671     my $e3 = $impl->create_node_from_storable_object ($e2);
672    
673     $test->id ('nodeType');
674     $test->assert_num_equals
675     (actual_value => $e3->node_type,
676     expected_value => <C::tc|Node.TEXT_NODE>);
677    
678     $test->id ('nodeValue');
679     $test->assert_equals
680     ($e3->node_value, $e1->node_value);
681     @Test:
682     @@QName: TreeStore.7.test
683     @@enDesc:
684     A document.
685     @@PerlDef:
686     my $impl;
687     __CODE{tst|createImplForTest:: $impl => $impl}__;
688    
689     my $doc = $impl->create_document;
690    
691     my $e1 = $doc;
692    
693     my $e2 = $impl->create_storable_object_from_node ($e1);
694    
695     my $e3 = $impl->create_node_from_storable_object ($e2);
696    
697     $test->assert_num_equals
698     (actual_value => $e3,
699     expected_value => $e1);
700     @Test:
701     @@QName: TreeStore.8.test
702     @@enDesc:
703     A document fragment.
704     @@PerlDef:
705     my $impl;
706     __CODE{tst|createImplForTest:: $impl => $impl}__;
707    
708     my $doc = $impl->create_document;
709    
710     my $e1 = $doc->create_document_fragment;
711    
712     my $e2 = $impl->create_storable_object_from_node ($e1);
713    
714     my $e3 = $impl->create_node_from_storable_object ($e2);
715    
716     $test->assert_num_equals
717     (actual_value => $e3,
718     expected_value => $e1);
719     @Test:
720     @@QName: TreeStore.9.test
721     @@enDesc:
722     A nesting element.
723     @@PerlDef:
724     my $impl;
725     __CODE{tst|createImplForTest:: $impl => $impl}__;
726    
727     my $doc = $impl->create_document;
728    
729     my $e1 = $doc->create_element_ns (null, 'el1');
730     $e1->append_child ($doc->create_element_ns (null, 'el2'));
731    
732     my $e2 = $impl->create_storable_object_from_node ($e1);
733    
734     my $e3 = $impl->create_node_from_storable_object ($e2);
735    
736     $test->assert_num_equals
737     (actual_value => $e3,
738     expected_value => $e1);
739     @Test:
740     @@QName: TreeStore.10.test
741     @@enDesc:
742     A nesting element with text.
743     @@PerlDef:
744     my $impl;
745     __CODE{tst|createImplForTest:: $impl => $impl}__;
746    
747     my $doc = $impl->create_document;
748    
749     my $e1 = $doc->create_element_ns (null, 'el1');
750     $e1->manakai_append_text ('text value');
751     $e1->append_child ($doc->create_element_ns (null, 'el2'));
752    
753     my $e2 = $impl->create_storable_object_from_node ($e1);
754    
755     my $e3 = $impl->create_node_from_storable_object ($e2);
756    
757     $test->assert_num_equals
758     (actual_value => $e3,
759     expected_value => $e1);
760     @Test:
761     @@QName: TreeStore.12.test
762     @@enDesc:
763     An element with attributes.
764     @@PerlDef:
765     my $impl;
766     __CODE{tst|createImplForTest:: $impl => $impl}__;
767    
768     my $doc = $impl->create_document;
769    
770     my $e1 = $doc->create_element_ns (null, 'el1');
771     $e1->set_attribute (a => 'b');
772     $e1->set_attribute_ns ('about:', 'b:c', 'd');
773    
774     my $e2 = $impl->create_storable_object_from_node ($e1);
775    
776     my $e3 = $impl->create_node_from_storable_object ($e2);
777    
778     $test->assert_num_equals
779     (actual_value => $e3,
780     expected_value => $e1);
781     @Test:
782     @@QName: TreeStore.13.test
783     @@enDesc:
784     A document with element.
785     @@PerlDef:
786     my $impl;
787     __CODE{tst|createImplForTest:: $impl => $impl}__;
788    
789     my $doc = $impl->create_document;
790    
791     my $e1 = $doc;
792     $doc->append_child ($doc->create_element_ns (null, 'el1'));
793    
794     my $e2 = $impl->create_storable_object_from_node ($e1);
795    
796     my $e3 = $impl->create_node_from_storable_object ($e2);
797    
798     $test->assert_num_equals
799     (actual_value => $e3,
800     expected_value => $e1);
801     @Test:
802     @@QName: TreeStore.14.test
803     @@enDesc:
804     A document fragment with element.
805     @@PerlDef:
806     my $impl;
807     __CODE{tst|createImplForTest:: $impl => $impl}__;
808    
809     my $doc = $impl->create_document;
810    
811     my $e1 = $doc->create_document_fragment;
812     $e1->append_child ($doc->create_element_ns (null, 'el1'));
813    
814     my $e2 = $impl->create_storable_object_from_node ($e1);
815    
816     my $e3 = $impl->create_node_from_storable_object ($e2);
817    
818     $test->assert_num_equals
819     (actual_value => $e3,
820     expected_value => $e1);
821     ##DOMImplementationTreeStore
822    
823     ResourceDef:
824     @QName: StorableObject
825     @AliasFor: DOMMain|DOMObject
826     @For: ManakaiDOM|DOM3
827    
828     ElementTypeBinding:
829     @Name: enDesc
830     @ElementType:
831     dis:Description
832     @ShadowContent:
833     @@lang:en
834    
835     ElementTypeBinding:
836     @Name: enImplNote
837     @ElementType:
838     dis:ImplNote
839     @ShadowContent:
840     @@lang:en
841    
842     ElementTypeBinding:
843     @Name: enFN
844     @ElementType:
845     dis:FullName
846     @ShadowContent:
847     @@lang:en
848    
849     ElementTypeBinding:
850     @Name: PerlDef
851     @ElementType:
852     dis:Def
853     @ShadowContent:
854     @@ContentType:
855     lang:Perl
856     @@ForCheck: ManakaiDOM|ForClass

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24