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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24