/[suikacvs]/messaging/manakai/lib/Message/Markup/Atom.dis
Suika

Diff of /messaging/manakai/lib/Message/Markup/Atom.dis

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

revision 1.6 by wakaba, Sat May 20 10:13:02 2006 UTC revision 1.24 by wakaba, Sat Dec 30 13:25:34 2006 UTC
# Line 50  Module: Line 50  Module:
50        @@@QName: Markup|common        @@@QName: Markup|common
51      @@Module:      @@Module:
52        @@@QName: MDOM|TreeCore        @@@QName: MDOM|TreeCore
       @@@WithFor: ManakaiDOM|ManakaiDOMLatest  
53      @@Module:      @@Module:
54        @@@WithFor: ManakaiDOM|ManakaiDOM        @@@QName: DISlib|DISMarkup
     @@Module:  
       @@@WithFor: ManakaiDOM|ManakaiDOMLatest  
   @DefaultFor: ManakaiDOM|ManakaiDOMLatest  
55    
56  Namespace:  Namespace:
57    @atom:    @atom:
# Line 64  Namespace: Line 60  Namespace:
60      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
61    @cfg:    @cfg:
62      http://suika.fam.cx/www/2006/dom-config/      http://suika.fam.cx/www/2006/dom-config/
63      @DISlib:
64        http://suika.fam.cx/~wakaba/archive/2004/dis/
65    @dis:    @dis:
66      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
67    @dlp:    @dlp:
68      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#
   @doc:  
     http://suika.fam.cx/~wakaba/archive/2005/7/tutorial#  
69    @d:    @d:
70      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
71    @DOMMain:    @DOMMain:
72      http://suika.fam.cx/~wakaba/archive/2004/dom/main#      http://suika.fam.cx/~wakaba/archive/2004/dom/main#
73      @domperl:
74        http://suika.fam.cx/~wakaba/archive/2006/dom/perl/
75    @dx:    @dx:
76      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
77      @dxm:
78        http://suika.fam.cx/~wakaba/archive/2004/dis/XML#
79    @ecore:    @ecore:
80      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
81    @f:    @f:
# Line 92  Namespace: Line 92  Namespace:
92      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#
93    @license:    @license:
94      http://suika.fam.cx/~wakaba/archive/2004/8/18/license#      http://suika.fam.cx/~wakaba/archive/2004/8/18/license#
   @m12n:  
     http://suika.fam.cx/www/2006/05/m12n/  
95    @ManakaiDOM:    @ManakaiDOM:
96      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
97    @Markup:    @Markup:
98      http://suika.fam.cx/~wakaba/archive/2005/manakai/Markup#      http://suika.fam.cx/~wakaba/archive/2005/manakai/Markup#
   @mat:  
     http://suika.fam.cx/~wakaba/archive/2005/manakai/Markup/Atom/  
99    @MDOM:    @MDOM:
100      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
101    @MDOMX:    @MDOMX:
# Line 118  Namespace: Line 114  Namespace:
114      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
115    @test:    @test:
116      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
117      @thr:
118        http://purl.org/syndication/thread/1.0
119    @tx:    @tx:
120      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
121    @urigen:    @urigen:
# Line 139  ElementTypeBinding: Line 137  ElementTypeBinding:
137      dis:ResourceDef      dis:ResourceDef
138    @ShadowContent:    @ShadowContent:
139      @@DISCore:resourceType: DISLang|Method      @@DISCore:resourceType: DISLang|Method
     @@ForCheck: !=ManakaiDOM|ManakaiDOM  
140    
141  ElementTypeBinding:  ElementTypeBinding:
142    @Name: Param    @Name: Param
# Line 161  ElementTypeBinding: Line 158  ElementTypeBinding:
158      dis:ResourceDef      dis:ResourceDef
159    @ShadowContent:    @ShadowContent:
160      @@DISCore:resourceType: DISLang|Attribute      @@DISCore:resourceType: DISLang|Attribute
     @@ForCheck: !=ManakaiDOM|ManakaiDOM  
161    
162  ElementTypeBinding:  ElementTypeBinding:
163    @Name: ATTR    @Name: ATTR
# Line 175  ElementTypeBinding: Line 171  ElementTypeBinding:
171        @@@@: DISLang|Attribute        @@@@: DISLang|Attribute
172        @@@ForCheck: ManakaiDOM|ForClass        @@@ForCheck: ManakaiDOM|ForClass
173      @@DISCore:resourceType:      @@DISCore:resourceType:
174        @@@@: mv|Attribute        @@@@: mv|AttributeType
175        @@@ForCheck: s|ForML        @@@ForCheck: s|ForML
     @@ForCheck: !=ManakaiDOM|ManakaiDOM  
176    
177  ElementTypeBinding:  ElementTypeBinding:
178    @Name: Get    @Name: Get
# Line 242  ElementTypeBinding: Line 237  ElementTypeBinding:
237      @@resourceFor: ManakaiDOM|ForIF      @@resourceFor: ManakaiDOM|ForIF
238      @@resourceFor: ManakaiDOM|ForClass      @@resourceFor: ManakaiDOM|ForClass
239      @@resourceFor: s|ForML      @@resourceFor: s|ForML
     @@For: ManakaiDOM|ManakaiDOM  
240    
241      @@DISCore:resourceType:      @@DISCore:resourceType:
242        @@@@: DISLang|Interface        @@@@: DISLang|Interface
# Line 251  ElementTypeBinding: Line 245  ElementTypeBinding:
245      @@DISCore:resourceType:      @@DISCore:resourceType:
246        @@@@: DISLang|Class        @@@@: DISLang|Class
247        @@@ForCheck: ManakaiDOM|ForClass        @@@ForCheck: ManakaiDOM|ForClass
248    
249      @@Implement:      @@Implement:
250        @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF        @@@@: ||+||ManakaiDOM|ForIF
       @@@ContentType: DISCore|TFPQNames  
       @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM  
     @@Implement:  
       @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF  
251        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
252        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass
253    
254      @@s:elementType:      @@s:elementType:
255        @@@@: ||+||s|ForML        @@@@: ||+||s|ForML
# Line 269  ElementTypeBinding: Line 260  ElementTypeBinding:
260        @@@@: s|ElementType        @@@@: s|ElementType
261        @@@ForCheck: s|ForML        @@@ForCheck: s|ForML
262    
     @@f:implements: AtomFeature10  
   
263  ElementTypeBinding:  ElementTypeBinding:
264    @Name: IFClsDef    @Name: IFClsDef
265    @ElementType:    @ElementType:
# Line 281  ElementTypeBinding: Line 270  ElementTypeBinding:
270        @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML        @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML
271      @@resourceFor: ManakaiDOM|ForIF      @@resourceFor: ManakaiDOM|ForIF
272      @@resourceFor: ManakaiDOM|ForClass      @@resourceFor: ManakaiDOM|ForClass
     @@For: ManakaiDOM|ManakaiDOM  
273    
274      @@DISCore:resourceType:      @@DISCore:resourceType:
275        @@@@: DISLang|Interface        @@@@: DISLang|Interface
# Line 290  ElementTypeBinding: Line 278  ElementTypeBinding:
278      @@DISCore:resourceType:      @@DISCore:resourceType:
279        @@@@: DISLang|Class        @@@@: DISLang|Class
280        @@@ForCheck: ManakaiDOM|ForClass        @@@ForCheck: ManakaiDOM|ForClass
281    
282      @@Implement:      @@Implement:
283        @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF        @@@@: ||+||ManakaiDOM|ForIF
       @@@ContentType: DISCore|TFPQNames  
       @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM  
     @@Implement:  
       @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF  
284        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
285        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass
   
     @@f:implements: AtomFeature10  
286    
287  ElementTypeBinding:  ElementTypeBinding:
288    @Name: IFClsConstructDef    @Name: IFClsConstructDef
# Line 308  ElementTypeBinding: Line 291  ElementTypeBinding:
291    @ShadowContent:    @ShadowContent:
292      @@DISCore:resourceType:      @@DISCore:resourceType:
293        @@@@: dis|MultipleResource        @@@@: dis|MultipleResource
294        @@@ForCheck: !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML        @@@ForCheck:
295            !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML !mv|ForCM !mv|ForAG
296      @@resourceFor: ManakaiDOM|ForIF      @@resourceFor: ManakaiDOM|ForIF
297      @@resourceFor: ManakaiDOM|ForClass      @@resourceFor: ManakaiDOM|ForClass
298      @@resourceFor: mv|ForCM      @@resourceFor: mv|ForCM
299      @@resourceFor: mv|ForAG      @@resourceFor: mv|ForAG
     @@For: ManakaiDOM|ManakaiDOM  
300    
301      @@DISCore:resourceType:      @@DISCore:resourceType:
302        @@@@: DISLang|Interface        @@@@: DISLang|Interface
# Line 322  ElementTypeBinding: Line 305  ElementTypeBinding:
305      @@DISCore:resourceType:      @@DISCore:resourceType:
306        @@@@: DISLang|Class        @@@@: DISLang|Class
307        @@@ForCheck: ManakaiDOM|ForClass        @@@ForCheck: ManakaiDOM|ForClass
308    
309      @@Implement:      @@Implement:
310        @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF        @@@@: ||+||ManakaiDOM|ForIF
       @@@ContentType: DISCore|TFPQNames  
       @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM  
     @@Implement:  
       @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF  
311        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
312        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass
313    
314      @@DISCore:resourceType:      @@DISCore:resourceType:
315        @@@@: mv|AttributeTypeGroup        @@@@: mv|AttributeTypeGroup
# Line 339  ElementTypeBinding: Line 319  ElementTypeBinding:
319        @@@@: mv|ElementContentModel        @@@@: mv|ElementContentModel
320        @@@ForCheck: mv|ForCM        @@@ForCheck: mv|ForCM
321    
     @@f:implements: AtomFeature10  
