/[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.3 by wakaba, Sat May 13 05:40:58 2006 UTC revision 1.23 by wakaba, Sat Dec 30 12:00:41 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    @doc:    @dlp:
68      http://suika.fam.cx/~wakaba/archive/2005/7/tutorial#      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#
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 94  Namespace: Line 96  Namespace:
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:
102      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
103    @dlp:    @mv:
104      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#      http://suika.fam.cx/www/2006/05/mv/
105    @rel:    @rel:
106      http://www.iana.org/assignments/relation/      http://www.iana.org/assignments/relation/
107    @s:    @s:
# Line 114  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 135  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 157  ElementTypeBinding: Line 158  ElementTypeBinding:
158      dis:ResourceDef      dis:ResourceDef
159    @ShadowContent:    @ShadowContent:
160      @@DISCore:resourceType: DISLang|Attribute      @@DISCore:resourceType: DISLang|Attribute
161      @@ForCheck: !=ManakaiDOM|ManakaiDOM  
162    ElementTypeBinding:
163      @Name: ATTR
164      @ElementType:
165        dis:ResourceDef
166      @ShadowContent:
167        @@DISCore:resourceType:
168          @@@@: DISLang|Attribute
169          @@@ForCheck: ManakaiDOM|ForIF
170        @@DISCore:resourceType:
171          @@@@: DISLang|Attribute
172          @@@ForCheck: ManakaiDOM|ForClass
173        @@DISCore:resourceType:
174          @@@@: mv|AttributeType
175          @@@ForCheck: s|ForML
176    
177  ElementTypeBinding:  ElementTypeBinding:
178    @Name: Get    @Name: Get
# Line 222  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 231  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 249  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 261  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 270  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
284        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
285        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM        @@@ForCheck: ManakaiDOM|ForClass
286    
287    ElementTypeBinding:
288      @Name: IFClsConstructDef
289      @ElementType:
290        dis:ResourceDef
291      @ShadowContent:
292        @@DISCore:resourceType:
293          @@@@: dis|MultipleResource
294          @@@ForCheck:
295            !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML !mv|ForCM !mv|ForAG
296        @@resourceFor: ManakaiDOM|ForIF
297        @@resourceFor: ManakaiDOM|ForClass
298        @@resourceFor: mv|ForCM
299        @@resourceFor: mv|ForAG
300    
301        @@DISCore:resourceType:
302          @@@@: DISLang|Interface
303          @@@ForCheck: ManakaiDOM|ForIF
304    
305        @@DISCore:resourceType:
306          @@@@: DISLang|Class
307          @@@ForCheck: ManakaiDOM|ForClass
308    
309      @@Implement:      @@Implement:
310        @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF        @@@@: ||+||ManakaiDOM|ForIF
311        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
312        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass
313    
314        @@DISCore:resourceType:
315          @@@@: mv|AttributeTypeGroup
316          @@@ForCheck: mv|ForAG
317    
318        @@DISCore:resourceType:
319          @@@@: mv|ElementContentModel
320          @@@ForCheck: mv|ForCM
321    
     @@f:implements: AtomFeature10  
322    
323  ElementTypeBinding:  ElementTypeBinding:
324    @Name: IFQName    @Name: IFQName
# Line 311  ElementTypeBinding: Line 350  ElementTypeBinding:
350      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
351    
352  ElementTypeBinding:  ElementTypeBinding:
353      @Name: CMQName
354      @ElementType:
355        dis:QName
356      @ShadowContent:
357        @@ForCheck: mv|ForCM
358    
359    ElementTypeBinding:
360      @Name: CMName
361      @ElementType:
362        mv:elementContentModelName
363      @ShadowContent:
364        @@ForCheck: mv|ForCM
365    
366    ElementTypeBinding:
367      @Name: AGQName
368      @ElementType:
369        dis:QName
370      @ShadowContent:
371        @@ForCheck: mv|ForAG
372    
373    ElementTypeBinding:
374      @Name: AGName
375      @ElementType:
376        mv:attributeTypeGroupName
377      @ShadowContent:
378        @@ForCheck: mv|ForAG
379    
380    ElementTypeBinding:
381    @Name: IFISA    @Name: IFISA
382    @ElementType:    @ElementType:
383      dis:ISA      dis:ISA
# Line 359  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 413  ElementTypeBinding: Line 471  ElementTypeBinding:
471      @@lang:en      @@lang:en
472    
473  ElementTypeBinding:  ElementTypeBinding:
474      @Name: enLN
475      @ElementType:
476        mv:longName
477      @ShadowContent:
478        @@lang:en
479    
480    ElementTypeBinding:
481    @Name: TrueCase    @Name: TrueCase
482    @ElementType:    @ElementType:
483      dis:ResourceDef      dis:ResourceDef
# Line 422  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 434  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 444  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 471  FeatureDef: Line 535  FeatureDef:
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        @@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
550    
551    ModuleSetDef:
552      @QName: Atom
553      @enLN: Atom
554      @mv:version: 1.0
555      @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:
566      @QName: AtomFeed
567      @mv:id: feed
568      @enLN: Feed
569      @mv:contains: feed-prop
570      @mv:contains: atom|feed
571    
572    ModuleDef:
573      @QName: AtomEntry
574      @mv:id: entry
575      @enLN: Entry
576      @mv:contains: entry-prop
577      @mv:contains: atom|entry
578    
579    ModuleDef:
580      @QName: AtomProperties
581      @mv:id: props
582      @enLN: Properties
583      @mv:contains: atom|content
584      @mv:contains: atom|contributor
585      @mv:contains: atom|category
586      @mv:contains: atom|generator
587      @mv:contains: atom|link
588      @mv:contains: atom|author
589      @mv:contains: atom|published
590      @mv:contains: atom|updated
591      @mv:contains: atom|icon
592      @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
598      @mv:contains: source-prop
599      @mv:contains: atom|source
600    
601    ModuleDef:
602      @QName: AtomDatatypes
603      @mv:id: datatypes
604      @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
623      @mv:contains: TextCM
624    
625      @mv:contains: atom|name
626      @mv:contains: atom|email
627      @mv:contains: atom|uri
628      @mv:contains: PersonAG
629      @mv:contains: person-prop
630      @mv:contains: PersonCM
631    
632      @mv:contains: DateAG
633      @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:
658      @Name: ModuleSetDef
659      @ElementType:
660        dis:ResourceDef
661      @ShadowContent:
662        @@DISCore:resourceType: mv|XMLDTDModuleSet
663    
664    ElementTypeBinding:
665      @Name: ModuleDef
666      @ElementType:
667        dis:ResourceDef
668      @ShadowContent:
669        @@DISCore:resourceType: mv|XMLDTDModule
670    
671  ## -- Implementation  ## -- Implementation
672    
673  IFClsDef:  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:provides: AtomFeature10
685      @f:implements: AtomFeature10
686    
687    @Test:    @Test:
688      @@QName: AtomImplementation.interface.test      @@QName: AtomImplementation.interface.test
689      @@PerlDef:      @@PerlDef:
690        for my $interface (        for my $interface (
691          <IFName::AtomImplementation>,          <IFName::AtomImplementation>,
         <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,  
692          <IFName::c|DOMImplementation>,          <IFName::c|DOMImplementation>,
         <IFName::urigen|URIImplementation>,  
         <IFName::f|MinimumImplementation>,  
693          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
694        ) {        ) {
695          $test->id ($interface);          $test->id ($interface);
696          $test->assert_true          $test->assert_true
697                   (<Class::ManakaiAtomImplementation>->isa ($interface));                   (<Class::c|ManakaiDOMImplementation>->isa ($interface));
698        }        }
699    @Test:    @Test:
700      @@QName: ImplementationRegistry.AtomImplementation.1.test      @@QName: ImplementationRegistry.AtomImplementation.1.test
701      @@PerlDef:      @@PerlDef:
702        require Message::Markup::Atom;        require Message::Markup::Atom;
703        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
704                     ->get_implementation ({                     ->get_dom_implementation ({
705                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
706                       });                       });
707    
# Line 516  IFClsDef: Line 711  IFClsDef:
711      @@PerlDef:      @@PerlDef:
712        require Message::Markup::Atom;        require Message::Markup::Atom;
713        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
714                     ->get_implementation ({                     ->get_dom_implementation ({
715                         Core => '3.0',                         Core => '3.0',
716                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
717                       });                       });
# Line 527  IFClsDef: Line 722  IFClsDef:
722      @@PerlDef:      @@PerlDef:
723        require Message::Markup::Atom;        require Message::Markup::Atom;
724        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
725                     ->get_implementation ({                     ->get_dom_implementation ({
726                         XML => '3.0',                         XML => '3.0',
727                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
728                       });                       });
# Line 563  IFClsDef: Line 758  IFClsDef:
758            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
759            as if an empty string is specified.            as if an empty string is specified.
760      @@Return:      @@Return:
761        @@@Type: AtomFeedDocument        @@@Type: AtomDocument
762        @@@enDesc:        @@@enDesc:
763          The newly created Atom Feed Document.          The newly created Atom Feed Document.
764    
# Line 746  IFClsDef: Line 941  IFClsDef:
941            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
942            as if an empty string is specified.            as if an empty string is specified.
943      @@Return:      @@Return:
944        @@@Type: AtomEntryDocument        @@@Type: AtomDocument
945        @@@enDesc:        @@@enDesc:
946          The newly created Atom Entry Document.          The newly created Atom Entry Document.
947    
# Line 1289  IFClsDef: Line 1484  IFClsDef:
1484          <QUOTE::reflecting Date child element> attribute should          <QUOTE::reflecting Date child element> attribute should
1485          be provided for published and created?          be provided for published and created?
1486        }        }
1487    
1488      @CODE:
1489        @@QName: getReflectAttrNonNegativeIntegerValue
1490        @@enDesc:
1491          {P:: If a DOM attribute is defined to <DFN::reflect the
1492               non-negative integer value of the <VAR::attr-name> attribute>
1493               of the node <VAR::E>, the getter of the attribute <kwd:MUST>
1494               return the value defined by the algorithm:
1495    
1496            {OLI:: If the <VAR::E> contains an attribute node <VAR::A> whose name
1497                   is <VAR::attr-name>:
1498    
1499              = If the <A::Node.nodeValue> of the <VAR::A> is
1500                one or more sequence of digits (<CHAR::DIGIT ZERO>,
1501                <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>) optionally
1502                preceding by a <CHAR::PLUS SIGN>, then
1503                the attribute getter <kwd:MUST> return a value
1504                by interpreting the <A::Node.nodeValue> of the <VAR::A>
1505                as a decimal number.
1506    
1507            }
1508    
1509            = If a default value is explicitly defined
1510              where this algorithm is referenced, it <kwd:MUST>
1511              return the default value.
1512    
1513            = Otherwise, it <kwd:MUST> return a binding-specific
1514              default value, if it is defined by the specification
1515              of the binding, or <DOM::-1>.
1516    
1517          }
1518    
1519            {NOTE::
1520              In Atom Threading Extension <SRC::RFC 4685>,
1521              the <CHAR::PLUS SIGN> and leading <CHAR::DIGIT ZERO>s
1522              are prohibitted.
1523            }
1524        @@PerlDef:
1525          __DEEP{
1526            E: {
1527              $r = $node-><M::Element.getAttributeNS> ($namespaceURI, $localName);
1528              if (defined $r) {
1529                if ($r =~ /\A\+?([0-9]+)\z/) {
1530                  $r = 0+$1;
1531                  last E;
1532                }
1533              }
1534    
1535              $r = $defaultValue;
1536              $r = -1 unless defined $r;
1537            } # E
1538          }__;
1539    
1540      @CODE:
1541        @@QName: setReflectAttrNonNegativeIntegerValue
1542        @@enDesc:
1543          {P:: If a DOM attribute is defined to <DFN::reflect the
1544               non-negative integer value
1545               of the <VAR::attr-name> attribute> of the node <VAR::E>,
1546               the setter of the attribute <kwd:MUST> modify the node as
1547               defined by the algorithm:
1548    
1549            = If the given value is <DOM::-1> or one of binding-specific
1550              default values, if any, as defined by the specification
1551              of the binding, it <kwd:MUST>
1552              remove the <VAR::attr-name> attribute node, if any,
1553              from the list of attribute nodes of <VAR::E>.
1554    
1555            = Otherwise, it <kwd:MUST> set the <VAR::attr-name>
1556              attribute node value to a string representation
1557              of the given value as if
1558              the <M::Element.setAttributeNS> method were invoked.
1559              The string representation <kwd:MUST> be a decimal
1560              number consist of one or more sequence of digits
1561              (<CHAR::DIGIT ZERO>, <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>)
1562              <EM::without> any leading <CHAR::DIGIT ZERO>.
1563              The <CHAR::PLUS SIGN> <kwd:MUST> be omitted.
1564    
1565          }
1566    
1567            {NOTE::
1568              It might throw an exception.
1569            }
1570        @@PerlDef:
1571          __DEEP{
1572            if (defined $given and $given >= 0) {
1573              $node-><M::Element.setAttributeNS>
1574                       ($namespaceURI, $localName, 0+$given);
1575            } else {
1576              $node-><M::Element.removeAttributeNS> ($namespaceURI, $localName);
1577            }
1578          }__;
1579  ##AtomImplementation  ##AtomImplementation
1580    
1581  IFClsDef:  IFClsDef:
1582    @IFQName: AtomDocument    @IFQName: AtomDocument
1583    @ClsQName: ManakaiAtomDocument    @ClsQName: ManakaiAtomDocument
1584    
1585    @IFISA: Document    @domperl:implementedByObjectsOf: Document
1586    @ClsISA: td|ManakaiDOMDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1587    
1588    @s:rootElementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1589    
1590    @enDesc:    @enDesc:
1591      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>
# Line 1322  IFClsDef: Line 1609  IFClsDef:
1609        $test->assert_isa ($doc, <IFName::AtomDocument>);        $test->assert_isa ($doc, <IFName::AtomDocument>);
1610  ##AtomDocument  ##AtomDocument
1611    
1612  IFClsDef:  AGDef:
1613    @IFQName: AtomFeedDocument    @QName: atomCommonAttributes
1614    @ClsQName: ManakaiFeedEntryDocument    @enFN: common attributes
1615      @mv:attributeTypeGroupName: common
   @IFISA: AtomDocument  
   @ClsISA: ManakaiAtomDocument  
1616    
1617    @s:rootElementType:    @mv:refers: Atom
1618      @@@: atom|feed    
1619      @@DISCore:stopISARecursive: 1    @ATDef:
1620        @@mv:attributeTypeName: xml|base
1621    @enDesc:      @@mv:attributeValueType: atomUri
1622      The <IF::AtomFeedDocument> interface provides convenience  
1623      methods and attributes for an Atom    @ATDef:
1624      Feed Document, i.e. representation of an Atom feed.      @@mv:attributeTypeName: xml|lang
1625        @@mv:attributeValueType: atomLanguageTag
1626      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  
1627      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @mv:refers: undefinedAttributes
1628      element type, if any, is <XE::atom|feed> at least at  ##atomCommonAttributes
1629      the time of creation <kwd:MUST> also  
1630      implement the <IF::AtomFeedDocument> interface.  Other  STDef:
1631      <IF::Document> objects <kwd:MAY> also implement    @QName: atomNCName
1632      the <IF::AtomFeedDocument> interface.    @mv:datatypeEntityName: NCName
1633      #subsetOf: xsd|string
1634    @Test:    #minLength, pattern
1635      @@QName: createDocument.AtomFeedDocument.test  
1636      @@PerlDef:  STDef:
1637        my $impl;    @QName: atomMediaType
1638        __CODE{tc|createImplForTest:: $impl => $impl}__;    @mv:datatypeEntityName: MediaType
1639          #subsetOf xsd|string
1640        my $doc = $impl-><M::c|DOMImplementation.createDocument>    # pattern
1641                           (<Q::atom|>, 'feed');  
1642    STDef:
1643        $test->id ('interface');    @QName: atomLanguageTag
1644        $test->assert_isa ($doc, <IFName::AtomFeedDocument>);    @mv:datatypeEntityName: LangaugeTag
1645  ##AtomFeedDocument    #subsetOf: xsd|string
1646      #pattern
1647  IFClsDef:  
1648    @IFQName: AtomEntryDocument  STDef:
1649    @ClsQName: ManakaiAtomEntryDocument    @QName: atomUri
1650      @mv:datatypeEntityName: URI
1651      #aliasfor text
1652    STCDef:
1653      @QName: atomUriCM
1654      @mv:elementContentModelName: URI
1655      @cm: (dxm|PCDATA)*
1656    
1657    STDef:
1658      @QName: atomEmailAddress
1659      @mv:datatypeEntityName: EmailAddress
1660      #subsetOf xsd|string
1661      #pattern
1662    STCDef:
1663      @QName: atomEmailAddressCM
1664      @mv:elementContentModelName: EmailAddress
1665      @cm: (dxm|PCDATA)*
1666    
1667    @IFISA: AtomDocument  ElementTypeBinding:
1668    @ClsISA: ManakaiAtomDocument    @Name: AGDef
1669      @ElementType:
1670        dis:ResourceDef
1671      @ShadowContent:
1672        @@DISCore:resourceType: mv|AttributeTypeGroup
1673    
1674    @s:rootElementType:  ElementTypeBinding:
1675      @@@: atom|entry    @Name: ATDef
1676      @@DISCore:stopISARecursive: 1    @ElementType:
1677        dis:ResourceDef
1678      @ShadowContent:
1679        @@DISCore:resourceType: mv|AttributeType
1680    
1681    @enDesc:  ElementTypeBinding:
1682      The <IF::AtomEntryDocument> interface provides convenience    @Name: ECDef
1683      methods and attributes for an Atom    @ElementType:
1684      Entry Document, i.e. exactly one Atom entry, outside      dis:ResourceDef
1685      of the context of an Atom feed.    @ShadowContent:
1686        @@DISCore:resourceType: mv|ElementTypeClass
1687    
1688      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  ElementTypeBinding:
1689      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @Name: EMDef
1690      element type, if any, is <XE::atom|entry> at least at    @ElementType:
1691      the time of the creation <kwd:MUST> also      dis:ResourceDef
1692      implement the <IF::AtomEntryDocument> interface.  Other    @ShadowContent:
1693      <IF::Document> objects <kwd:MAY> also implement      @@DISCore:resourceType: mv|ElementTypeClassMix
     the <IF::AtomEntryDocument> interface.  