322    
323  ElementTypeBinding:  ElementTypeBinding:
324    @Name: IFQName    @Name: IFQName
# Line 447  ElementTypeBinding: Line 426  ElementTypeBinding:
426  ResourceDef:  ResourceDef:
427    @QName: Document    @QName: Document
428    @AliasFor: td|Document    @AliasFor: td|Document
   @For: ManakaiDOM|DOM  
429    
430  ResourceDef:  ResourceDef:
431    @QName: Element    @QName: Element
432    @AliasFor: te|Element    @AliasFor: te|Element
   @For: ManakaiDOM|DOM  
433    
434  ResourceDef:  ResourceDef:
435    @QName: Attr    @QName: Attr
436    @AliasFor: te|Attr    @AliasFor: te|Attr
   @For: ManakaiDOM|DOM  
437    
438  ResourceDef:  ResourceDef:
439    @QName: DOMString    @QName: DOMString
440    @AliasFor: DOMMain|DOMString    @AliasFor: DOMMain|DOMString
   @For: ManakaiDOM|DOM  
441    
442  ResourceDef:  ResourceDef:
443    @QName: DOMURI    @QName: DOMURI
444    @AliasFor: ManakaiDOM|ManakaiDOMURI    @AliasFor: ManakaiDOM|ManakaiDOMURI
   @For: ManakaiDOM|DOM3  
445    
446  ResourceDef:  ResourceDef:
447    @QName: DOMTimeStamp    @QName: DOMTimeStamp
448    @AliasFor: DOMMain|DOMTimeStamp    @AliasFor: DOMMain|DOMTimeStamp
   @For: ManakaiDOM|DOM2  
449    
450  ResourceDef:  ResourceDef:
451    @QName: boolean    @QName: boolean
452    @AliasFor: idl|boolean||ManakaiDOM|all    @AliasFor: idl|boolean
453    
454  ResourceDef:  ResourceDef:
455    @QName: Node    @QName: Node
456    @AliasFor: tc|Node    @AliasFor: tc|Node
   @For: ManakaiDOM|ManakaiDOM  
457    
458  ResourceDef:  ResourceDef:
459    @QName: NodeList    @QName: NodeList
460    @AliasFor: tc|NodeList    @AliasFor: tc|NodeList
   @For: ManakaiDOM|ManakaiDOM  
461    
462  ResourceDef:  ResourceDef:
463    @QName: StaticNodeList    @QName: StaticNodeList
464    @AliasFor: tc|StaticNodeList    @AliasFor: tc|StaticNodeList
   @For: ManakaiDOM|ManakaiDOM  
465    
466  ElementTypeBinding:  ElementTypeBinding:
467    @Name: enDesc    @Name: enDesc
# Line 517  ElementTypeBinding: Line 487  ElementTypeBinding:
487      @@Value:      @@Value:
488        @@@@: 1        @@@@: 1
489        @@@ContentType: DISCore|Boolean        @@@ContentType: DISCore|Boolean
490      @@Type: idl|boolean||ManakaiDOM|all      @@Type: idl|boolean
491    
492  ElementTypeBinding:  ElementTypeBinding:
493    @Name: FalseCase    @Name: FalseCase
# Line 529  ElementTypeBinding: Line 499  ElementTypeBinding:
499      @@Value:      @@Value:
500        @@@@: 0        @@@@: 0
501        @@@ContentType: DISCore|Boolean        @@@ContentType: DISCore|Boolean
502      @@Type: idl|boolean||ManakaiDOM|all      @@Type: idl|boolean
503    
504  ## -- Features  ## -- Features
505    
# Line 539  ElementTypeBinding: Line 509  ElementTypeBinding:
509      dis:ResourceDef      dis:ResourceDef
510    @ShadowContent:    @ShadowContent:
511      @@DISCore:resourceType: f|Feature      @@DISCore:resourceType: f|Feature
     @@For: =ManakaiDOM|all  
512    
513  ElementTypeBinding:  ElementTypeBinding:
514    @Name: FeatureVerDef    @Name: FeatureVerDef
# Line 560  FeatureDef: Line 529  FeatureDef:
529    @QName: AtomFeature    @QName: AtomFeature
530    @FeatureVerDef:    @FeatureVerDef:
531      @@QName: AtomFeature10      @@QName: AtomFeature10
532      @@Version: 1.0      @@f:version: 1.0
533      @@f:instanceOf: AtomFeature      @@f:instanceOf: AtomFeature
534      @@f:requires: tx|XMLFeature30      @@f:requires: tx|XMLFeature30
535      @@enDesc:      @@enDesc:
536        The Atom DOM, version 1.0.        The Atom DOM, version 1.0.
537    
538    FeatureDef:
539      @featureQName: fe|AtomThreading
540      @QName: AtomThreadingFeature
541      @FeatureVerDef:
542        @@QName: AtomThreadingFeature10
543        @@f:version: 1.0
544        @@f:instanceOf: AtomThreadingFeature
545        @@f:requires: fe|AtomFeature10
546        @@enDesc:
547          The Atom Threading Extension DOM, version 1.0.
548    
549  ## -- Modules  ## -- Modules
550    
551  ModuleSetDef:  ModuleSetDef:
552    @QName: Atom    @QName: Atom
   @mv:id: atom  
   @mv:vid: 10  
553    @enLN: Atom    @enLN: Atom
554    @mv:version: 1.0    @mv:version: 1.0
   @mv:contains: AtomFeed  
   @mv:contains: AtomEntry  
   @mv:contains: AtomProperties  
555    @mv:contains: AtomDatatypes    @mv:contains: AtomDatatypes
556      @mv:contains: AtomProperties
557      @mv:contains: AtomEntry
558      @mv:contains: AtomFeed
559      @mv:contains: AtomQName
560    
561      @mv:targetNamespace: atom|
562      @mv:defaultNamespacePrefix: atom
563      @mv:systemIdentifierBaseURI: \
564    
565  ModuleDef:  ModuleDef:
566    @QName: AtomFeed    @QName: AtomFeed
567    @mv:id: feed    @mv:id: feed
568    @enLN: Feed    @enLN: Feed
569      @mv:contains: feed-prop
570    @mv:contains: atom|feed    @mv:contains: atom|feed
571    
572  ModuleDef:  ModuleDef:
573    @QName: AtomEntry    @QName: AtomEntry
574    @mv:id: entry    @mv:id: entry
575    @enLN: Entry    @enLN: Entry
576      @mv:contains: entry-prop
577    @mv:contains: atom|entry    @mv:contains: atom|entry
578    
579  ModuleDef:  ModuleDef:
# Line 596  ModuleDef: Line 581  ModuleDef:
581    @mv:id: props    @mv:id: props
582    @enLN: Properties    @enLN: Properties
583    @mv:contains: atom|content    @mv:contains: atom|content
584      @mv:contains: atom|contributor
585    @mv:contains: atom|category    @mv:contains: atom|category
586    @mv:contains: atom|generator    @mv:contains: atom|generator
   @mv:contains: atom|source  
587    @mv:contains: atom|link    @mv:contains: atom|link
588    @mv:contains: atom|author    @mv:contains: atom|author
589    @mv:contains: atom|published    @mv:contains: atom|published
590    @mv:contains: atom|updated    @mv:contains: atom|updated
591      @mv:contains: atom|icon
592    @mv:contains: atom|id    @mv:contains: atom|id
593      @mv:contains: atom|logo
594      @mv:contains: atom|rights
595      @mv:contains: atom|subtitle
596      @mv:contains: atom|summary
597    @mv:contains: atom|title    @mv:contains: atom|title
598    @mv:contains: atom|email    @mv:contains: source-prop
599    @mv:contains: atom|uri    @mv:contains: atom|source
600    
601  ModuleDef:  ModuleDef:
602    @QName: AtomDatatypes    @QName: AtomDatatypes
603    @mv:id: datatypes    @mv:id: datatypes
604    @enLN: Datatypes    @enLN: Datatypes
605    
606      @mv:contains: atomNCName
607      @mv:contains: atomMediaType
608      @mv:contains: atomLanguageTag
609      @mv:contains: atomUri
610      @mv:contains: atomUriCM
611      @mv:contains: atomEmailAddress
612      @mv:contains: atomEmailAddressCM
613    
614      @mv:contains: undefinedAttributes
615      @mv:contains: undefinedContent
616      @mv:contains: atomCommonAttributes
617    
618      @mv:contains: simpleExtensionElements
619      @mv:contains: structuredExtensionElements
620      @mv:contains: extensionElements
621    
622    @mv:contains: TextAG    @mv:contains: TextAG
623    @mv:contains: TextCM    @mv:contains: TextCM
624    
625      @mv:contains: atom|name
626      @mv:contains: atom|email
627      @mv:contains: atom|uri
628    @mv:contains: PersonAG    @mv:contains: PersonAG
629      @mv:contains: person-prop
630    @mv:contains: PersonCM    @mv:contains: PersonCM
631    
632    @mv:contains: DateAG    @mv:contains: DateAG
633    @mv:contains: DateCM    @mv:contains: DateCM
634    
635    ResourceDef:
636      @QName: AtomQName
637      @enLN: Qualified Names
638      @mv:id: qname
639      @DISCore:resourceType: mv|XMLDTDQNameModule
640    
641      @mv:contains: Atom
642    
643    ResourceDef:
644      @QName: Atom10
645      @enLN: Atom 1.0
646      @mv:id: atom10
647      @DISCore:resourceType: mv|XMLDTDDriver
648    
649      @mv:refers: Atom
650    
651      @mv:refers: AtomQName
652      @mv:refers: AtomDatatypes
653      @mv:refers: AtomProperties
654      @mv:refers: AtomEntry
655      @mv:refers: AtomFeed
656    
657  ElementTypeBinding:  ElementTypeBinding:
658    @Name: ModuleSetDef    @Name: ModuleSetDef
# Line 625  ElementTypeBinding: Line 660  ElementTypeBinding:
660      dis:ResourceDef      dis:ResourceDef
661    @ShadowContent:    @ShadowContent:
662      @@DISCore:resourceType: mv|XMLDTDModuleSet      @@DISCore:resourceType: mv|XMLDTDModuleSet
     @@For: =ManakaiDOM|ManakaiDOMLatest  
663    
664  ElementTypeBinding:  ElementTypeBinding:
665    @Name: ModuleDef    @Name: ModuleDef
# Line 633  ElementTypeBinding: Line 667  ElementTypeBinding:
667      dis:ResourceDef      dis:ResourceDef
668    @ShadowContent:    @ShadowContent:
669      @@DISCore:resourceType: mv|XMLDTDModule      @@DISCore:resourceType: mv|XMLDTDModule
     @@For: =ManakaiDOM|ManakaiDOMLatest  
670    
671  ## -- Implementation  ## -- Implementation
672    
# Line 641  IFClsDef: Line 674  IFClsDef:
674    @IFQName: AtomImplementation    @IFQName: AtomImplementation
675    @ClsQName: ManakaiAtomImplementation    @ClsQName: ManakaiAtomImplementation
676    
677    @IFISA: c|DOMImplementation    @domperl:implementedByObjectsOf: c|DOMImplementation
678    @ClsISA: c|ManakaiDOMImplementation    @domperl:classImplementedByObjectsOf: c|ManakaiDOMImplementation
679    
680    @enDesc:    @enDesc:
681      The <IF::AtomImplementation> interface provides convenience      The <IF::AtomImplementation> interface provides convenience
682      methods to create Atom documents.      methods to create Atom documents.
683    
684    @f:provides: AtomFeature10    @f:implements: AtomFeature10
685    
686    @Test:    @Test:
687      @@QName: AtomImplementation.interface.test      @@QName: AtomImplementation.interface.test
688      @@PerlDef:      @@PerlDef:
689        for my $interface (        for my $interface (
690          <IFName::AtomImplementation>,          <IFName::AtomImplementation>,
         <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,  
691          <IFName::c|DOMImplementation>,          <IFName::c|DOMImplementation>,
         <IFName::urigen|URIImplementation>,  
         <IFName::f|MinimumImplementation>,  
692          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
693        ) {        ) {
694          $test->id ($interface);          $test->id ($interface);
695          $test->assert_true          $test->assert_true
696                   (<Class::ManakaiAtomImplementation>->isa ($interface));                   (<Class::c|ManakaiDOMImplementation>->isa ($interface));
697        }        }
698    @Test:    @Test:
699      @@QName: ImplementationRegistry.AtomImplementation.1.test      @@QName: ImplementationRegistry.AtomImplementation.1.test
700      @@PerlDef:      @@PerlDef:
701        require Message::Markup::Atom;        require Message::Markup::Atom;
702        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
703                     ->get_implementation ({                     ->get_dom_implementation ({
704                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
705                       });                       });
706    
# Line 680  IFClsDef: Line 710  IFClsDef:
710      @@PerlDef:      @@PerlDef:
711        require Message::Markup::Atom;        require Message::Markup::Atom;
712        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
713                     ->get_implementation ({                     ->get_dom_implementation ({
714                         Core => '3.0',                         Core => '3.0',
715                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
716                       });                       });
# Line 691  IFClsDef: Line 721  IFClsDef:
721      @@PerlDef:      @@PerlDef:
722        require Message::Markup::Atom;        require Message::Markup::Atom;
723        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
724                     ->get_implementation ({                     ->get_dom_implementation ({
725                         XML => '3.0',                         XML => '3.0',
726                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
727                       });                       });
# Line 727  IFClsDef: Line 757  IFClsDef:
757            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
758            as if an empty string is specified.            as if an empty string is specified.
759      @@Return:      @@Return:
760        @@@Type: AtomFeedDocument        @@@Type: AtomDocument
761        @@@enDesc:        @@@enDesc:
762          The newly created Atom Feed Document.          The newly created Atom Feed Document.
763    
# Line 910  IFClsDef: Line 940  IFClsDef:
940            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
941            as if an empty string is specified.            as if an empty string is specified.
942      @@Return:      @@Return:
943        @@@Type: AtomEntryDocument        @@@Type: AtomDocument
944        @@@enDesc:        @@@enDesc:
945          The newly created Atom Entry Document.          The newly created Atom Entry Document.
946    
# Line 1453  IFClsDef: Line 1483  IFClsDef:
1483          <QUOTE::reflecting Date child element> attribute should          <QUOTE::reflecting Date child element> attribute should
1484          be provided for published and created?          be provided for published and created?
1485        }        }
1486    
1487      @CODE:
1488        @@QName: getReflectAttrNonNegativeIntegerValue
1489        @@enDesc:
1490          {P:: If a DOM attribute is defined to <DFN::reflect the
1491               non-negative integer value of the <VAR::attr-name> attribute>
1492               of the node <VAR::E>, the getter of the attribute <kwd:MUST>
1493               return the value defined by the algorithm:
1494    
1495            {OLI:: If the <VAR::E> contains an attribute node <VAR::A> whose name
1496                   is <VAR::attr-name>:
1497    
1498              = If the <A::Node.nodeValue> of the <VAR::A> is
1499                one or more sequence of digits (<CHAR::DIGIT ZERO>,
1500                <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>) optionally
1501                preceding by a <CHAR::PLUS SIGN>, then
1502                the attribute getter <kwd:MUST> return a value
1503                by interpreting the <A::Node.nodeValue> of the <VAR::A>
1504                as a decimal number.
1505    
1506            }
1507    
1508            = If a default value is explicitly defined
1509              where this algorithm is referenced, it <kwd:MUST>
1510              return the default value.
1511    
1512            = Otherwise, it <kwd:MUST> return a binding-specific
1513              default value, if it is defined by the specification
1514              of the binding, or <DOM::-1>.
1515    
1516          }
1517    
1518            {NOTE::
1519              In Atom Threading Extension <SRC::RFC 4685>,
1520              the <CHAR::PLUS SIGN> and leading <CHAR::DIGIT ZERO>s
1521              are prohibitted.
1522            }
1523        @@PerlDef:
1524          __DEEP{
1525            E: {
1526              $r = $node-><M::Element.getAttributeNS> ($namespaceURI, $localName);
1527              if (defined $r) {
1528                if ($r =~ /\A\+?([0-9]+)\z/) {
1529                  $r = 0+$1;
1530                  last E;
1531                }
1532              }
1533    
1534              $r = $defaultValue;
1535              $r = -1 unless defined $r;
1536            } # E
1537          }__;
1538    
1539      @CODE:
1540        @@QName: setReflectAttrNonNegativeIntegerValue
1541        @@enDesc:
1542          {P:: If a DOM attribute is defined to <DFN::reflect the
1543               non-negative integer value
1544               of the <VAR::attr-name> attribute> of the node <VAR::E>,
1545               the setter of the attribute <kwd:MUST> modify the node as
1546               defined by the algorithm:
1547    
1548            = If the given value is <DOM::-1> or one of binding-specific
1549              default values, if any, as defined by the specification
1550              of the binding, it <kwd:MUST>
1551              remove the <VAR::attr-name> attribute node, if any,
1552              from the list of attribute nodes of <VAR::E>.
1553    
1554            = Otherwise, it <kwd:MUST> set the <VAR::attr-name>
1555              attribute node value to a string representation
1556              of the given value as if
1557              the <M::Element.setAttributeNS> method were invoked.
1558              The string representation <kwd:MUST> be a decimal
1559              number consist of one or more sequence of digits
1560              (<CHAR::DIGIT ZERO>, <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>)
1561              <EM::without> any leading <CHAR::DIGIT ZERO>.
1562              The <CHAR::PLUS SIGN> <kwd:MUST> be omitted.
1563    
1564          }
1565    
1566            {NOTE::
1567              It might throw an exception.
1568            }
1569        @@PerlDef:
1570          __DEEP{
1571            if (defined $given and $given >= 0) {
1572              $node-><M::Element.setAttributeNS>
1573                       ($namespaceURI, $localName, 0+$given);
1574            } else {
1575              $node-><M::Element.removeAttributeNS> ($namespaceURI, $localName);
1576            }
1577          }__;
1578  ##AtomImplementation  ##AtomImplementation
1579    
1580  IFClsDef:  IFClsDef:
1581    @IFQName: AtomDocument    @IFQName: AtomDocument
1582    @ClsQName: ManakaiAtomDocument    @ClsQName: ManakaiAtomDocument
1583    
1584    @IFISA: Document    @domperl:implementedByObjectsOf: Document
1585    @ClsISA: td|ManakaiDOMDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1586    
1587    @s:rootElementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1588    
1589    @enDesc:    @enDesc:
1590      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>
# Line 1486  IFClsDef: Line 1608  IFClsDef:
1608        $test->assert_isa ($doc, <IFName::AtomDocument>);        $test->assert_isa ($doc, <IFName::AtomDocument>);
1609  ##AtomDocument  ##AtomDocument
1610    
1611  IFClsDef:  AGDef:
1612    @IFQName: AtomFeedDocument    @QName: atomCommonAttributes
1613    @ClsQName: ManakaiFeedEntryDocument    @enFN: common attributes
1614      @mv:attributeTypeGroupName: common
   @IFISA: AtomDocument  
   @ClsISA: ManakaiAtomDocument  