1694    
1695    @Test:  ElementTypeBinding:
1696      @@QName: createDocument.AtomEntryDocument.test    @Name: STDef
1697      @@PerlDef:    @ElementType:
1698        my $impl;      dis:ResourceDef
1699        __CODE{tc|createImplForTest:: $impl => $impl}__;    @ShadowContent:
1700            @@DISCore:resourceType: mv|XMLDTDDatatypeEntity
       my $doc = $impl-><M::c|DOMImplementation.createDocument>  
                          (<Q::atom|>, 'entry');  
1701    
1702        $test->id ('interface');  ElementTypeBinding:
1703        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);    @Name: STCDef
1704  ##AtomEntryDocument    @ElementType:
1705        dis:ResourceDef
1706      @ShadowContent:
1707        @@DISCore:resourceType: mv|ElementContentModel
1708    
1709  IFClsDef:  IFClsDef:
1710    @IFQName: AtomElement    @IFQName: AtomElement
# Line 1404  IFClsDef: Line 1713  IFClsDef:
1713    @IFISA: Element    @IFISA: Element
1714    @ClsISA: te|ManakaiDOMElement    @ClsISA: te|ManakaiDOMElement
1715        
1716    @s:elementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1717      @s:elementType: AnyAtomElement
1718    
1719    @enDesc:    @enDesc:
1720      The <IF::AtomElement> interface provides convenience      The <IF::AtomElement> interface provides convenience
# Line 1429  IFClsDef: Line 1739  IFClsDef:
1739      @@PerlDef:      @@PerlDef:
1740        for my $interface (        for my $interface (
1741          <IFName::AtomElement>,          <IFName::AtomElement>,
         <IFName::AtomElement||ManakaiDOM|ManakaiDOM>,  
1742          <IFName::Element>,          <IFName::Element>,
1743          <IFName::Node>,          <IFName::Node>,
1744          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
# Line 1455  ResourceDef: Line 1764  ResourceDef:
1764      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
1765    @ForCheck: =ManakaiDOM|all    @ForCheck: =ManakaiDOM|all
1766    
1767  IFClsDef:  ElementTypeBinding:
1768      @Name: cm
1769      @ElementType:
1770        mv:elementContentModel
1771      @ShadowContent:
1772        @@ContentType: lang|dcmodel
1773    
1774    IFClsConstructDef:
1775    @IFQName: AtomTextConstruct    @IFQName: AtomTextConstruct
1776    @ClsQName: ManakaiAtomTextConstruct    @ClsQName: ManakaiAtomTextConstruct
1777      @AGQName: TextAG
1778      @AGName: text
1779      @CMQName: TextCM
1780      @CMName: text
1781    
1782    @IFISA: AtomElement    @IFISA: AtomElement
1783    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1784    
1785      @f:implements: AtomFeature10
1786      @mv:refers: atomCommonAttributes
1787    
1788      @cm:
1789        dxm|ANY
1790      @enImplNote:
1791        @@ddid:cm
1792        @@@:
1793          {TODO::
1794            (dxm|PCDATA | html|div)*
1795          }
1796    
1797    @enDesc:    @enDesc:
1798      The <IF::AtomTextConstruct> interface provides convenience      The <IF::AtomTextConstruct> interface provides convenience
1799      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1470  IFClsDef: Line 1802  IFClsDef:
1802      interface.      interface.
1803    
1804      A Text construct contains human-readable text, usually in      A Text construct contains human-readable text, usually in
1805      small quantities.  The content of Text constructs is      small quantities.  The content of a Text construct is
1806      Language-Sensitive.      Language-Sensitive.
1807    
1808    @Attr:    @ATTR:
1809      @@Name: type      @@Name: type
1810      @@enDesc:      @@enDesc:
1811        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 1581  IFClsDef: Line 1913  IFClsDef:
1913          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);
1914  ##AtomTextConstruct  ##AtomTextConstruct
1915    
1916  IFClsDef:  IFClsConstructDef:
1917    @IFQName: AtomPersonConstruct    @IFQName: AtomPersonConstruct
1918    @ClsQName: ManakaiAtomPersonConstruct    @ClsQName: ManakaiAtomPersonConstruct
1919      @AGQName: PersonAG
1920      @AGName: person
1921      @CMQName: PersonCM
1922      @CMName: person
1923    
1924    @IFISA: AtomElement    @IFISA: AtomElement
1925    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1926    
1927      @f:implements: AtomFeature10
1928      @mv:refers: atomCommonAttributes
1929    
1930      @cm:
1931        (person-prop+)
1932    
1933    @enDesc:    @enDesc:
1934      The <IF::AtomPersonConstruct> interface provides convenience      The <IF::AtomPersonConstruct> interface provides convenience
1935      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1635  IFClsDef: Line 1977  IFClsDef:
1977      @@Name: nameElement      @@Name: nameElement
1978      @@enDesc:      @@enDesc:
1979        The <XE::atom|name> child element of the node.        The <XE::atom|name> child element of the node.
1980      @@Type: AtomElement      @@Type: AtomNameElement
1981      @@Get:      @@Get:
1982        @@@enDesc:        @@@enDesc:
1983          It <kwd:MUST> <I::return a <XE::atom|name> child element>          It <kwd:MUST> <I::return a <XE::atom|name> child element>
# Line 1720  IFClsDef: Line 2062  IFClsDef:
2062          }__;          }__;
2063  ##AtomPersonConstruct  ##AtomPersonConstruct
2064    
2065  IFClsDef:  ECDef:
2066      @QName: person-prop
2067      @mv:elementTypeClassName: person-prop
2068      @mv:refers: atom|name
2069      @mv:refers: atom|uri
2070      @mv:refers: atom|email
2071      @mv:refers: extensionElements
2072    
2073    IFClsConstructDef:
2074    @IFQName: AtomDateConstruct    @IFQName: AtomDateConstruct
2075    @ClsQName: ManakaiAtomDateConstruct    @ClsQName: ManakaiAtomDateConstruct
2076      @AGQName: DateAG
2077      @AGName: date
2078      @CMQName: DateCM
2079      @CMName: date
2080    
2081    @IFISA: AtomElement    @IFISA: AtomElement
2082    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2083    
2084      @f:implements: AtomFeature10
2085      @mv:refers: atomCommonAttributes
2086    
2087      @cm:
2088        (dxm|PCDATA)*
2089      @enImplNote:
2090        @@ddid: cm
2091        @@@:
2092          {TODO::
2093            xsd|dateTime
2094          }
2095    
2096    @enDesc:    @enDesc:
2097      The <IF::AtomDateConstruct> interface provides convenience      The <IF::AtomDateConstruct> interface provides convenience
2098      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1797  IFClsDef: Line 2163  IFClsDef:
2163        }        }
2164  ##AtomDateConstruct  ##AtomDateConstruct
2165    
2166    ECDef:
2167      @QName: feed-prop
2168      @mv:elementTypeClassName: feed-prop
2169      @mv:refers: atom|author
2170      @mv:refers: atom|category
2171      @mv:refers: atom|contributor
2172      @mv:refers: atom|generator
2173      @mv:refers: atom|icon
2174      @mv:refers: atom|id
2175      @mv:refers: atom|link
2176      @mv:refers: atom|logo
2177      @mv:refers: atom|rights
2178      @mv:refers: atom|subtitle
2179      @mv:refers: atom|title
2180      @mv:refers: atom|updated
2181      @mv:refers: extensionElements
2182    
2183  IFClsETDef:  IFClsETDef:
2184    @IFQName: AtomFeedElement    @IFQName: AtomFeedElement
2185    @ETQName: atom|feed    @ETQName: atom|feed
# Line 1806  IFClsETDef: Line 2189  IFClsETDef:
2189    @IFISA: AtomElement    @IFISA: AtomElement
2190    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2191    
2192      @f:implements: AtomFeature10
2193      @mv:refers: atomCommonAttributes
2194    
2195      @cm:
2196        (feed-prop+, atom|entry*)
2197    
2198    @enDesc:    @enDesc:
2199      The <XE::atom|feed> element is the document element      The <XE::atom|feed> element is the document element
2200      of an Atom Feed Document.      of an Atom Feed Document.
# Line 2409  IFClsETDef: Line 2798  IFClsETDef:
2798                                  (<Q::atom|>, 'updated');                                  (<Q::atom|>, 'updated');
2799            $updatede-><AS::AtomDateConstruct.value> (scalar time);            $updatede-><AS::AtomDateConstruct.value> (scalar time);
2800            $r-><M::Node.appendChild> ($updatede);            $r-><M::Node.appendChild> ($updatede);
2801    
2802              $self-><M::Node.appendChild> ($r);
2803          }__;          }__;
2804    
2805      @@Test:      @@Test:
# Line 2475  IFClsETDef: Line 2866  IFClsETDef:
2866          $test->assert_num_not_equals          $test->assert_num_not_equals
2867                   (actual_value => $updated-><AG::AtomDateConstruct.value>,                   (actual_value => $updated-><AG::AtomDateConstruct.value>,
2868                    expected_value => 0);                    expected_value => 0);
2869    
2870            $test->id ('parent');
2871            $test->assert_equals ($ent-><AG::Node.parentNode>, $feed);
2872      @@Test:      @@Test:
2873        @@@QName: AtomFeedElement.addNewEntry.2.test        @@@QName: AtomFeedElement.addNewEntry.2.test
2874        @@@enDesc:        @@@enDesc:
# Line 2493  IFClsETDef: Line 2887  IFClsETDef:
2887                                      (<Q::xml|>, 'lang'));                                      (<Q::xml|>, 'lang'));
2888  ##AtomFeedElement  ##AtomFeedElement
2889    
2890    ECDef:
2891      @QName: entry-prop
2892      @mv:elementTypeClassName: entry-prop
2893      @mv:refers: atom|author
2894      @mv:refers: atom|category
2895      @mv:refers: atom|content
2896      @mv:refers: atom|contributor
2897      @mv:refers: atom|id
2898      @mv:refers: atom|link
2899      @mv:refers: atom|published
2900      @mv:refers: atom|rights
2901      @mv:refers: atom|source
2902      @mv:refers: atom|summary
2903      @mv:refers: atom|title
2904      @mv:refers: atom|updated
2905      @mv:refers: extensionElements
2906    
2907  IFClsETDef:  IFClsETDef:
2908    @IFQName: AtomEntryElement    @IFQName: AtomEntryElement
2909    @ETQName: atom|entry    @ETQName: atom|entry
# Line 2502  IFClsETDef: Line 2913  IFClsETDef:
2913    @IFISA: AtomElement    @IFISA: AtomElement
2914    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2915    
2916      @f:implements: AtomFeature10
2917      @mv:refers: atomCommonAttributes
2918    
2919      @cm:
2920        (entry-prop+)
2921    
2922    @enDesc:    @enDesc:
2923      The <XE::atom|entry> element represents an individual      The <XE::atom|entry> element represents an individual
2924      entry, acting as a container for metadata and data      entry, acting as a container for metadata and data
# Line 2674  IFClsETDef: Line 3091  IFClsETDef:
3091          $test->assert_num_equals (actual_value => 0+@$list, expected_value => 0);          $test->assert_num_equals (actual_value => 0+@$list, expected_value => 0);
3092    
3093          $test->id ('parent');          $test->id ('parent');
3094            my $parent;
3095          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {
3096              $parent = $_;
3097            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
3098                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));
3099            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
# Line 2694  IFClsETDef: Line 3113  IFClsETDef:
3113          my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'entry');          my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'entry');
3114    
3115          $test->id ('parent');          $test->id ('parent');
3116            my $parent;
3117          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {          for ($doc-><M::Document.createElementNS> (<Q::atom|>, 'feed')) {
3118              $parent = $_;
3119            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
3120                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));                  ($doc-><M::Document.createElementNS> (<Q::atom|>, 'author'));
3121            $_-><M::Node.appendChild>            $_-><M::Node.appendChild>
# Line 3022  IFClsETDef: Line 3443  IFClsETDef:
3443  ##AtomEntryElement  ##AtomEntryElement
3444    
3445  IFClsETDef:  IFClsETDef:
3446      @IFQName: AtomIdElement
3447      @ETQName: atom|id
3448      @ETRQName: atom|id
3449      @ClsQName: ManakaiAtomIdElement
3450    
3451      @IFISA: AtomElement
3452      @ClsISA: ManakaiAtomElement
3453    
3454      @f:implements: AtomFeature10
3455      @mv:refers: atomCommonAttributes
3456      
3457      @cm: atomUriCM
3458    ##AtomIdElement
3459    
3460    IFClsETDef:
3461      @IFQName: AtomIconElement
3462      @ETQName: atom|icon
3463      @ETRQName: atom|icon
3464      @ClsQName: ManakaiAtomIconElement
3465    
3466      @IFISA: AtomElement
3467      @ClsISA: ManakaiAtomElement
3468    
3469      @f:implements: AtomFeature10
3470      @mv:refers: atomCommonAttributes
3471    
3472      @cm: atomUriCM
3473    ##AtomIconElement
3474    
3475    IFClsETDef:
3476      @IFQName: AtomNameElement
3477      @ETQName: atom|name
3478      @ETRQName: atom|name
3479      @ClsQName: ManakaiAtomNameElement
3480    
3481      @IFISA: AtomElement
3482      @ClsISA: ManakaiAtomElement
3483    
3484      @f:implements: AtomFeature10
3485      # no common attribs
3486      @cm: TextCM
3487    
3488      @mv:refers: Atom
3489    ##AtomNameElement
3490    
3491    IFClsETDef:
3492      @IFQName: AtomUriElement
3493      @ETQName: atom|uri
3494      @ETRQName: atom|uri
3495      @ClsQName: ManakaiAtomUriElement
3496    
3497      @IFISA: AtomElement
3498      @ClsISA: ManakaiAtomElement
3499    
3500      @f:implements: AtomFeature10
3501      # no common attribs
3502      @cm: atomUriCM
3503    
3504      @mv:refers: Atom
3505    ##AtomUriElement
3506    
3507    IFClsETDef:
3508      @IFQName: AtomEmailElement
3509      @ETQName: atom|email
3510      @ETRQName: atom|email
3511      @ClsQName: ManakaiAtomEmailElement
3512    
3513      @IFISA: AtomElement
3514      @ClsISA: ManakaiAtomElement
3515    
3516      @f:implements: AtomFeature10
3517      # no common attribs
3518      @cm: atomEmailAddressCM
3519    
3520      @mv:refers: Atom
3521    ##AtomEmailElement
3522    
3523    IFClsETDef:
3524      @IFQName: AtomLogoElement
3525      @ETQName: atom|logo
3526      @ETRQName: atom|logo
3527      @ClsQName: ManakaiAtomLogoElement
3528    
3529      @IFISA: AtomElement
3530      @ClsISA: ManakaiAtomElement
3531    
3532      @f:implements: AtomFeature10
3533      @mv:refers: atomCommonAttributes
3534    
3535      @cm: atomUriCM
3536    ##AtomLogoElement
3537    
3538    IFClsETDef:
3539    @IFQName: AtomContentElement    @IFQName: AtomContentElement
3540    @ETQName: atom|content    @ETQName: atom|content
3541      @ETRQName: atom|content
3542    @ClsQName: ManakaiAtomContentElement    @ClsQName: ManakaiAtomContentElement
3543    
3544    @IFISA: AtomElement    @IFISA: AtomElement
3545    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3546    
3547      @f:implements: AtomFeature10
3548      @mv:refers: atomCommonAttributes
3549    
3550      @cm:
3551        dxm|ANY
3552    
3553    @enDesc:    @enDesc:
3554      The <XE::atom|content> element either contains or links to      The <XE::atom|content> element either contains or links to
3555      the content of the entry.      the content of the entry.
3556    
3557    @Attr:    @ATTR:
3558      @@Name: type      @@Name: type
3559      @@enDesc:      @@enDesc:
3560        The type of the element.        The type of the element.
# Line 3098  IFClsETDef: Line 3619  IFClsETDef:
3619          $el-><AS::AtomContentElement.type> (null);          $el-><AS::AtomContentElement.type> (null);
3620          $test->assert_null ($el-><AG::AtomContentElement.type>);          $test->assert_null ($el-><AG::AtomContentElement.type>);
3621    
3622    @Attr:    @ATTR:
3623      @@Name: src      @@Name: src
3624      @@enDesc:      @@enDesc:
3625        The source of the remote content of the element.        The source of the remote content of the element.
# Line 3272  IFClsETDef: Line 3793  IFClsETDef:
3793  IFClsETDef:  IFClsETDef:
3794    @IFQName: AtomAuthorElement    @IFQName: AtomAuthorElement
3795    @ETQName: atom|author    @ETQName: atom|author
3796      @ETRQName: atom|author
3797    @ClsQName: ManakaiAtomAuthorElement    @ClsQName: ManakaiAtomAuthorElement
3798    
3799    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3800    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3801    
3802      @f:implements: AtomFeature10
3803      @mv:refers: PersonAG
3804      @mv:elementContentModel: PersonCM
3805    
3806    @enDesc:    @enDesc:
3807      The <XE::atom|author> element is a Person construct that      The <XE::atom|author> element is a Person construct that
3808      indicates the author of the entry or feed.      indicates the author of the entry or feed.
# Line 3285  IFClsETDef: Line 3811  IFClsETDef:
3811  IFClsETDef:  IFClsETDef:
3812    @IFQName: AtomCategoryElement    @IFQName: AtomCategoryElement
3813    @ETQName: atom|category    @ETQName: atom|category
3814      @ETRQName: atom|category
3815    @ClsQName: ManakaiAtomCategoryElement    @ClsQName: ManakaiAtomCategoryElement
3816    
3817    @IFISA: AtomElement    @IFISA: AtomElement
3818    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3819    
3820      @f:implements: AtomFeature10
3821      @mv:refers: atomCommonAttributes
3822    
3823      @cm: undefinedContent
3824    
3825    @enDesc:    @enDesc:
3826      The <XE::atom|category> element conveys information abut      The <XE::atom|category> element conveys information abut
3827      a category associated with an entry or feed.      a category associated with an entry or feed.
# Line 3398  IFClsETDef: Line 3930  IFClsETDef:
3930  IFClsETDef:  IFClsETDef:
3931    @IFQName: AtomContributorElement    @IFQName: AtomContributorElement
3932    @ETQName: atom|contributor    @ETQName: atom|contributor
3933      @ETRQName: atom|contributor
3934    @ClsQName: ManakaiAtomContributorElement    @ClsQName: ManakaiAtomContributorElement
3935    
3936    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3937    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3938    
3939      @f:implements: AtomFeature10
3940      @mv:refers: PersonAG
3941      @mv:elementContentModel: PersonCM
3942    
3943    @enDesc:    @enDesc:
3944      The <XE::atom|contributor> element is a Person construct that      The <XE::atom|contributor> element is a Person construct that
3945      indicates a person or other entity who contributed to the entry      indicates a person or other entity who contributed to the entry
# Line 3412  IFClsETDef: Line 3949  IFClsETDef:
3949  IFClsETDef:  IFClsETDef:
3950    @IFQName: AtomGeneratorElement    @IFQName: AtomGeneratorElement
3951    @ETQName: atom|generator    @ETQName: atom|generator
3952      @ETRQName: atom|generator
3953    @ClsQName: ManakaiAtomGeneratorElement    @ClsQName: ManakaiAtomGeneratorElement
3954    
3955    @IFISA: AtomElement    @IFISA: AtomElement
3956    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3957    
3958      @f:implements: AtomFeature10
3959      @mv:refers: atomCommonAttributes
3960    
3961      @cm:
3962        (dxm|PCDATA)*
3963    
3964    @enDesc:    @enDesc:
3965      The <XE::atom|generator> element identifies the agent used      The <XE::atom|generator> element identifies the agent used
3966      to generate a feed.      to generate a feed.
# Line 3492  IFClsETDef: Line 4036  IFClsETDef:
4036  IFClsETDef:  IFClsETDef:
4037    @IFQName: AtomLinkElement    @IFQName: AtomLinkElement
4038    @ETQName: atom|link    @ETQName: atom|link
4039      @ETRQName: atom|link
4040    @ClsQName: ManakaiAtomLinkElement    @ClsQName: ManakaiAtomLinkElement
4041    
4042    @IFISA: AtomElement    @IFISA: AtomElement
4043    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4044    
4045      @f:implements: AtomFeature10
4046      @mv:refers: atomCommonAttributes
4047    
4048      @cm: undefinedContent
4049    
4050    @enDesc:    @enDesc:
4051      The <XE::atom|link> element defines a reference from an entry      The <XE::atom|link> element defines a reference from an entry
4052      or feed to a Web resource.      or feed to a Web resource.
4053    
4054    @Attr:    @ATTR:
4055      @@Name: href      @@Name: href
4056      @@enDesc:      @@enDesc:
4057        The <XA::href> attribute of the element.        The <XA::href> attribute of the element.
# Line 3509  IFClsETDef: Line 4059  IFClsETDef:
4059        It <kwd:MUST> <I::reflect the URI value        It <kwd:MUST> <I::reflect the URI value
4060        of the <XA::href> attribute> of the node.        of the <XA::href> attribute> of the node.
4061      @@Type: DOMString      @@Type: DOMString
4062      @@Type: DOMURI      @@actualType: DOMURI
4063      @@Get:      @@Get:
4064        @@@nullCase:        @@@nullCase:
4065          @@@@enDesc:          @@@@enDesc:
# Line 3535  IFClsETDef: Line 4085  IFClsETDef:
4085            $given => $given,            $given => $given,
4086          }__;          }__;
4087    
4088    @Attr:    @ATTR:
4089      @@Name: rel      @@Name: rel
4090      @@enDesc:      @@enDesc:
4091        The <XA::rel> attribute of the element.        The <XA::rel> attribute of the element.
# Line 3545  IFClsETDef: Line 4095  IFClsETDef:
4095        a few exceptions.  The default value <kwd:MUST>        a few exceptions.  The default value <kwd:MUST>
4096        be <URI^DISCore|QName::rel|alternate>.        be <URI^DISCore|QName::rel|alternate>.
4097      @@Type: DOMString      @@Type: DOMString
4098        @@actualType: DOMURI
4099      @@Get:      @@Get:
4100        @@@enDesc:        @@@enDesc:
4101          If the algorithm returns a string that does not contain          If the algorithm returns a string that does not contain
# Line 3618  IFClsETDef: Line 4169  IFClsETDef:
4169          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,
4170                                <Q::rel|alternate>);                                <Q::rel|alternate>);
4171    
4172    @Attr:    @ATTR:
4173      @@Name: type      @@Name: type
4174      @@enDesc:      @@enDesc:
4175        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 3627  IFClsETDef: Line 4178  IFClsETDef:
4178        of the <XA::type> attribute> of the node.        of the <XA::type> attribute> of the node.
4179      @@Type: DOMString      @@Type: DOMString
4180      @@Get:      @@Get:
4181          @@@enDesc:
4182            {P:: If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4183                 is supported, the attribute getter <kwd:MUST> return
4184                 the string <CODE::application/atom+xml> when both of the
4185                 following conditions are met:
4186    
4187               - The attribute getter would otherwise return <DOM::null>.
4188    
4189               - The <A::AtomLinkElement.rel> attribute contains
4190                 a string value of <URI^^DISCore|QName::rel|replies>.
4191    
4192            }
4193        @@@nullCase:        @@@nullCase:
4194          @@@@enDesc:          @@@@enDesc:
4195            If the algorithm returns <DOM::null>.            If the algorithm returns <DOM::null>.
# Line 3638  IFClsETDef: Line 4201  IFClsETDef:
4201            $r => $r,            $r => $r,
4202            $defaultValue => {null},            $defaultValue => {null},
4203          }__;          }__;
4204    
4205            unless (defined $r) {
4206              __DEEP{
4207                my $rel = $self-><AG::AtomLinkElement.rel>;
4208                if (defined $rel and $rel eq <Q::rel|replies>) {
4209                  $r = q<application/atom+xml>;
4210                }
4211              }__;
4212            }
4213      @@Set:      @@Set:
4214        @@@nullCase:        @@@nullCase:
4215          @@@@enDesc:          @@@@enDesc:
# Line 3651  IFClsETDef: Line 4223  IFClsETDef:
4223            $given => $given,            $given => $given,
4224          }__;          }__;
4225    
4226    @Attr:      @@Test:
4227          @@@QName: AtomLinkElement.type.!rel.test
4228          @@@PerlDef:
4229            my $doc;
4230            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4231    
4232            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4233    
4234            $test->id ('implied');
4235            my $type0 = $el-><AG::AtomLinkElement.type>;
4236            $test->assert_null ($type0);
4237    
4238            $test->id ('explicit');
4239            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4240            my $type1 = $el-><AG::AtomLinkElement.type>;
4241            $test->assert_equals ($type1, q<application/atom+xml>);
4242    
4243            $test->id ('different');
4244            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4245            my $type2 = $el-><AG::AtomLinkElement.type>;
4246            $test->assert_equals ($type2, q<application/xhtml+xml>);
4247        @@Test:
4248          @@@QName: AtomLinkElement.type.rel!=replies.test
4249          @@@PerlDef:
4250            my $doc;
4251            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4252    
4253            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4254    
4255            $el-><AS::AtomLinkElement.rel> (<Q::rel|alternate>);
4256    
4257            $test->id ('implied');
4258            my $type0 = $el-><AG::AtomLinkElement.type>;
4259            $test->assert_null ($type0);
4260    
4261            $test->id ('explicit');
4262            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4263            my $type1 = $el-><AG::AtomLinkElement.type>;
4264            $test->assert_equals ($type1, q<application/atom+xml>);
4265    
4266            $test->id ('different');
4267            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4268            my $type2 = $el-><AG::AtomLinkElement.type>;
4269            $test->assert_equals ($type2, q<application/xhtml+xml>);
4270        @@Test:
4271          @@@QName: AtomLinkElement.type.rel=replies.test
4272          @@@PerlDef:
4273            my $doc;
4274            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4275    
4276            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4277    
4278            $el-><AS::AtomLinkElement.rel> (<Q::rel|replies>);
4279    
4280            $test->id ('implied');
4281            my $type0 = $el-><AG::AtomLinkElement.type>;
4282            $test->assert_equals ($type0, q<application/atom+xml>);
4283    
4284            $test->id ('explicit');
4285            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4286            my $type1 = $el-><AG::AtomLinkElement.type>;
4287            $test->assert_equals ($type1, q<application/atom+xml>);
4288    
4289            $test->id ('different');
4290            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4291            my $type2 = $el-><AG::AtomLinkElement.type>;
4292            $test->assert_equals ($type2, q<application/xhtml+xml>);
4293    
4294      @ATTR:
4295      @@Name: hreflang      @@Name: hreflang
4296      @@enDesc:      @@enDesc:
4297        The <XA::hreflang> attribute of the element.        The <XA::hreflang> attribute of the element.
# Line 3684  IFClsETDef: Line 4324  IFClsETDef:
4324            $given => $given,            $given => $given,
4325          }__;          }__;
4326    
4327    @Attr:    @ATTR:
4328      @@Name: title      @@Name: title
4329      @@enDesc:      @@enDesc:
4330        The <XA::title> attribute of the element.        The <XA::title> attribute of the element.
# Line 3717  IFClsETDef: Line 4357  IFClsETDef:
4357            $given => $given,            $given => $given,
4358          }__;          }__;
4359    
4360    @Attr:    @ATTR:
4361      @@Name: length      @@Name: length
4362      @@enDesc:      @@enDesc:
4363        The <XA::length> attribute of the element.        The <XA::length> attribute of the element.
# Line 3754  IFClsETDef: Line 4394  IFClsETDef:
4394  IFClsETDef:  IFClsETDef:
4395    @IFQName: AtomPublishedElement    @IFQName: AtomPublishedElement
4396    @ETQName: atom|published    @ETQName: atom|published
4397      @ETRQName: atom|published
4398    @ClsQName: ManakaiAtomPublishedElement    @ClsQName: ManakaiAtomPublishedElement
4399    
4400    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4401    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4402    
4403      @f:implements: AtomFeature10
4404      @mv:refers: DateAG
4405      @mv:elementContentModel: DateCM
4406    
4407    @enDesc:    @enDesc:
4408      The <XE::atom|published> element is a Date construct      The <XE::atom|published> element is a Date construct
4409      indicating an instant in time associated with an      indicating an instant in time associated with an
# Line 3771  IFClsETDef: Line 4416  IFClsETDef:
4416  IFClsETDef:  IFClsETDef:
4417    @IFQName: AtomRightsElement    @IFQName: AtomRightsElement
4418    @ETQName: atom|rights    @ETQName: atom|rights
4419      @ETRQName: atom|rights
4420    @ClsQName: ManakaiAtomRightsElement    @ClsQName: ManakaiAtomRightsElement
4421    
4422    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4423    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4424    
4425      @f:implements: AtomFeature10
4426      @mv:refers: TextAG
4427      @mv:elementContentModel: TextCM
4428    
4429    @enDesc:    @enDesc:
4430      The <XE::atom|rights> element is a Text construct      The <XE::atom|rights> element is a Text construct
4431      that conveys information about rights held in and      that conveys information about rights held in and
4432      over an entry or feed.      over an entry or feed.
4433  ##AtomRightsElement  ##AtomRightsElement
4434    
4435    ECDef:
4436      @QName: source-prop
4437      @mv:elementTypeClassName: source-prop
4438      @mv:refers: atom|author
4439      @mv:refers: atom|category
4440      @mv:refers: atom|contributor
4441      @mv:refers: atom|generator
4442      @mv:refers: atom|icon
4443      @mv:refers: atom|id
4444      @mv:refers: atom|link
4445      @mv:refers: atom|logo
4446      @mv:refers: atom|rights
4447      @mv:refers: atom|subtitle
4448      @mv:refers: atom|title
4449      @mv:refers: atom|updated
4450      @mv:refers: extensionElements
4451    
4452  IFClsETDef:  IFClsETDef:
4453    @IFQName: AtomSourceElement    @IFQName: AtomSourceElement
4454    @ETQName: atom|source    @ETQName: atom|source
4455      @ETRQName: atom|source
4456    @ClsQName: ManakaiAtomSourceElement    @ClsQName: ManakaiAtomSourceElement
4457    
4458    @IFISA: AtomElement    @IFISA: AtomElement
4459    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4460    
4461      @f:implements: AtomFeature10
4462      @mv:refers: atomCommonAttributes
4463    
4464      @cm:
4465        (source-prop*)
4466    
4467    @Attr:    @Attr:
4468      @@Name: authorElements      @@Name: authorElements
4469      @@enDesc:      @@enDesc:
# Line 3994  IFClsETDef: Line 4668  IFClsETDef:
4668  IFClsETDef:  IFClsETDef:
4669    @IFQName: AtomSubtitleElement    @IFQName: AtomSubtitleElement
4670    @ETQName: atom|subtitle    @ETQName: atom|subtitle
4671      @ETRQName: atom|subtitle
4672    @ClsQName: ManakaiAtomSubtitleElement    @ClsQName: ManakaiAtomSubtitleElement
4673    
4674    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4675    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4676    
4677      @f:implements: AtomFeature10
4678      @mv:refers: TextAG
4679      @mv:elementContentModel: TextCM
4680    
4681    @enDesc:    @enDesc:
4682      The <XE::atom|subtitle> element is a Text construct      The <XE::atom|subtitle> element is a Text construct
4683      that conveys a human-readable description or subtitle for a feed.      that conveys a human-readable description or subtitle for a feed.
# Line 4007  IFClsETDef: Line 4686  IFClsETDef:
4686  IFClsETDef:  IFClsETDef:
4687    @IFQName: AtomSummaryElement    @IFQName: AtomSummaryElement
4688    @ETQName: atom|summary    @ETQName: atom|summary
4689      @ETRQName: atom|summary
4690    @ClsQName: ManakaiAtomSummaryElement    @ClsQName: ManakaiAtomSummaryElement
4691    
4692    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4693    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4694    
4695      @f:implements: AtomFeature10
4696      @mv:refers: TextAG
4697      @mv:elementContentModel: TextCM
4698    
4699    @enDesc:    @enDesc:
4700      The <XE::atom|summary> element is a Text construct      The <XE::atom|summary> element is a Text construct
4701      that conveys a short summary, abstract, or excerpt of an entry.      that conveys a short summary, abstract, or excerpt of an entry.
# Line 4020  IFClsETDef: Line 4704  IFClsETDef:
4704  IFClsETDef:  IFClsETDef:
4705    @IFQName: AtomTitleElement    @IFQName: AtomTitleElement
4706    @ETQName: atom|title    @ETQName: atom|title
4707      @ETRQName: atom|title
4708    @ClsQName: ManakaiAtomTitleElement    @ClsQName: ManakaiAtomTitleElement
4709    
4710    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4711    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4712    
4713      @f:implements: AtomFeature10
4714      @mv:refers: TextAG
4715      @mv:elementContentModel: TextCM
4716    
4717    @enDesc:    @enDesc:
4718      The <XE::atom|title> element is a Text construct      The <XE::atom|title> element is a Text construct
4719      that conveys a human-readable title for an entry or feed.      that conveys a human-readable title for an entry or feed.
# Line 4033  IFClsETDef: Line 4722  IFClsETDef:
4722  IFClsETDef:  IFClsETDef:
4723    @IFQName: AtomUpdatedElement    @IFQName: AtomUpdatedElement
4724    @ETQName: atom|updated    @ETQName: atom|updated
4725      @ETRQName: atom|updated
4726    @ClsQName: ManakaiAtomUpdatedElement    @ClsQName: ManakaiAtomUpdatedElement
4727    
4728    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4729    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4730    
4731      @f:implements: AtomFeature10
4732      @mv:refers: DateAG
4733      @mv:elementContentModel: DateCM
4734    
4735    @enDesc:    @enDesc:
4736      The <XE::atom|updated> element is a Date construct      The <XE::atom|updated> element is a Date construct
4737      indicating the most recent instant in time when an      indicating the most recent instant in time when an
# Line 4111  boolCParam: Line 4805  boolCParam:
4805  ResourceDef:  ResourceDef:
4806    @QName: CFG    @QName: CFG
4807    @AliasFor: c|DOMConfiguration    @AliasFor: c|DOMConfiguration
   @For: ManakaiDOM|DOM3  