1615    
1616    @s:rootElementType:    @mv:refers: Atom
1617      @@@: atom|feed    
1618      @@DISCore:stopISARecursive: 1    @ATDef:
1619        @@mv:attributeTypeName: xml|base
1620    @enDesc:      @@mv:attributeValueType: atomUri
1621      The <IF::AtomFeedDocument> interface provides convenience  
1622      methods and attributes for an Atom    @ATDef:
1623      Feed Document, i.e. representation of an Atom feed.      @@mv:attributeTypeName: xml|lang
1624        @@mv:attributeValueType: atomLanguageTag
1625      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  
1626      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @mv:refers: undefinedAttributes
1627      element type, if any, is <XE::atom|feed> at least at  ##atomCommonAttributes
1628      the time of creation <kwd:MUST> also  
1629      implement the <IF::AtomFeedDocument> interface.  Other  STDef:
1630      <IF::Document> objects <kwd:MAY> also implement    @QName: atomNCName
1631      the <IF::AtomFeedDocument> interface.    @mv:datatypeEntityName: NCName
1632      #subsetOf: xsd|string
1633    @Test:    #minLength, pattern
1634      @@QName: createDocument.AtomFeedDocument.test  
1635      @@PerlDef:  STDef:
1636        my $impl;    @QName: atomMediaType
1637        __CODE{tc|createImplForTest:: $impl => $impl}__;    @mv:datatypeEntityName: MediaType
1638          #subsetOf xsd|string
1639        my $doc = $impl-><M::c|DOMImplementation.createDocument>    # pattern
1640                           (<Q::atom|>, 'feed');  
1641    STDef:
1642        $test->id ('interface');    @QName: atomLanguageTag
1643        $test->assert_isa ($doc, <IFName::AtomFeedDocument>);    @mv:datatypeEntityName: LangaugeTag
1644  ##AtomFeedDocument    #subsetOf: xsd|string
1645      #pattern
1646  IFClsDef:  
1647    @IFQName: AtomEntryDocument  STDef:
1648    @ClsQName: ManakaiAtomEntryDocument    @QName: atomUri
1649      @mv:datatypeEntityName: URI
1650      #aliasfor text
1651    STCDef:
1652      @QName: atomUriCM
1653      @mv:elementContentModelName: URI
1654      @cm: (dxm|PCDATA)*
1655    
1656    STDef:
1657      @QName: atomEmailAddress
1658      @mv:datatypeEntityName: EmailAddress
1659      #subsetOf xsd|string
1660      #pattern
1661    STCDef:
1662      @QName: atomEmailAddressCM
1663      @mv:elementContentModelName: EmailAddress
1664      @cm: (dxm|PCDATA)*
1665    
1666    @IFISA: AtomDocument  ElementTypeBinding:
1667    @ClsISA: ManakaiAtomDocument    @Name: AGDef
1668      @ElementType:
1669        dis:ResourceDef
1670      @ShadowContent:
1671        @@DISCore:resourceType: mv|AttributeTypeGroup
1672    
1673    @s:rootElementType:  ElementTypeBinding:
1674      @@@: atom|entry    @Name: ATDef
1675      @@DISCore:stopISARecursive: 1    @ElementType:
1676        dis:ResourceDef
1677      @ShadowContent:
1678        @@DISCore:resourceType: mv|AttributeType
1679    
1680    @enDesc:  ElementTypeBinding:
1681      The <IF::AtomEntryDocument> interface provides convenience    @Name: ECDef
1682      methods and attributes for an Atom    @ElementType:
1683      Entry Document, i.e. exactly one Atom entry, outside      dis:ResourceDef
1684      of the context of an Atom feed.    @ShadowContent:
1685        @@DISCore:resourceType: mv|ElementTypeClass
1686    
1687      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  ElementTypeBinding:
1688      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @Name: EMDef
1689      element type, if any, is <XE::atom|entry> at least at    @ElementType:
1690      the time of the creation <kwd:MUST> also      dis:ResourceDef
1691      implement the <IF::AtomEntryDocument> interface.  Other    @ShadowContent:
1692      <IF::Document> objects <kwd:MAY> also implement      @@DISCore:resourceType: mv|ElementTypeClassMix
     the <IF::AtomEntryDocument> interface.  
1693    
1694    @Test:  ElementTypeBinding:
1695      @@QName: createDocument.AtomEntryDocument.test    @Name: STDef
1696      @@PerlDef:    @ElementType:
1697        my $impl;      dis:ResourceDef
1698        __CODE{tc|createImplForTest:: $impl => $impl}__;    @ShadowContent:
1699            @@DISCore:resourceType: mv|XMLDTDDatatypeEntity
       my $doc = $impl-><M::c|DOMImplementation.createDocument>  
                          (<Q::atom|>, 'entry');  
1700    
1701        $test->id ('interface');  ElementTypeBinding:
1702        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);    @Name: STCDef
1703  ##AtomEntryDocument    @ElementType:
1704        dis:ResourceDef
1705      @ShadowContent:
1706        @@DISCore:resourceType: mv|ElementContentModel
1707    
1708  IFClsDef:  IFClsDef:
1709    @IFQName: AtomElement    @IFQName: AtomElement
# Line 1568  IFClsDef: Line 1712  IFClsDef:
1712    @IFISA: Element    @IFISA: Element
1713    @ClsISA: te|ManakaiDOMElement    @ClsISA: te|ManakaiDOMElement
1714        
1715    @s:elementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1716      @s:elementType: AnyAtomElement
1717    
1718    @enDesc:    @enDesc:
1719      The <IF::AtomElement> interface provides convenience      The <IF::AtomElement> interface provides convenience
# Line 1593  IFClsDef: Line 1738  IFClsDef:
1738      @@PerlDef:      @@PerlDef:
1739        for my $interface (        for my $interface (
1740          <IFName::AtomElement>,          <IFName::AtomElement>,
         <IFName::AtomElement||ManakaiDOM|ManakaiDOM>,  
1741          <IFName::Element>,          <IFName::Element>,
1742          <IFName::Node>,          <IFName::Node>,
1743          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
# Line 1619  ResourceDef: Line 1763  ResourceDef:
1763      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
1764    @ForCheck: =ManakaiDOM|all    @ForCheck: =ManakaiDOM|all
1765    
1766    ElementTypeBinding:
1767      @Name: cm
1768      @ElementType:
1769        mv:elementContentModel
1770      @ShadowContent:
1771        @@ContentType: lang|dcmodel
1772    
1773  IFClsConstructDef:  IFClsConstructDef:
1774    @IFQName: AtomTextConstruct    @IFQName: AtomTextConstruct
1775    @ClsQName: ManakaiAtomTextConstruct    @ClsQName: ManakaiAtomTextConstruct
# Line 1630  IFClsConstructDef: Line 1781  IFClsConstructDef:
1781    @IFISA: AtomElement    @IFISA: AtomElement
1782    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1783    
1784      @f:implements: AtomFeature10
1785      @mv:refers: atomCommonAttributes
1786    
1787      @cm:
1788        dxm|ANY
1789      @enImplNote:
1790        @@ddid:cm
1791        @@@:
1792          {TODO::
1793            (dxm|PCDATA | html|div)*
1794          }
1795    
1796    @enDesc:    @enDesc:
1797      The <IF::AtomTextConstruct> interface provides convenience      The <IF::AtomTextConstruct> interface provides convenience
1798      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1638  IFClsConstructDef: Line 1801  IFClsConstructDef:
1801      interface.      interface.
1802    
1803      A Text construct contains human-readable text, usually in      A Text construct contains human-readable text, usually in
1804      small quantities.  The content of Text constructs is      small quantities.  The content of a Text construct is
1805      Language-Sensitive.      Language-Sensitive.
1806    
1807    @ATTR:    @ATTR:
# Line 1760  IFClsConstructDef: Line 1923  IFClsConstructDef:
1923    @IFISA: AtomElement    @IFISA: AtomElement
1924    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1925    
1926      @f:implements: AtomFeature10
1927      @mv:refers: atomCommonAttributes
1928    
1929      @cm:
1930        (person-prop+)
1931    
1932    @enDesc:    @enDesc:
1933      The <IF::AtomPersonConstruct> interface provides convenience      The <IF::AtomPersonConstruct> interface provides convenience
1934      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1807  IFClsConstructDef: Line 1976  IFClsConstructDef:
1976      @@Name: nameElement      @@Name: nameElement
1977      @@enDesc:      @@enDesc:
1978        The <XE::atom|name> child element of the node.        The <XE::atom|name> child element of the node.
1979      @@Type: AtomElement      @@Type: AtomNameElement
1980      @@Get:      @@Get:
1981        @@@enDesc:        @@@enDesc:
1982          It <kwd:MUST> <I::return a <XE::atom|name> child element>          It <kwd:MUST> <I::return a <XE::atom|name> child element>
# Line 1892  IFClsConstructDef: Line 2061  IFClsConstructDef:
2061          }__;          }__;
2062  ##AtomPersonConstruct  ##AtomPersonConstruct
2063    
2064    ECDef:
2065      @QName: person-prop
2066      @mv:elementTypeClassName: person-prop
2067      @mv:refers: atom|name
2068      @mv:refers: atom|uri
2069      @mv:refers: atom|email
2070      @mv:refers: extensionElements
2071    
2072  IFClsConstructDef:  IFClsConstructDef:
2073    @IFQName: AtomDateConstruct    @IFQName: AtomDateConstruct
2074    @ClsQName: ManakaiAtomDateConstruct    @ClsQName: ManakaiAtomDateConstruct
# Line 1903  IFClsConstructDef: Line 2080  IFClsConstructDef:
2080    @IFISA: AtomElement    @IFISA: AtomElement
2081    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2082    
2083      @f:implements: AtomFeature10
2084      @mv:refers: atomCommonAttributes
2085    
2086      @cm:
2087        (dxm|PCDATA)*
2088      @enImplNote:
2089        @@ddid: cm
2090        @@@:
2091          {TODO::
2092            xsd|dateTime
2093          }
2094    
2095    @enDesc:    @enDesc:
2096      The <IF::AtomDateConstruct> interface provides convenience      The <IF::AtomDateConstruct> interface provides convenience
2097      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1973  IFClsConstructDef: Line 2162  IFClsConstructDef:
2162        }        }
2163  ##AtomDateConstruct  ##AtomDateConstruct
2164    
2165    ECDef:
2166      @QName: feed-prop
2167      @mv:elementTypeClassName: feed-prop
2168      @mv:refers: atom|author
2169      @mv:refers: atom|category
2170      @mv:refers: atom|contributor
2171      @mv:refers: atom|generator
2172      @mv:refers: atom|icon
2173      @mv:refers: atom|id
2174      @mv:refers: atom|link
2175      @mv:refers: atom|logo
2176      @mv:refers: atom|rights
2177      @mv:refers: atom|subtitle
2178      @mv:refers: atom|title
2179      @mv:refers: atom|updated
2180      @mv:refers: extensionElements
2181    
2182  IFClsETDef:  IFClsETDef:
2183    @IFQName: AtomFeedElement    @IFQName: AtomFeedElement
2184    @ETQName: atom|feed    @ETQName: atom|feed
# Line 1982  IFClsETDef: Line 2188  IFClsETDef:
2188    @IFISA: AtomElement    @IFISA: AtomElement
2189    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2190    
2191      @f:implements: AtomFeature10
2192      @mv:refers: atomCommonAttributes
2193    
2194      @cm:
2195        (feed-prop+, atom|entry*)
2196    
2197    @enDesc:    @enDesc:
2198      The <XE::atom|feed> element is the document element      The <XE::atom|feed> element is the document element
2199      of an Atom Feed Document.      of an Atom Feed Document.
# Line 2585  IFClsETDef: Line 2797  IFClsETDef:
2797                                  (<Q::atom|>, 'updated');                                  (<Q::atom|>, 'updated');
2798            $updatede-><AS::AtomDateConstruct.value> (scalar time);            $updatede-><AS::AtomDateConstruct.value> (scalar time);
2799            $r-><M::Node.appendChild> ($updatede);            $r-><M::Node.appendChild> ($updatede);
2800    
2801              $self-><M::Node.appendChild> ($r);
2802          }__;          }__;
2803    
2804      @@Test:      @@Test:
# Line 2651  IFClsETDef: Line 2865  IFClsETDef:
2865          $test->assert_num_not_equals          $test->assert_num_not_equals
2866                   (actual_value => $updated-><AG::AtomDateConstruct.value>,                   (actual_value => $updated-><AG::AtomDateConstruct.value>,
2867                    expected_value => 0);                    expected_value => 0);
2868    
2869            $test->id ('parent');
2870            $test->assert_equals ($ent-><AG::Node.parentNode>, $feed);
2871      @@Test:      @@Test:
2872        @@@QName: AtomFeedElement.addNewEntry.2.test        @@@QName: AtomFeedElement.addNewEntry.2.test
2873        @@@enDesc:        @@@enDesc:
# Line 2669  IFClsETDef: Line 2886  IFClsETDef:
2886                                      (<Q::xml|>, 'lang'));                                      (<Q::xml|>, 'lang'));
2887  ##AtomFeedElement  ##AtomFeedElement
2888    
2889    ECDef:
2890      @QName: entry-prop
2891      @mv:elementTypeClassName: entry-prop
2892      @mv:refers: atom|author
2893      @mv:refers: atom|category
2894      @mv:refers: atom|content
2895      @mv:refers: atom|contributor
2896      @mv:refers: atom|id
2897      @mv:refers: atom|link
2898      @mv:refers: atom|published
2899      @mv:refers: atom|rights
2900      @mv:refers: atom|source
2901      @mv:refers: atom|summary
2902      @mv:refers: atom|title
2903      @mv:refers: atom|updated
2904      @mv:refers: extensionElements
2905    
2906  IFClsETDef:  IFClsETDef:
2907    @IFQName: AtomEntryElement    @IFQName: AtomEntryElement
2908    @ETQName: atom|entry    @ETQName: atom|entry
# Line 2678  IFClsETDef: Line 2912  IFClsETDef:
2912    @IFISA: AtomElement    @IFISA: AtomElement
2913    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2914    
2915      @f:implements: AtomFeature10
2916      @mv:refers: atomCommonAttributes
2917    
2918      @cm:
2919        (entry-prop+)
2920    
2921    @enDesc:    @enDesc:
2922      The <XE::atom|entry> element represents an individual      The <XE::atom|entry> element represents an individual
2923      entry, acting as a container for metadata and data      entry, acting as a container for metadata and data
# Line 2850  IFClsETDef: Line 3090  IFClsETDef:
3090          $test->assert_num_equals (actual_value => 0+@$list, expected_value => 0);          $test->assert_num_equals (actual_value => 0+@$list, expected_value => 0);
3091    
3092          $test->id ('parent');          $test->id ('parent');
3093            my $parent;
3094          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {
3095              $parent = $_;
3096            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
3097                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));
3098            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
# Line 2870  IFClsETDef: Line 3112  IFClsETDef:
3112          my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'entry');          my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'entry');
3113    
3114          $test->id ('parent');          $test->id ('parent');
3115            my $parent;
3116          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {
3117              $parent = $_;
3118            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
3119                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));
3120            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
# Line 3198  IFClsETDef: Line 3442  IFClsETDef:
3442  ##AtomEntryElement  ##AtomEntryElement
3443    
3444  IFClsETDef:  IFClsETDef:
3445      @IFQName: AtomIdElement
3446      @ETQName: atom|id
3447      @ETRQName: atom|id
3448      @ClsQName: ManakaiAtomIdElement
3449    
3450      @IFISA: AtomElement
3451      @ClsISA: ManakaiAtomElement
3452    
3453      @f:implements: AtomFeature10
3454      @mv:refers: atomCommonAttributes
3455      
3456      @cm: atomUriCM
3457    ##AtomIdElement
3458    
3459    IFClsETDef:
3460      @IFQName: AtomIconElement
3461      @ETQName: atom|icon
3462      @ETRQName: atom|icon
3463      @ClsQName: ManakaiAtomIconElement
3464    
3465      @IFISA: AtomElement
3466      @ClsISA: ManakaiAtomElement
3467    
3468      @f:implements: AtomFeature10
3469      @mv:refers: atomCommonAttributes
3470    
3471      @cm: atomUriCM
3472    ##AtomIconElement
3473    
3474    IFClsETDef:
3475      @IFQName: AtomNameElement
3476      @ETQName: atom|name
3477      @ETRQName: atom|name
3478      @ClsQName: ManakaiAtomNameElement
3479    
3480      @IFISA: AtomElement
3481      @ClsISA: ManakaiAtomElement
3482    
3483      @f:implements: AtomFeature10
3484      # no common attribs
3485      @cm: TextCM
3486    
3487      @mv:refers: Atom
3488    ##AtomNameElement
3489    
3490    IFClsETDef:
3491      @IFQName: AtomUriElement
3492      @ETQName: atom|uri
3493      @ETRQName: atom|uri
3494      @ClsQName: ManakaiAtomUriElement
3495    
3496      @IFISA: AtomElement
3497      @ClsISA: ManakaiAtomElement
3498    
3499      @f:implements: AtomFeature10
3500      # no common attribs
3501      @cm: atomUriCM
3502    
3503      @mv:refers: Atom
3504    ##AtomUriElement
3505    
3506    IFClsETDef:
3507      @IFQName: AtomEmailElement
3508      @ETQName: atom|email
3509      @ETRQName: atom|email
3510      @ClsQName: ManakaiAtomEmailElement
3511    
3512      @IFISA: AtomElement
3513      @ClsISA: ManakaiAtomElement
3514    
3515      @f:implements: AtomFeature10
3516      # no common attribs
3517      @cm: atomEmailAddressCM
3518    
3519      @mv:refers: Atom
3520    ##AtomEmailElement
3521    
3522    IFClsETDef:
3523      @IFQName: AtomLogoElement
3524      @ETQName: atom|logo
3525      @ETRQName: atom|logo
3526      @ClsQName: ManakaiAtomLogoElement
3527    
3528      @IFISA: AtomElement
3529      @ClsISA: ManakaiAtomElement
3530    
3531      @f:implements: AtomFeature10
3532      @mv:refers: atomCommonAttributes
3533    
3534      @cm: atomUriCM
3535    ##AtomLogoElement
3536    
3537    IFClsETDef:
3538    @IFQName: AtomContentElement    @IFQName: AtomContentElement
3539    @ETQName: atom|content    @ETQName: atom|content
3540    @ETRQName: atom|content    @ETRQName: atom|content
# Line 3206  IFClsETDef: Line 3543  IFClsETDef:
3543    @IFISA: AtomElement    @IFISA: AtomElement
3544    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3545    
3546      @f:implements: AtomFeature10
3547      @mv:refers: atomCommonAttributes
3548    
3549      @cm:
3550        dxm|ANY
3551    
3552    @enDesc:    @enDesc:
3553      The <XE::atom|content> element either contains or links to      The <XE::atom|content> element either contains or links to
3554      the content of the entry.      the content of the entry.
3555    
3556    @Attr:    @ATTR:
3557      @@Name: type      @@Name: type
3558      @@enDesc:      @@enDesc:
3559        The type of the element.        The type of the element.
# Line 3275  IFClsETDef: Line 3618  IFClsETDef:
3618          $el-><AS::AtomContentElement.type> (null);          $el-><AS::AtomContentElement.type> (null);
3619          $test->assert_null ($el-><AG::AtomContentElement.type>);          $test->assert_null ($el-><AG::AtomContentElement.type>);
3620    
3621    @Attr:    @ATTR:
3622      @@Name: src      @@Name: src
3623      @@enDesc:      @@enDesc:
3624        The source of the remote content of the element.        The source of the remote content of the element.
# Line 3455  IFClsETDef: Line 3798  IFClsETDef:
3798    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3799    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3800    
3801      @f:implements: AtomFeature10
3802      @mv:refers: PersonAG
3803      @mv:elementContentModel: PersonCM
3804    
3805    @enDesc:    @enDesc:
3806      The <XE::atom|author> element is a Person construct that      The <XE::atom|author> element is a Person construct that
3807      indicates the author of the entry or feed.      indicates the author of the entry or feed.
# Line 3469  IFClsETDef: Line 3816  IFClsETDef:
3816    @IFISA: AtomElement    @IFISA: AtomElement
3817    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3818    
3819      @f:implements: AtomFeature10
3820      @mv:refers: atomCommonAttributes
3821    
3822      @cm: undefinedContent
3823    
3824    @enDesc:    @enDesc:
3825      The <XE::atom|category> element conveys information abut      The <XE::atom|category> element conveys information abut
3826      a category associated with an entry or feed.      a category associated with an entry or feed.
# Line 3583  IFClsETDef: Line 3935  IFClsETDef:
3935    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3936    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3937    
3938      @f:implements: AtomFeature10
3939      @mv:refers: PersonAG
3940      @mv:elementContentModel: PersonCM
3941    
3942    @enDesc:    @enDesc:
3943      The <XE::atom|contributor> element is a Person construct that      The <XE::atom|contributor> element is a Person construct that
3944      indicates a person or other entity who contributed to the entry      indicates a person or other entity who contributed to the entry
# Line 3598  IFClsETDef: Line 3954  IFClsETDef:
3954    @IFISA: AtomElement    @IFISA: AtomElement
3955    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3956    
3957      @f:implements: AtomFeature10
3958      @mv:refers: atomCommonAttributes
3959    
3960      @cm:
3961        (dxm|PCDATA)*
3962    
3963    @enDesc:    @enDesc:
3964      The <XE::atom|generator> element identifies the agent used      The <XE::atom|generator> element identifies the agent used
3965      to generate a feed.      to generate a feed.
# Line 3679  IFClsETDef: Line 4041  IFClsETDef:
4041    @IFISA: AtomElement    @IFISA: AtomElement
4042    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4043    
4044      @f:implements: AtomFeature10
4045      @mv:refers: atomCommonAttributes
4046    
4047      @cm: undefinedContent
4048    
4049    @enDesc:    @enDesc:
4050      The <XE::atom|link> element defines a reference from an entry      The <XE::atom|link> element defines a reference from an entry
4051      or feed to a Web resource.      or feed to a Web resource.
# Line 3810  IFClsETDef: Line 4177  IFClsETDef:
4177        of the <XA::type> attribute> of the node.        of the <XA::type> attribute> of the node.
4178      @@Type: DOMString      @@Type: DOMString
4179      @@Get:      @@Get:
4180          @@@enDesc:
4181            {P:: If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4182                 is supported, the attribute getter <kwd:MUST> return
4183                 the string <CODE::application/atom+xml> when both of the
4184                 following conditions are met:
4185    
4186               - The attribute getter would otherwise return <DOM::null>.
4187    
4188               - The <A::AtomLinkElement.rel> attribute contains
4189                 a string value of <URI^^DISCore|QName::rel|replies>.
4190    
4191            }
4192        @@@nullCase:        @@@nullCase:
4193          @@@@enDesc:          @@@@enDesc:
4194            If the algorithm returns <DOM::null>.            If the algorithm returns <DOM::null>.
# Line 3821  IFClsETDef: Line 4200  IFClsETDef:
4200            $r => $r,            $r => $r,
4201            $defaultValue => {null},            $defaultValue => {null},
4202          }__;          }__;
4203    
4204            unless (defined $r) {
4205              __DEEP{
4206                my $rel = $self-><AG::AtomLinkElement.rel>;
4207                if (defined $rel and $rel eq <Q::rel|replies>) {
4208                  $r = q<application/atom+xml>;
4209                }
4210              }__;
4211            }
4212      @@Set:      @@Set:
4213        @@@nullCase:        @@@nullCase:
4214          @@@@enDesc:          @@@@enDesc:
# Line 3834  IFClsETDef: Line 4222  IFClsETDef:
4222            $given => $given,            $given => $given,
4223          }__;          }__;
4224    
4225        @@Test:
4226          @@@QName: AtomLinkElement.type.!rel.test
4227          @@@PerlDef:
4228            my $doc;
4229            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4230    
4231            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4232    
4233            $test->id ('implied');
4234            my $type0 = $el-><AG::AtomLinkElement.type>;
4235            $test->assert_null ($type0);
4236    
4237            $test->id ('explicit');
4238            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4239            my $type1 = $el-><AG::AtomLinkElement.type>;
4240            $test->assert_equals ($type1, q<application/atom+xml>);
4241    
4242            $test->id ('different');
4243            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4244            my $type2 = $el-><AG::AtomLinkElement.type>;
4245            $test->assert_equals ($type2, q<application/xhtml+xml>);
4246        @@Test:
4247          @@@QName: AtomLinkElement.type.rel!=replies.test
4248          @@@PerlDef:
4249            my $doc;
4250            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4251    
4252            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4253    
4254            $el-><AS::AtomLinkElement.rel> (<Q::rel|alternate>);
4255    
4256            $test->id ('implied');
4257            my $type0 = $el-><AG::AtomLinkElement.type>;
4258            $test->assert_null ($type0);
4259    
4260            $test->id ('explicit');
4261            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4262            my $type1 = $el-><AG::AtomLinkElement.type>;
4263            $test->assert_equals ($type1, q<application/atom+xml>);
4264    
4265            $test->id ('different');
4266            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4267            my $type2 = $el-><AG::AtomLinkElement.type>;
4268            $test->assert_equals ($type2, q<application/xhtml+xml>);
4269        @@Test:
4270          @@@QName: AtomLinkElement.type.rel=replies.test
4271          @@@PerlDef:
4272            my $doc;
4273            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4274    
4275            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4276    
4277            $el-><AS::AtomLinkElement.rel> (<Q::rel|replies>);
4278    
4279            $test->id ('implied');
4280            my $type0 = $el-><AG::AtomLinkElement.type>;
4281            $test->assert_equals ($type0, q<application/atom+xml>);
4282    
4283            $test->id ('explicit');
4284            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4285            my $type1 = $el-><AG::AtomLinkElement.type>;
4286            $test->assert_equals ($type1, q<application/atom+xml>);
4287    
4288            $test->id ('different');
4289            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4290            my $type2 = $el-><AG::AtomLinkElement.type>;
4291            $test->assert_equals ($type2, q<application/xhtml+xml>);
4292    
4293    @ATTR:    @ATTR:
4294      @@Name: hreflang      @@Name: hreflang
4295      @@enDesc:      @@enDesc:
# Line 3943  IFClsETDef: Line 4399  IFClsETDef:
4399    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4400    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4401    
4402      @f:implements: AtomFeature10
4403      @mv:refers: DateAG
4404      @mv:elementContentModel: DateCM
4405    
4406    @enDesc:    @enDesc:
4407      The <XE::atom|published> element is a Date construct      The <XE::atom|published> element is a Date construct
4408      indicating an instant in time associated with an      indicating an instant in time associated with an
# Line 3961  IFClsETDef: Line 4421  IFClsETDef:
4421    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4422    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4423    
4424      @f:implements: AtomFeature10
4425      @mv:refers: TextAG
4426      @mv:elementContentModel: TextCM
4427    
4428    @enDesc:    @enDesc:
4429      The <XE::atom|rights> element is a Text construct      The <XE::atom|rights> element is a Text construct
4430      that conveys information about rights held in and      that conveys information about rights held in and
4431      over an entry or feed.      over an entry or feed.
4432  ##AtomRightsElement  ##AtomRightsElement
4433    
4434    ECDef:
4435      @QName: source-prop
4436      @mv:elementTypeClassName: source-prop
4437      @mv:refers: atom|author
4438      @mv:refers: atom|category
4439      @mv:refers: atom|contributor
4440      @mv:refers: atom|generator
4441      @mv:refers: atom|icon
4442      @mv:refers: atom|id
4443      @mv:refers: atom|link
4444      @mv:refers: atom|logo
4445      @mv:refers: atom|rights
4446      @mv:refers: atom|subtitle
4447      @mv:refers: atom|title
4448      @mv:refers: atom|updated
4449      @mv:refers: extensionElements
4450    
4451  IFClsETDef:  IFClsETDef:
4452    @IFQName: AtomSourceElement    @IFQName: AtomSourceElement
4453    @ETQName: atom|source    @ETQName: atom|source
# Line 3976  IFClsETDef: Line 4457  IFClsETDef:
4457    @IFISA: AtomElement    @IFISA: AtomElement
4458    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4459    
4460      @f:implements: AtomFeature10
4461      @mv:refers: atomCommonAttributes
4462    
4463      @cm:
4464        (source-prop*)
4465    
4466    @Attr:    @Attr:
4467      @@Name: authorElements      @@Name: authorElements
4468      @@enDesc:      @@enDesc:
# Line 4186  IFClsETDef: Line 4673  IFClsETDef:
4673    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4674    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4675    
4676      @f:implements: AtomFeature10
4677      @mv:refers: TextAG
4678      @mv:elementContentModel: TextCM
4679    
4680    @enDesc:    @enDesc:
4681      The <XE::atom|subtitle> element is a Text construct      The <XE::atom|subtitle> element is a Text construct
4682      that conveys a human-readable description or subtitle for a feed.      that conveys a human-readable description or subtitle for a feed.
# Line 4200  IFClsETDef: Line 4691  IFClsETDef:
4691    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4692    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4693    
4694      @f:implements: AtomFeature10
4695      @mv:refers: TextAG
4696      @mv:elementContentModel: TextCM
4697    
4698    @enDesc:    @enDesc:
4699      The <XE::atom|summary> element is a Text construct      The <XE::atom|summary> element is a Text construct
4700      that conveys a short summary, abstract, or excerpt of an entry.      that conveys a short summary, abstract, or excerpt of an entry.
# Line 4214  IFClsETDef: Line 4709  IFClsETDef:
4709    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4710    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4711    
4712      @f:implements: AtomFeature10
4713      @mv:refers: TextAG
4714      @mv:elementContentModel: TextCM
4715    
4716    @enDesc:    @enDesc:
4717      The <XE::atom|title> element is a Text construct      The <XE::atom|title> element is a Text construct
4718      that conveys a human-readable title for an entry or feed.      that conveys a human-readable title for an entry or feed.
# Line 4228  IFClsETDef: Line 4727  IFClsETDef:
4727    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4728    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4729    
4730      @f:implements: AtomFeature10
4731      @mv:refers: DateAG
4732      @mv:elementContentModel: DateCM
4733    
4734    @enDesc:    @enDesc:
4735      The <XE::atom|updated> element is a Date construct      The <XE::atom|updated> element is a Date construct
4736      indicating the most recent instant in time when an      indicating the most recent instant in time when an
# Line 4301  boolCParam: Line 4804  boolCParam:
4804  ResourceDef:  ResourceDef:
4805    @QName: CFG    @QName: CFG
4806    @AliasFor: c|DOMConfiguration    @AliasFor: c|DOMConfiguration
   @For: ManakaiDOM|DOM3  