4808    
4809  ElementTypeBinding:  ElementTypeBinding:
4810    @Name: boolCParam    @Name: boolCParam
# Line 4120  ElementTypeBinding: Line 4813  ElementTypeBinding:
4813    @ShadowContent:    @ShadowContent:
4814      @@DISCore:resourceType:      @@DISCore:resourceType:
4815        @@@@: c|DOMConfigurationParameter        @@@@: c|DOMConfigurationParameter
       @@@For: ManakaiDOM|DOM  
4816      @@DISCore:resourceType:      @@DISCore:resourceType:
4817        @@@@: DISCore|Property        @@@@: DISCore|Property
4818        @@@For: =ManakaiDOM|all      @@Type: idl|boolean
4819      @@For: ManakaiDOM|DOM3  
4820      @@For: =ManakaiDOM|all  ECDef:
4821      @@Type: idl|boolean||ManakaiDOM|all    @QName: simpleExtensionElements
4822      @mv:elementTypeClassName: simple.extra
4823      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4824    
4825    ECDef:
4826      @QName: structuredExtensionElements
4827      @mv:elementTypeClassName: structured.extra
4828      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4829    
4830    EMDef:
4831      @QName: extensionElements
4832      @mv:elementTypeClassName: extra
4833      @mv:refers: simpleExtensionElements
4834      @mv:refers: structuredExtensionElements
4835      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4836    
4837    AGDef:
4838      @QName: undefinedAttributes
4839      @mv:attributeTypeGroupName: common.extra
4840    
4841    ResourceDef:
4842      @QName: undefinedContent
4843      @mv:elementContentModelName: undefined
4844      @DISCore:resourceType: mv|ElementContentModel
4845      @cm: dxm|ANY
4846      @enImplNote:
4847        (text | anyForeignElement)*
4848    
4849    ## -- Atom Threading Extension [RFC 4685]
4850    
4851    IFClsDef:
4852      @IFQName: AtomEntryElementThread
4853      @ClsQName: ManakaiAtomEntryElementThread
4854    
4855      @ClsISA: ManakaiAtomEntryElement
4856    
4857      @f:implements: AtomThreadingFeature10
4858    
4859      @enDesc:
4860        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4861        is supported, any <IF::Element> whose element type
4862        is <XE::atom|entry> <kwd:MUST> implement the <IF::AtomEntryElementThread>
4863        interface in addition to other appropriate interfaces.
4864    
4865      @Test:
4866        @@QName: AtomEntryElementThread.1.test
4867        @@PerlDef:
4868          my $doc;
4869          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4870    
4871          my $el = $doc->create_element_ns (<Q::atom|>, 'entry');
4872    
4873          $test->id ('interface');
4874          $test->assert_isa ($el, <IFName::AtomEntryElementThread>);
4875    
4876          $test->id ('feature');
4877          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4878    
4879      @Attr:
4880        @@Name: threadInReplyToElements
4881        @@enDesc:
4882          A static list of <XE::thr|in-reply-to> child elements of the node.
4883        @@Type: StaticNodeList
4884        @@Get:
4885          @@@enDesc:
4886            It <kwd:MUST> <I::return a <XE::thr|in-reply-to> child element list>
4887            of the node.
4888          @@@PerlDef:
4889            __CODE{returnChildElementList::
4890              $node => $self,
4891              $namespaceURI => {<Q::thr|>},
4892              $localName => 'in-reply-to',
4893              $r => $r,
4894            }__;
4895    ##AtomEntryElementThread
4896    
4897    IFClsETDef:
4898      @IFQName: AtomThreadInReplyToElement
4899      @ETQName: thr|in-reply-to
4900      @ETRQName: thr|in-reply-to
4901      @ClsQName: ManakaiAtomThreadInReplyToElement
4902    
4903      @IFISA: AtomDateConstruct
4904      @ClsISA: ManakaiAtomDateConstruct
4905    
4906      @f:implements: AtomThreadingFeature10
4907      @mv:refers: atomCommonAttributes
4908    
4909      @cm: undefinedContent
4910    
4911      @enDesc:
4912        The <XE::thr|in-reply-to> element is used to indicate
4913        that an entry is a response to another resource.
4914    
4915        If the entry is a response to multiple resources,
4916        additional <XE::thr|in-reply-to> element <kwd:MAY>
4917        be used.
4918    
4919        RFC 4685 assigns no significance to the order in which
4920        multiple <XE::thr|in-reply-to> element appear within
4921        an entry.
4922    
4923      @Test:
4924        @@QName: AtomThreadInReplyToElement.1.test
4925        @@PerlDef:
4926          my $doc;
4927          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4928    
4929          my $el = $doc->create_element_ns (<Q::thr|>, 'in-reply-to');
4930    
4931          $test->id ('interface');
4932          $test->assert_isa ($el, <IFName::AtomThreadInReplyToElement>);
4933    
4934          $test->id ('feature');
4935          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4936    
4937      @ATTR:
4938        @@Name: ref
4939        @@enDesc:
4940          The <XA::ref> attribute of the element.
4941    
4942          It <kwd:MUST> <I::reflect the URI value
4943          of the <XA::ref> attribute> of the node.
4944    
4945          The <XA::ref> attribute specifies the persistent,
4946          universally unique identifier of the resource being
4947          responded to.  The value <kwd:MUST> conform to
4948          the same construction and comparison rules as the
4949          value of the <XE::atom|id> element.  Though the IRI
4950          might use a dereferenceable scheme, processors <kwd:MUST-NOT>
4951          assume that it can be dereferenced.
4952    
4953          The <XE::thr|in-reply-to> element <kwd:MUST> contain
4954          a <XA::ref> attribute identifying the resource that
4955          is being respnoded to.
4956    
4957          If the resource being responded to does not have a persistent,
4958          universally unique identifier, the publisher <kwd:MUST> assign an
4959          identifier that satisfies all the considerations in Section 4.2.6 of
4960          RFC 4287 for use as the value of the <XA::ref> attribute.
4961          In that case, if a representation of the resource can be retrieved
4962          from an IRI that can be used as a valid atom:id value, then this IRI
4963          <kwd:SHOULD> be used as the value of both the <XA::ref> and
4964          <XA::href> attributes.
4965        @@Type: DOMString
4966        @@actualType: DOMURI
4967        @@Get:
4968          @@@nullCase:
4969            @@@@enDesc:
4970              If the algorithm returns <DOM::null>.
4971          @@@PerlDef:
4972            __CODE{getReflectAttrURIValue::
4973              $node => $self,
4974              $namespaceURI => {null},
4975              $localName => 'ref',
4976              $r => $r,
4977              $defaultValue => {null},
4978            }__;
4979        @@Set:
4980          @@@nullCase:
4981            @@@@enDesc:
4982              Removes the attribute.
4983          @@@NodeReadOnlyError:
4984          @@@PerlDef:
4985            __CODE{setReflectAttrURIValue::
4986              $node => $self,
4987              $namespaceURI => {null},
4988              $localName => 'ref',
4989              $given => $given,
4990            }__;
4991            
4992      @ATTR:
4993        @@Name: source
4994        @@enDesc:
4995          The <XA::source> attribute of the element.
4996    
4997          It <kwd:MUST> <I::reflect the URI value
4998          of the <XA::source> attribute> of the node.
4999    
5000          The <XA::source> attribute <kwd:MAY> be used to specify the IRI
5001          of an Atom Feed or Entry Document containing an
5002          <XE::atom|entry> with an <XE::atom|id> value equal to the
5003          value of the <XA::ref> attribute.  The IRI specified <kwd:MUST>
5004          be dereferenceable.
5005        @@Type: DOMString
5006        @@actualType: DOMURI
5007        @@Get:
5008          @@@nullCase:
5009            @@@@enDesc:
5010              If the algorithm returns <DOM::null>.
5011          @@@PerlDef:
5012            __CODE{getReflectAttrURIValue::
5013              $node => $self,
5014              $namespaceURI => {null},
5015              $localName => 'source',
5016              $r => $r,
5017              $defaultValue => {null},
5018            }__;
5019        @@Set:
5020          @@@nullCase:
5021            @@@@enDesc:
5022              Removes the attribute.
5023          @@@NodeReadOnlyError:
5024          @@@PerlDef:
5025            __CODE{setReflectAttrURIValue::
5026              $node => $self,
5027              $namespaceURI => {null},
5028              $localName => 'source',
5029              $given => $given,
5030            }__;
5031            
5032      @ATTR:
5033        @@Name: href
5034        @@enDesc:
5035          The <XA::href> attribute of the element.
5036    
5037          It <kwd:MUST> <I::reflect the URI value
5038          of the <XA::href> attribute> of the node.
5039    
5040          The <XA::href> attribute specifies an IRI that may be used
5041          to retrieve a representation of the resource being
5042          responded to.  The IRI specified <kwd:MUST> be
5043          dereferenceable.
5044        @@Type: DOMString
5045        @@actualType: DOMURI
5046        @@Get:
5047          @@@nullCase:
5048            @@@@enDesc:
5049              If the algorithm returns <DOM::null>.
5050          @@@PerlDef:
5051            __CODE{getReflectAttrURIValue::
5052              $node => $self,
5053              $namespaceURI => {null},
5054              $localName => 'href',
5055              $r => $r,
5056              $defaultValue => {null},
5057            }__;
5058        @@Set:
5059          @@@nullCase:
5060            @@@@enDesc:
5061              Removes the attribute.
5062          @@@NodeReadOnlyError:
5063          @@@PerlDef:
5064            __CODE{setReflectAttrURIValue::
5065              $node => $self,
5066              $namespaceURI => {null},
5067              $localName => 'href',
5068              $given => $given,
5069            }__;
5070      
5071      @ATTR:
5072        @@Name: type
5073        @@enDesc:
5074          The <XA::type> attribute of the element.
5075    
5076          It <kwd:MUST> <I::reflect the string value
5077          of the <XA::type> attribute> of the node.
5078    
5079          The <XA::type> attribute <kwd:MAY> be used to provide
5080          a hint to the client about the media type of the
5081          resource identified by the <XA::href> attribute.
5082          The <XA::type> attribute is only meaningful if a
5083          corresponding <XA::href> attribute is also provided.
5084        @@Type: DOMString
5085        @@Get:
5086          @@@nullCase:
5087            @@@@enDesc:
5088              If the algorithm returns <DOM::null>.
5089          @@@PerlDef:
5090            __CODE{getReflectAttrStringValue::
5091              $node => $self,
5092              $namespaceURI => {null},
5093              $localName => 'type',
5094              $r => $r,
5095              $defaultValue => {null},
5096            }__;
5097        @@Set:
5098          @@@nullCase:
5099            @@@@enDesc:
5100              Removes the attribute.
5101          @@@NodeReadOnlyError:
5102          @@@PerlDef:
5103            __CODE{setReflectAttrStringValue::
5104              $node => $self,
5105              $namespaceURI => {null},
5106              $localName => 'type',
5107              $given => $given,
5108            }__;
5109    ##AtomThreadInReplyToElement
5110    
5111    IFClsDef:
5112      @IFQName: AtomLinkElementThread
5113      @ClsQName: ManakaiAtomLinkElementThread
5114    
5115      @ClsISA: ManakaiAtomLinkElement
5116    
5117      @f:implements: AtomThreadingFeature10
5118    
5119      @enDesc:
5120        An <XE::atom|link> element with a <XA::rel> attribute value of
5121        <XML::replies> may be used to reference a resource where responses
5122        to an entry may be found.  If the <XA::type> attribute of the
5123        <XE::atom|link> is omitted, its value is assumed to be
5124        <XML::application/atom+xml>.
5125    
5126        A <XML::replies> link appearing as a child of the <XE::atom|feed>
5127        or <XE::atom|source> element indicates that the referenced
5128        resource likely contains responses to any of that
5129        feed's entries.  A <XML::replies>
5130        link appearing as a child of an <XE::atom|entry> element
5131        indicates that the linked resource likely contains responses
5132        specific to that entry.
5133    
5134        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
5135        is supported, any <IF::Element> whose element type
5136        is <XE::atom|link> <kwd:MUST> implement the <IF::AtomLinkElementThread>
5137        interface in addition to other appropriate interfaces.
5138    
5139      @Test:
5140        @@QName: AtomLinkElementThread.1.test
5141        @@PerlDef:
5142          my $doc;
5143          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5144    
5145          my $el = $doc->create_element_ns (<Q::atom|>, 'link');
5146    
5147          $test->id ('interface');
5148          $test->assert_isa ($el, <IFName::AtomLinkElementThread>);
5149    
5150          $test->id ('feature');
5151          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5152    
5153      @ATTR:
5154        @@Name: threadCount
5155        @@enDesc:
5156          The <XA::thr|count> attribute of the element.
5157    
5158          It <kwd:MUST> <I::reflect the non-negative integer value
5159          of the <XA::thr|count> attribute> of the node.
5160    
5161          An <XE::atom|link> element using the <XML::replies>
5162          <XA::rel> attribute value <kwd:MAY> contain
5163          a <XA::thr|count> attribute whose value is a
5164          non-negative integer that provides a hint to clients
5165          as to the total number of replies contained by the
5166          linked resource.  The value is advisory and
5167          may not accurately reflect the actual number of replies.
5168        @@Type: idl|long
5169        @@Get:
5170          @@@PerlDef:
5171            __CODE{getReflectAttrNonNegativeIntegerValue::
5172              $node => $self,
5173              $namespaceURI => {<Q::thr|>},
5174              $localName => 'count',
5175              $r => $r,
5176              $defaultValue => {null},
5177            }__;
5178        @@Set:
5179          @@@NodeReadOnlyError:
5180          @@@PerlDef:
5181            __CODE{setReflectAttrNonNegativeIntegerValue::
5182              $node => $self,
5183              $namespaceURI => {<Q::thr|>},
5184              $localName => 'count',
5185              $given => $given,
5186            }__;
5187    
5188        @@Test:
5189          @@@QName: AtomLinkElementThread.threadCount.1.test
5190          @@@PerlDef:
5191            my $doc;
5192            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5193    
5194            my $link = $doc->create_element_ns (<Q::atom|>, 'link');
5195    
5196            $test->id ('default');
5197            $test->assert_num_equals
5198                     (expected_value => -1,
5199                      actual_value =>
5200                        $link-><AG::AtomLinkElementThread.threadCount>);
5201    
5202            $test->id ('zero');
5203            $link-><AS::AtomLinkElementThread.threadCount> (0);
5204            $test->assert_num_equals
5205                     (expected_value => 0,
5206                      actual_value =>
5207                        $link-><AG::AtomLinkElementThread.threadCount>);
5208            $test->id ('zero.attr');
5209            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '0');
5210    
5211            $test->id ('one');
5212            $link-><AS::AtomLinkElementThread.threadCount> (1);
5213            $test->assert_num_equals
5214                     (expected_value => 1,
5215                      actual_value =>
5216                        $link-><AG::AtomLinkElementThread.threadCount>);
5217            $test->id ('one.attr');
5218            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '1');
5219    
5220            $test->id ('10000');
5221            $link-><AS::AtomLinkElementThread.threadCount> (10000);
5222            $test->assert_num_equals
5223                     (expected_value => 10000,
5224                      actual_value =>
5225                        $link-><AG::AtomLinkElementThread.threadCount>);
5226            $test->id ('10000.attr');
5227            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'),
5228                                  '10000');
5229    
5230            $test->id ('+10000');
5231            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '+10000');
5232            $test->assert_num_equals
5233                     (expected_value => 10000,
5234                      actual_value =>
5235                        $link-><AG::AtomLinkElementThread.threadCount>);
5236    
5237            $test->id ('010000');
5238            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '010000');
5239            $test->assert_num_equals
5240                     (expected_value => 10000,
5241                      actual_value =>
5242                        $link-><AG::AtomLinkElementThread.threadCount>);
5243    
5244            $test->id ('-100');
5245            $link-><AS::AtomLinkElementThread.threadCount> (-100);
5246            $test->assert_num_equals
5247                     (expected_value => -1,
5248                      actual_value =>
5249                        $link-><AG::AtomLinkElementThread.threadCount>);
5250            $test->id ('-100.attr');
5251            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5252    
5253            $test->id ('120a');
5254            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '120a');
5255            $test->assert_num_equals
5256                     (expected_value => -1,
5257                      actual_value =>
5258                        $link-><AG::AtomLinkElementThread.threadCount>);
5259    
5260            $test->id ('-1');
5261            $link-><AS::AtomLinkElementThread.threadCount> (-1);
5262            $test->assert_num_equals
5263                     (expected_value => -1,
5264                      actual_value =>
5265                        $link-><AG::AtomLinkElementThread.threadCount>);
5266            $test->id ('-1.attr');
5267            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5268    
5269      @enImplNote:
5270        @@ddid: updated
5271        @@@:
5272          {TODO::
5273            <XA::thr|updated> attribute
5274          }
5275    ##AtomLinkElementThread
5276    
5277    enImplNote:
5278      @@ddid: total
5279      @@@:
5280        {TODO::
5281          <XE::thr|total>
5282        }
5283    
5284    enImplNote:
5285      @@ddid: threaddtd
5286      @@@:
5287        {TODO::
5288          DTD impl for threading
5289        }

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.23

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24