4807    
4808  ElementTypeBinding:  ElementTypeBinding:
4809    @Name: boolCParam    @Name: boolCParam
# Line 4310  ElementTypeBinding: Line 4812  ElementTypeBinding:
4812    @ShadowContent:    @ShadowContent:
4813      @@DISCore:resourceType:      @@DISCore:resourceType:
4814        @@@@: c|DOMConfigurationParameter        @@@@: c|DOMConfigurationParameter
       @@@For: ManakaiDOM|DOM  
4815      @@DISCore:resourceType:      @@DISCore:resourceType:
4816        @@@@: DISCore|Property        @@@@: DISCore|Property
4817        @@@For: =ManakaiDOM|all      @@Type: idl|boolean
4818      @@For: ManakaiDOM|DOM3  
4819      @@For: =ManakaiDOM|all  ECDef:
4820      @@Type: idl|boolean||ManakaiDOM|all    @QName: simpleExtensionElements
4821      @mv:elementTypeClassName: simple.extra
4822      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4823    
4824    ECDef:
4825      @QName: structuredExtensionElements
4826      @mv:elementTypeClassName: structured.extra
4827      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4828    
4829    EMDef:
4830      @QName: extensionElements
4831      @mv:elementTypeClassName: extra
4832      @mv:refers: simpleExtensionElements
4833      @mv:refers: structuredExtensionElements
4834      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4835    
4836    AGDef:
4837      @QName: undefinedAttributes
4838      @mv:attributeTypeGroupName: common.extra
4839    
4840    ResourceDef:
4841      @QName: undefinedContent
4842      @mv:elementContentModelName: undefined
4843      @DISCore:resourceType: mv|ElementContentModel
4844      @cm: dxm|ANY
4845      @enImplNote:
4846        (text | anyForeignElement)*
4847    
4848    ## -- Atom Threading Extension [RFC 4685]
4849    
4850    IFClsDef:
4851      @IFQName: AtomEntryElementThread
4852      @ClsQName: ManakaiAtomEntryElementThread
4853    
4854      @ClsISA: ManakaiAtomEntryElement
4855    
4856      @f:implements: AtomThreadingFeature10
4857    
4858      @enDesc:
4859        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4860        is supported, any <IF::Element> whose element type
4861        is <XE::atom|entry> <kwd:MUST> implement the <IF::AtomEntryElementThread>
4862        interface in addition to other appropriate interfaces.
4863    
4864      @Test:
4865        @@QName: AtomEntryElementThread.1.test
4866        @@PerlDef:
4867          my $doc;
4868          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4869    
4870          my $el = $doc->create_element_ns (<Q::atom|>, 'entry');
4871    
4872          $test->id ('interface');
4873          $test->assert_isa ($el, <IFName::AtomEntryElementThread>);
4874    
4875          $test->id ('feature');
4876          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4877    
4878      @Attr:
4879        @@Name: threadInReplyToElements
4880        @@enDesc:
4881          A static list of <XE::thr|in-reply-to> child elements of the node.
4882        @@Type: StaticNodeList
4883        @@Get:
4884          @@@enDesc:
4885            It <kwd:MUST> <I::return a <XE::thr|in-reply-to> child element list>
4886            of the node.
4887          @@@PerlDef:
4888            __CODE{returnChildElementList::
4889              $node => $self,
4890              $namespaceURI => {<Q::thr|>},
4891              $localName => 'in-reply-to',
4892              $r => $r,
4893            }__;
4894    ##AtomEntryElementThread
4895    
4896    IFClsETDef:
4897      @IFQName: AtomThreadInReplyToElement
4898      @ETQName: thr|in-reply-to
4899      @ETRQName: thr|in-reply-to
4900      @ClsQName: ManakaiAtomThreadInReplyToElement
4901    
4902      @IFISA: AtomDateConstruct
4903      @ClsISA: ManakaiAtomDateConstruct
4904    
4905      @f:implements: AtomThreadingFeature10
4906      @mv:refers: atomCommonAttributes
4907    
4908      @cm: undefinedContent
4909    
4910      @enDesc:
4911        The <XE::thr|in-reply-to> element is used to indicate
4912        that an entry is a response to another resource.
4913    
4914        If the entry is a response to multiple resources,
4915        additional <XE::thr|in-reply-to> element <kwd:MAY>
4916        be used.
4917    
4918        RFC 4685 assigns no significance to the order in which
4919        multiple <XE::thr|in-reply-to> element appear within
4920        an entry.
4921    
4922      @Test:
4923        @@QName: AtomThreadInReplyToElement.1.test
4924        @@PerlDef:
4925          my $doc;
4926          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4927    
4928          my $el = $doc->create_element_ns (<Q::thr|>, 'in-reply-to');
4929    
4930          $test->id ('interface');
4931          $test->assert_isa ($el, <IFName::AtomThreadInReplyToElement>);
4932    
4933          $test->id ('feature');
4934          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4935    
4936      @ATTR:
4937        @@Name: ref
4938        @@enDesc:
4939          The <XA::ref> attribute of the element.
4940    
4941          It <kwd:MUST> <I::reflect the URI value
4942          of the <XA::ref> attribute> of the node.
4943    
4944          The <XA::ref> attribute specifies the persistent,
4945          universally unique identifier of the resource being
4946          responded to.  The value <kwd:MUST> conform to
4947          the same construction and comparison rules as the
4948          value of the <XE::atom|id> element.  Though the IRI
4949          might use a dereferenceable scheme, processors <kwd:MUST-NOT>
4950          assume that it can be dereferenced.
4951    
4952          The <XE::thr|in-reply-to> element <kwd:MUST> contain
4953          a <XA::ref> attribute identifying the resource that
4954          is being respnoded to.
4955    
4956          If the resource being responded to does not have a persistent,
4957          universally unique identifier, the publisher <kwd:MUST> assign an
4958          identifier that satisfies all the considerations in Section 4.2.6 of
4959          RFC 4287 for use as the value of the <XA::ref> attribute.
4960          In that case, if a representation of the resource can be retrieved
4961          from an IRI that can be used as a valid atom:id value, then this IRI
4962          <kwd:SHOULD> be used as the value of both the <XA::ref> and
4963          <XA::href> attributes.
4964        @@Type: DOMString
4965        @@actualType: DOMURI
4966        @@Get:
4967          @@@nullCase:
4968            @@@@enDesc:
4969              If the algorithm returns <DOM::null>.
4970          @@@PerlDef:
4971            __CODE{getReflectAttrURIValue::
4972              $node => $self,
4973              $namespaceURI => {null},
4974              $localName => 'ref',
4975              $r => $r,
4976              $defaultValue => {null},
4977            }__;
4978        @@Set:
4979          @@@nullCase:
4980            @@@@enDesc:
4981              Removes the attribute.
4982          @@@NodeReadOnlyError:
4983          @@@PerlDef:
4984            __CODE{setReflectAttrURIValue::
4985              $node => $self,
4986              $namespaceURI => {null},
4987              $localName => 'ref',
4988              $given => $given,
4989            }__;
4990            
4991      @ATTR:
4992        @@Name: source
4993        @@enDesc:
4994          The <XA::source> attribute of the element.
4995    
4996          It <kwd:MUST> <I::reflect the URI value
4997          of the <XA::source> attribute> of the node.
4998    
4999          The <XA::source> attribute <kwd:MAY> be used to specify the IRI
5000          of an Atom Feed or Entry Document containing an
5001          <XE::atom|entry> with an <XE::atom|id> value equal to the
5002          value of the <XA::ref> attribute.  The IRI specified <kwd:MUST>
5003          be dereferenceable.
5004        @@Type: DOMString
5005        @@actualType: DOMURI
5006        @@Get:
5007          @@@nullCase:
5008            @@@@enDesc:
5009              If the algorithm returns <DOM::null>.
5010          @@@PerlDef:
5011            __CODE{getReflectAttrURIValue::
5012              $node => $self,
5013              $namespaceURI => {null},
5014              $localName => 'source',
5015              $r => $r,
5016              $defaultValue => {null},
5017            }__;
5018        @@Set:
5019          @@@nullCase:
5020            @@@@enDesc:
5021              Removes the attribute.
5022          @@@NodeReadOnlyError:
5023          @@@PerlDef:
5024            __CODE{setReflectAttrURIValue::
5025              $node => $self,
5026              $namespaceURI => {null},
5027              $localName => 'source',
5028              $given => $given,
5029            }__;
5030            
5031      @ATTR:
5032        @@Name: href
5033        @@enDesc:
5034          The <XA::href> attribute of the element.
5035    
5036          It <kwd:MUST> <I::reflect the URI value
5037          of the <XA::href> attribute> of the node.
5038    
5039          The <XA::href> attribute specifies an IRI that may be used
5040          to retrieve a representation of the resource being
5041          responded to.  The IRI specified <kwd:MUST> be
5042          dereferenceable.
5043        @@Type: DOMString
5044        @@actualType: DOMURI
5045        @@Get:
5046          @@@nullCase:
5047            @@@@enDesc:
5048              If the algorithm returns <DOM::null>.
5049          @@@PerlDef:
5050            __CODE{getReflectAttrURIValue::
5051              $node => $self,
5052              $namespaceURI => {null},
5053              $localName => 'href',
5054              $r => $r,
5055              $defaultValue => {null},
5056            }__;
5057        @@Set:
5058          @@@nullCase:
5059            @@@@enDesc:
5060              Removes the attribute.
5061          @@@NodeReadOnlyError:
5062          @@@PerlDef:
5063            __CODE{setReflectAttrURIValue::
5064              $node => $self,
5065              $namespaceURI => {null},
5066              $localName => 'href',
5067              $given => $given,
5068            }__;
5069      
5070      @ATTR:
5071        @@Name: type
5072        @@enDesc:
5073          The <XA::type> attribute of the element.
5074    
5075          It <kwd:MUST> <I::reflect the string value
5076          of the <XA::type> attribute> of the node.
5077    
5078          The <XA::type> attribute <kwd:MAY> be used to provide
5079          a hint to the client about the media type of the
5080          resource identified by the <XA::href> attribute.
5081          The <XA::type> attribute is only meaningful if a
5082          corresponding <XA::href> attribute is also provided.
5083        @@Type: DOMString
5084        @@Get:
5085          @@@nullCase:
5086            @@@@enDesc:
5087              If the algorithm returns <DOM::null>.
5088          @@@PerlDef:
5089            __CODE{getReflectAttrStringValue::
5090              $node => $self,
5091              $namespaceURI => {null},
5092              $localName => 'type',
5093              $r => $r,
5094              $defaultValue => {null},
5095            }__;
5096        @@Set:
5097          @@@nullCase:
5098            @@@@enDesc:
5099              Removes the attribute.
5100          @@@NodeReadOnlyError:
5101          @@@PerlDef:
5102            __CODE{setReflectAttrStringValue::
5103              $node => $self,
5104              $namespaceURI => {null},
5105              $localName => 'type',
5106              $given => $given,
5107            }__;
5108    ##AtomThreadInReplyToElement
5109    
5110    IFClsDef:
5111      @IFQName: AtomLinkElementThread
5112      @ClsQName: ManakaiAtomLinkElementThread
5113    
5114      @ClsISA: ManakaiAtomLinkElement
5115    
5116      @f:implements: AtomThreadingFeature10
5117    
5118      @enDesc:
5119        An <XE::atom|link> element with a <XA::rel> attribute value of
5120        <XML::replies> may be used to reference a resource where responses
5121        to an entry may be found.  If the <XA::type> attribute of the
5122        <XE::atom|link> is omitted, its value is assumed to be
5123        <XML::application/atom+xml>.
5124    
5125        A <XML::replies> link appearing as a child of the <XE::atom|feed>
5126        or <XE::atom|source> element indicates that the referenced
5127        resource likely contains responses to any of that
5128        feed's entries.  A <XML::replies>
5129        link appearing as a child of an <XE::atom|entry> element
5130        indicates that the linked resource likely contains responses
5131        specific to that entry.
5132    
5133        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
5134        is supported, any <IF::Element> whose element type
5135        is <XE::atom|link> <kwd:MUST> implement the <IF::AtomLinkElementThread>
5136        interface in addition to other appropriate interfaces.
5137    
5138      @Test:
5139        @@QName: AtomLinkElementThread.1.test
5140        @@PerlDef:
5141          my $doc;
5142          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5143    
5144          my $el = $doc->create_element_ns (<Q::atom|>, 'link');
5145    
5146          $test->id ('interface');
5147          $test->assert_isa ($el, <IFName::AtomLinkElementThread>);
5148    
5149          $test->id ('feature');
5150          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5151    
5152      @ATTR:
5153        @@Name: threadCount
5154        @@enDesc:
5155          The <XA::thr|count> attribute of the element.
5156    
5157          It <kwd:MUST> <I::reflect the non-negative integer value
5158          of the <XA::thr|count> attribute> of the node.
5159    
5160          An <XE::atom|link> element using the <XML::replies>
5161          <XA::rel> attribute value <kwd:MAY> contain
5162          a <XA::thr|count> attribute whose value is a
5163          non-negative integer that provides a hint to clients
5164          as to the total number of replies contained by the
5165          linked resource.  The value is advisory and
5166          may not accurately reflect the actual number of replies.
5167        @@Type: idl|long
5168        @@Get:
5169          @@@PerlDef:
5170            __CODE{getReflectAttrNonNegativeIntegerValue::
5171              $node => $self,
5172              $namespaceURI => {<Q::thr|>},
5173              $localName => 'count',
5174              $r => $r,
5175              $defaultValue => {null},
5176            }__;
5177        @@Set:
5178          @@@NodeReadOnlyError:
5179          @@@PerlDef:
5180            __CODE{setReflectAttrNonNegativeIntegerValue::
5181              $node => $self,
5182              $namespaceURI => {<Q::thr|>},
5183              $localName => 'count',
5184              $given => $given,
5185            }__;
5186    
5187        @@Test:
5188          @@@QName: AtomLinkElementThread.threadCount.1.test
5189          @@@PerlDef:
5190            my $doc;
5191            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5192    
5193            my $link = $doc->create_element_ns (<Q::atom|>, 'link');
5194    
5195            $test->id ('default');
5196            $test->assert_num_equals
5197                     (expected_value => -1,
5198                      actual_value =>
5199                        $link-><AG::AtomLinkElementThread.threadCount>);
5200    
5201            $test->id ('zero');
5202            $link-><AS::AtomLinkElementThread.threadCount> (0);
5203            $test->assert_num_equals
5204                     (expected_value => 0,
5205                      actual_value =>
5206                        $link-><AG::AtomLinkElementThread.threadCount>);
5207            $test->id ('zero.attr');
5208            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '0');
5209    
5210            $test->id ('one');
5211            $link-><AS::AtomLinkElementThread.threadCount> (1);
5212            $test->assert_num_equals
5213                     (expected_value => 1,
5214                      actual_value =>
5215                        $link-><AG::AtomLinkElementThread.threadCount>);
5216            $test->id ('one.attr');
5217            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '1');
5218    
5219            $test->id ('10000');
5220            $link-><AS::AtomLinkElementThread.threadCount> (10000);
5221            $test->assert_num_equals
5222                     (expected_value => 10000,
5223                      actual_value =>
5224                        $link-><AG::AtomLinkElementThread.threadCount>);
5225            $test->id ('10000.attr');
5226            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'),
5227                                  '10000');
5228    
5229            $test->id ('+10000');
5230            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '+10000');
5231            $test->assert_num_equals
5232                     (expected_value => 10000,
5233                      actual_value =>
5234                        $link-><AG::AtomLinkElementThread.threadCount>);
5235    
5236            $test->id ('010000');
5237            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '010000');
5238            $test->assert_num_equals
5239                     (expected_value => 10000,
5240                      actual_value =>
5241                        $link-><AG::AtomLinkElementThread.threadCount>);
5242    
5243            $test->id ('-100');
5244            $link-><AS::AtomLinkElementThread.threadCount> (-100);
5245            $test->assert_num_equals
5246                     (expected_value => -1,
5247                      actual_value =>
5248                        $link-><AG::AtomLinkElementThread.threadCount>);
5249            $test->id ('-100.attr');
5250            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5251    
5252            $test->id ('120a');
5253            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '120a');
5254            $test->assert_num_equals
5255                     (expected_value => -1,
5256                      actual_value =>
5257                        $link-><AG::AtomLinkElementThread.threadCount>);
5258    
5259            $test->id ('-1');
5260            $link-><AS::AtomLinkElementThread.threadCount> (-1);
5261            $test->assert_num_equals
5262                     (expected_value => -1,
5263                      actual_value =>
5264                        $link-><AG::AtomLinkElementThread.threadCount>);
5265            $test->id ('-1.attr');
5266            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5267    
5268      @enImplNote:
5269        @@ddid: updated
5270        @@@:
5271          {TODO::
5272            <XA::thr|updated> attribute
5273          }
5274    ##AtomLinkElementThread
5275    
5276    enImplNote:
5277      @@ddid: total
5278      @@@:
5279        {TODO::
5280          <XE::thr|total>
5281        }
5282    
5283    enImplNote:
5284      @@ddid: threaddtd
5285      @@@:
5286        {TODO::
5287          DTD impl for threading
5288        }

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24