/[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.1 by wakaba, Sat Apr 29 11:05:09 2006 UTC revision 1.19 by wakaba, Sat Dec 2 12:46:24 2006 UTC
# Line 55  Module: Line 55  Module:
55        @@@WithFor: ManakaiDOM|ManakaiDOM        @@@WithFor: ManakaiDOM|ManakaiDOM
56      @@Module:      @@Module:
57        @@@WithFor: ManakaiDOM|ManakaiDOMLatest        @@@WithFor: ManakaiDOM|ManakaiDOMLatest
58        @@Module:
59          @@@QName: DISlib|DISMarkup
60          @@@WithFor: ManakaiDOM|all
61    @DefaultFor: ManakaiDOM|ManakaiDOMLatest    @DefaultFor: ManakaiDOM|ManakaiDOMLatest
62    
63  Namespace:  Namespace:
# Line 64  Namespace: Line 67  Namespace:
67      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#      http://suika.fam.cx/~wakaba/archive/2004/8/18/dom-core#
68    @cfg:    @cfg:
69      http://suika.fam.cx/www/2006/dom-config/      http://suika.fam.cx/www/2006/dom-config/
70      @DISlib:
71        http://suika.fam.cx/~wakaba/archive/2004/dis/
72    @dis:    @dis:
73      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--      http://suika.fam.cx/~wakaba/archive/2004/8/18/lang#dis--
74    @doc:    @dlp:
75      http://suika.fam.cx/~wakaba/archive/2005/7/tutorial#      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#
76    @d:    @d:
77      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#      http://suika.fam.cx/~wakaba/archive/2004/dom/xdt#
78    @DOMMain:    @DOMMain:
79      http://suika.fam.cx/~wakaba/archive/2004/dom/main#      http://suika.fam.cx/~wakaba/archive/2004/dom/main#
80      @domperl:
81        http://suika.fam.cx/~wakaba/archive/2006/dom/perl/
82    @dx:    @dx:
83      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
84      @dxm:
85        http://suika.fam.cx/~wakaba/archive/2004/dis/XML#
86    @ecore:    @ecore:
87      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
88    @f:    @f:
# Line 94  Namespace: Line 103  Namespace:
103      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
104    @Markup:    @Markup:
105      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/  
106    @MDOM:    @MDOM:
107      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
108    @MDOMX:    @MDOMX:
109      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
110    @dlp:    @mv:
111      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#      http://suika.fam.cx/www/2006/05/mv/
112    @rel:    @rel:
113      http://www.iana.org/assignments/relation/      http://www.iana.org/assignments/relation/
114    @s:    @s:
# Line 114  Namespace: Line 121  Namespace:
121      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
122    @test:    @test:
123      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
124      @thr:
125        http://purl.org/syndication/thread/1.0
126    @tx:    @tx:
127      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
128    @urigen:    @urigen:
# Line 160  ElementTypeBinding: Line 169  ElementTypeBinding:
169      @@ForCheck: !=ManakaiDOM|ManakaiDOM      @@ForCheck: !=ManakaiDOM|ManakaiDOM
170    
171  ElementTypeBinding:  ElementTypeBinding:
172      @Name: ATTR
173      @ElementType:
174        dis:ResourceDef
175      @ShadowContent:
176        @@DISCore:resourceType:
177          @@@@: DISLang|Attribute
178          @@@ForCheck: ManakaiDOM|ForIF
179        @@DISCore:resourceType:
180          @@@@: DISLang|Attribute
181          @@@ForCheck: ManakaiDOM|ForClass
182        @@DISCore:resourceType:
183          @@@@: mv|AttributeType
184          @@@ForCheck: s|ForML
185        @@ForCheck: !=ManakaiDOM|ManakaiDOM
186    
187    ElementTypeBinding:
188    @Name: Get    @Name: Get
189    @ElementType:    @ElementType:
190      dis:ResourceDef      dis:ResourceDef
# Line 249  ElementTypeBinding: Line 274  ElementTypeBinding:
274        @@@@: s|ElementType        @@@@: s|ElementType
275        @@@ForCheck: s|ForML        @@@ForCheck: s|ForML
276    
     @@f:implements: AtomFeature10  
   
277  ElementTypeBinding:  ElementTypeBinding:
278    @Name: IFClsDef    @Name: IFClsDef
279    @ElementType:    @ElementType:
# Line 279  ElementTypeBinding: Line 302  ElementTypeBinding:
302        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
303        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest
304    
305      @@f:implements: AtomFeature10  ElementTypeBinding:
306      @Name: IFClsConstructDef
307      @ElementType:
308        dis:ResourceDef
309      @ShadowContent:
310        @@DISCore:resourceType:
311          @@@@: dis|MultipleResource
312          @@@ForCheck:
313            !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML !mv|ForCM !mv|ForAG
314        @@resourceFor: ManakaiDOM|ForIF
315        @@resourceFor: ManakaiDOM|ForClass
316        @@resourceFor: mv|ForCM
317        @@resourceFor: mv|ForAG
318        @@For: ManakaiDOM|ManakaiDOM
319    
320        @@DISCore:resourceType:
321          @@@@: DISLang|Interface
322          @@@ForCheck: ManakaiDOM|ForIF
323    
324        @@DISCore:resourceType:
325          @@@@: DISLang|Class
326          @@@ForCheck: ManakaiDOM|ForClass
327        @@Implement:
328          @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF
329          @@@ContentType: DISCore|TFPQNames
330          @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM
331        @@Implement:
332          @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF
333          @@@ContentType: DISCore|TFPQNames
334          @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest
335    
336        @@DISCore:resourceType:
337          @@@@: mv|AttributeTypeGroup
338          @@@ForCheck: mv|ForAG
339    
340        @@DISCore:resourceType:
341          @@@@: mv|ElementContentModel
342          @@@ForCheck: mv|ForCM
343    
344    
345  ElementTypeBinding:  ElementTypeBinding:
346    @Name: IFQName    @Name: IFQName
# Line 311  ElementTypeBinding: Line 372  ElementTypeBinding:
372      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
373    
374  ElementTypeBinding:  ElementTypeBinding:
375      @Name: CMQName
376      @ElementType:
377        dis:QName
378      @ShadowContent:
379        @@ForCheck: mv|ForCM
380    
381    ElementTypeBinding:
382      @Name: CMName
383      @ElementType:
384        mv:elementContentModelName
385      @ShadowContent:
386        @@ForCheck: mv|ForCM
387    
388    ElementTypeBinding:
389      @Name: AGQName
390      @ElementType:
391        dis:QName
392      @ShadowContent:
393        @@ForCheck: mv|ForAG
394    
395    ElementTypeBinding:
396      @Name: AGName
397      @ElementType:
398        mv:attributeTypeGroupName
399      @ShadowContent:
400        @@ForCheck: mv|ForAG
401    
402    ElementTypeBinding:
403    @Name: IFISA    @Name: IFISA
404    @ElementType:    @ElementType:
405      dis:ISA      dis:ISA
# Line 413  ElementTypeBinding: Line 502  ElementTypeBinding:
502      @@lang:en      @@lang:en
503    
504  ElementTypeBinding:  ElementTypeBinding:
505      @Name: enLN
506      @ElementType:
507        mv:longName
508      @ShadowContent:
509        @@lang:en
510    
511    ElementTypeBinding:
512    @Name: TrueCase    @Name: TrueCase
513    @ElementType:    @ElementType:
514      dis:ResourceDef      dis:ResourceDef
# Line 471  FeatureDef: Line 567  FeatureDef:
567      @@enDesc:      @@enDesc:
568        The Atom DOM, version 1.0.        The Atom DOM, version 1.0.
569    
570    FeatureDef:
571      @featureQName: fe|AtomThreading
572      @QName: AtomThreadingFeature
573      @FeatureVerDef:
574        @@QName: AtomThreadingFeature10
575        @@Version: 1.0
576        @@f:instanceOf: AtomThreadingFeature
577        @@f:requires: fe|AtomFeature10
578        @@enDesc:
579          The Atom Threading Extension DOM, version 1.0.
580    
581    ## -- Modules
582    
583    ModuleSetDef:
584      @QName: Atom
585      @enLN: Atom
586      @mv:version: 1.0
587      @mv:contains: AtomDatatypes
588      @mv:contains: AtomProperties
589      @mv:contains: AtomEntry
590      @mv:contains: AtomFeed
591      @mv:contains: AtomQName
592    
593      @mv:targetNamespace: atom|
594      @mv:defaultNamespacePrefix: atom
595      @mv:systemIdentifierBaseURI: \
596    
597    ModuleDef:
598      @QName: AtomFeed
599      @mv:id: feed
600      @enLN: Feed
601      @mv:contains: feed-prop
602      @mv:contains: atom|feed
603    
604    ModuleDef:
605      @QName: AtomEntry
606      @mv:id: entry
607      @enLN: Entry
608      @mv:contains: entry-prop
609      @mv:contains: atom|entry
610    
611    ModuleDef:
612      @QName: AtomProperties
613      @mv:id: props
614      @enLN: Properties
615      @mv:contains: atom|content
616      @mv:contains: atom|contributor
617      @mv:contains: atom|category
618      @mv:contains: atom|generator
619      @mv:contains: atom|link
620      @mv:contains: atom|author
621      @mv:contains: atom|published
622      @mv:contains: atom|updated
623      @mv:contains: atom|icon
624      @mv:contains: atom|id
625      @mv:contains: atom|logo
626      @mv:contains: atom|rights
627      @mv:contains: atom|subtitle
628      @mv:contains: atom|summary
629      @mv:contains: atom|title
630      @mv:contains: source-prop
631      @mv:contains: atom|source
632    
633    ModuleDef:
634      @QName: AtomDatatypes
635      @mv:id: datatypes
636      @enLN: Datatypes
637    
638      @mv:contains: atomNCName
639      @mv:contains: atomMediaType
640      @mv:contains: atomLanguageTag
641      @mv:contains: atomUri
642      @mv:contains: atomUriCM
643      @mv:contains: atomEmailAddress
644      @mv:contains: atomEmailAddressCM
645    
646      @mv:contains: undefinedAttributes
647      @mv:contains: undefinedContent
648      @mv:contains: atomCommonAttributes
649    
650      @mv:contains: simpleExtensionElements
651      @mv:contains: structuredExtensionElements
652      @mv:contains: extensionElements
653    
654      @mv:contains: TextAG
655      @mv:contains: TextCM
656    
657      @mv:contains: atom|name
658      @mv:contains: atom|email
659      @mv:contains: atom|uri
660      @mv:contains: PersonAG
661      @mv:contains: person-prop
662      @mv:contains: PersonCM
663    
664      @mv:contains: DateAG
665      @mv:contains: DateCM
666    
667    ResourceDef:
668      @QName: AtomQName
669      @enLN: Qualified Names
670      @mv:id: qname
671      @For: =ManakaiDOM|ManakaiDOMLatest
672      @DISCore:resourceType: mv|XMLDTDQNameModule
673    
674      @mv:contains: Atom
675    
676    ResourceDef:
677      @QName: Atom10
678      @enLN: Atom 1.0
679      @mv:id: atom10
680      @For: =ManakaiDOM|ManakaiDOMLatest
681      @DISCore:resourceType: mv|XMLDTDDriver
682    
683      @mv:refers: Atom
684    
685      @mv:refers: AtomQName
686      @mv:refers: AtomDatatypes
687      @mv:refers: AtomProperties
688      @mv:refers: AtomEntry
689      @mv:refers: AtomFeed
690    
691    ElementTypeBinding:
692      @Name: ModuleSetDef
693      @ElementType:
694        dis:ResourceDef
695      @ShadowContent:
696        @@DISCore:resourceType: mv|XMLDTDModuleSet
697        @@For: =ManakaiDOM|ManakaiDOMLatest
698    
699    ElementTypeBinding:
700      @Name: ModuleDef
701      @ElementType:
702        dis:ResourceDef
703      @ShadowContent:
704        @@DISCore:resourceType: mv|XMLDTDModule
705        @@For: =ManakaiDOM|ManakaiDOMLatest
706    
707  ## -- Implementation  ## -- Implementation
708    
709  IFClsDef:  IFClsDef:
710    @IFQName: AtomImplementation    @IFQName: AtomImplementation
711    @ClsQName: ManakaiAtomImplementation    @ClsQName: ManakaiAtomImplementation
712    
713    @IFISA: c|DOMImplementation    @domperl:implementedByObjectsOf: c|DOMImplementation
714    @ClsISA: c|ManakaiDOMImplementation    @domperl:classImplementedByObjectsOf: c|ManakaiDOMImplementation
715    
716    @enDesc:    @enDesc:
717      The <IF::AtomImplementation> interface provides convenience      The <IF::AtomImplementation> interface provides convenience
718      methods to create Atom documents.      methods to create Atom documents.
719    
720    @f:provides: AtomFeature10    @f:provides: AtomFeature10
721      @f:implements: AtomFeature10
722    
723    @Test:    @Test:
724      @@QName: AtomImplementation.interface.test      @@QName: AtomImplementation.interface.test
# Line 493  IFClsDef: Line 727  IFClsDef:
727          <IFName::AtomImplementation>,          <IFName::AtomImplementation>,
728          <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,          <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,
729          <IFName::c|DOMImplementation>,          <IFName::c|DOMImplementation>,
         <IFName::urigen|URIImplementation>,  
         <IFName::f|MinimumImplementation>,  
730          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
731        ) {        ) {
732          $test->id ($interface);          $test->id ($interface);
733          $test->assert_true          $test->assert_true
734                   (<Class::ManakaiAtomImplementation>->isa ($interface));                   (<Class::c|ManakaiDOMImplementation>->isa ($interface));
735        }        }
736    @Test:    @Test:
737      @@QName: ImplementationRegistry.AtomImplementation.1.test      @@QName: ImplementationRegistry.AtomImplementation.1.test
738      @@PerlDef:      @@PerlDef:
739        require Message::Markup::Atom;        require Message::Markup::Atom;
740        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
741                     ->get_implementation ({                     ->get_dom_implementation ({
742                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
743                       });                       });
744    
# Line 516  IFClsDef: Line 748  IFClsDef:
748      @@PerlDef:      @@PerlDef:
749        require Message::Markup::Atom;        require Message::Markup::Atom;
750        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
751                     ->get_implementation ({                     ->get_dom_implementation ({
752                         Core => '3.0',                         Core => '3.0',
753                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
754                       });                       });
# Line 527  IFClsDef: Line 759  IFClsDef:
759      @@PerlDef:      @@PerlDef:
760        require Message::Markup::Atom;        require Message::Markup::Atom;
761        my $impl = $Message::DOM::ImplementationRegistry        my $impl = $Message::DOM::ImplementationRegistry
762                     ->get_implementation ({                     ->get_dom_implementation ({
763                         XML => '3.0',                         XML => '3.0',
764                         <Q::fe|Atom> => '1.0',                         <Q::fe|Atom> => '1.0',
765                       });                       });
# Line 563  IFClsDef: Line 795  IFClsDef:
795            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
796            as if an empty string is specified.            as if an empty string is specified.
797      @@Return:      @@Return:
798        @@@Type: AtomFeedDocument        @@@Type: AtomDocument
799        @@@enDesc:        @@@enDesc:
800          The newly created Atom Feed Document.          The newly created Atom Feed Document.
801    
# Line 746  IFClsDef: Line 978  IFClsDef:
978            The implementation <kwd:MUST> treate <DOM::null>            The implementation <kwd:MUST> treate <DOM::null>
979            as if an empty string is specified.            as if an empty string is specified.
980      @@Return:      @@Return:
981        @@@Type: AtomEntryDocument        @@@Type: AtomDocument
982        @@@enDesc:        @@@enDesc:
983          The newly created Atom Entry Document.          The newly created Atom Entry Document.
984    
# Line 1289  IFClsDef: Line 1521  IFClsDef:
1521          <QUOTE::reflecting Date child element> attribute should          <QUOTE::reflecting Date child element> attribute should
1522          be provided for published and created?          be provided for published and created?
1523        }        }
1524    
1525      @CODE:
1526        @@QName: getReflectAttrNonNegativeIntegerValue
1527        @@enDesc:
1528          {P:: If a DOM attribute is defined to <DFN::reflect the
1529               non-negative integer value of the <VAR::attr-name> attribute>
1530               of the node <VAR::E>, the getter of the attribute <kwd:MUST>
1531               return the value defined by the algorithm:
1532    
1533            {OLI:: If the <VAR::E> contains an attribute node <VAR::A> whose name
1534                   is <VAR::attr-name>:
1535    
1536              = If the <A::Node.nodeValue> of the <VAR::A> is
1537                one or more sequence of digits (<CHAR::DIGIT ZERO>,
1538                <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>) optionally
1539                preceding by a <CHAR::PLUS SIGN>, then
1540                the attribute getter <kwd:MUST> return a value
1541                by interpreting the <A::Node.nodeValue> of the <VAR::A>
1542                as a decimal number.
1543    
1544            }
1545    
1546            = If a default value is explicitly defined
1547              where this algorithm is referenced, it <kwd:MUST>
1548              return the default value.
1549    
1550            = Otherwise, it <kwd:MUST> return a binding-specific
1551              default value, if it is defined by the specification
1552              of the binding, or <DOM::-1>.
1553    
1554          }
1555    
1556            {NOTE::
1557              In Atom Threading Extension <SRC::RFC 4685>,
1558              the <CHAR::PLUS SIGN> and leading <CHAR::DIGIT ZERO>s
1559              are prohibitted.
1560            }
1561        @@PerlDef:
1562          __DEEP{
1563            E: {
1564              $r = $node-><M::Element.getAttributeNS> ($namespaceURI, $localName);
1565              if (defined $r) {
1566                if ($r =~ /\A\+?([0-9]+)\z/) {
1567                  $r = 0+$1;
1568                  last E;
1569                }
1570              }
1571    
1572              $r = $defaultValue;
1573              $r = -1 unless defined $r;
1574            } # E
1575          }__;
1576    
1577      @CODE:
1578        @@QName: setReflectAttrNonNegativeIntegerValue
1579        @@enDesc:
1580          {P:: If a DOM attribute is defined to <DFN::reflect the
1581               non-negative integer value
1582               of the <VAR::attr-name> attribute> of the node <VAR::E>,
1583               the setter of the attribute <kwd:MUST> modify the node as
1584               defined by the algorithm:
1585    
1586            = If the given value is <DOM::-1> or one of binding-specific
1587              default values, if any, as defined by the specification
1588              of the binding, it <kwd:MUST>
1589              remove the <VAR::attr-name> attribute node, if any,
1590              from the list of attribute nodes of <VAR::E>.
1591    
1592            = Otherwise, it <kwd:MUST> set the <VAR::attr-name>
1593              attribute node value to a string representation
1594              of the given value as if
1595              the <M::Element.setAttributeNS> method were invoked.
1596              The string representation <kwd:MUST> be a decimal
1597              number consist of one or more sequence of digits
1598              (<CHAR::DIGIT ZERO>, <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>)
1599              <EM::without> any leading <CHAR::DIGIT ZERO>.
1600              The <CHAR::PLUS SIGN> <kwd:MUST> be omitted.
1601    
1602          }
1603    
1604            {NOTE::
1605              It might throw an exception.
1606            }
1607        @@PerlDef:
1608          __DEEP{
1609            if (defined $given and $given >= 0) {
1610              $node-><M::Element.setAttributeNS>
1611                       ($namespaceURI, $localName, 0+$given);
1612            } else {
1613              $node-><M::Element.removeAttributeNS> ($namespaceURI, $localName);
1614            }
1615          }__;
1616  ##AtomImplementation  ##AtomImplementation
1617    
1618  IFClsDef:  IFClsDef:
1619    @IFQName: AtomDocument    @IFQName: AtomDocument
1620    @ClsQName: ManakaiAtomDocument    @ClsQName: ManakaiAtomDocument
1621    
1622    @IFISA: Document    @domperl:implementedByObjectsOf: Document
1623    @ClsISA: td|ManakaiDOMDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1624    
1625    @s:rootElementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1626    
1627    @enDesc:    @enDesc:
1628      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>
# Line 1322  IFClsDef: Line 1646  IFClsDef:
1646        $test->assert_isa ($doc, <IFName::AtomDocument>);        $test->assert_isa ($doc, <IFName::AtomDocument>);
1647  ##AtomDocument  ##AtomDocument
1648    
1649  IFClsDef:  AGDef:
1650    @IFQName: AtomFeedDocument    @QName: atomCommonAttributes
1651    @ClsQName: ManakaiFeedEntryDocument    @enFN: common attributes
1652      @mv:attributeTypeGroupName: common
   @IFISA: AtomDocument  
   @ClsISA: ManakaiAtomDocument  
1653    
1654    @s:rootElementType:    @mv:refers: Atom
1655      @@@: atom|feed    
1656      @@DISCore:stopISARecursive: 1    @ATDef:
1657        @@mv:attributeTypeName: xml|base
1658    @enDesc:      @@mv:attributeValueType: atomUri
1659      The <IF::AtomFeedDocument> interface provides convenience  
1660      methods and attributes for an Atom    @ATDef:
1661      Feed Document, i.e. representation of an Atom feed.      @@mv:attributeTypeName: xml|lang
1662        @@mv:attributeValueType: atomLanguageTag
1663      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  
1664      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @mv:refers: undefinedAttributes
1665      element type, if any, is <XE::atom|feed> at least at  ##atomCommonAttributes
1666      the time of creation <kwd:MUST> also  
1667      implement the <IF::AtomFeedDocument> interface.  Other  STDef:
1668      <IF::Document> objects <kwd:MAY> also implement    @QName: atomNCName
1669      the <IF::AtomFeedDocument> interface.    @mv:datatypeEntityName: NCName
1670      #subsetOf: xsd|string
1671    @Test:    #minLength, pattern
1672      @@QName: createDocument.AtomFeedDocument.test  
1673      @@PerlDef:  STDef:
1674        my $impl;    @QName: atomMediaType
1675        __CODE{tc|createImplForTest:: $impl => $impl}__;    @mv:datatypeEntityName: MediaType
1676          #subsetOf xsd|string
1677        my $doc = $impl-><M::c|DOMImplementation.createDocument>    # pattern
1678                           (<Q::atom|>, 'feed');  
1679    STDef:
1680        $test->id ('interface');    @QName: atomLanguageTag
1681        $test->assert_isa ($doc, <IFName::AtomFeedDocument>);    @mv:datatypeEntityName: LangaugeTag
1682  ##AtomFeedDocument    #subsetOf: xsd|string
1683      #pattern
1684  IFClsDef:  
1685    @IFQName: AtomEntryDocument  STDef:
1686    @ClsQName: ManakaiAtomEntryDocument    @QName: atomUri
1687      @mv:datatypeEntityName: URI
1688      #aliasfor text
1689    STCDef:
1690      @QName: atomUriCM
1691      @mv:elementContentModelName: URI
1692      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1693    
1694    STDef:
1695      @QName: atomEmailAddress
1696      @mv:datatypeEntityName: EmailAddress
1697      #subsetOf xsd|string
1698      #pattern
1699    STCDef:
1700      @QName: atomEmailAddressCM
1701      @mv:elementContentModelName: EmailAddress
1702      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1703    
1704    @IFISA: AtomDocument  ElementTypeBinding:
1705    @ClsISA: ManakaiAtomDocument    @Name: AGDef
1706      @ElementType:
1707        dis:ResourceDef
1708      @ShadowContent:
1709        @@DISCore:resourceType: mv|AttributeTypeGroup
1710        @@For: =ManakaiDOM|ManakaiDOMLatest
1711    
1712    @s:rootElementType:  ElementTypeBinding:
1713      @@@: atom|entry    @Name: ATDef
1714      @@DISCore:stopISARecursive: 1    @ElementType:
1715        dis:ResourceDef
1716      @ShadowContent:
1717        @@DISCore:resourceType: mv|AttributeType
1718        @@For: =ManakaiDOM|ManakaiDOMLatest
1719    
1720    @enDesc:  ElementTypeBinding:
1721      The <IF::AtomEntryDocument> interface provides convenience    @Name: ECDef
1722      methods and attributes for an Atom    @ElementType:
1723      Entry Document, i.e. exactly one Atom entry, outside      dis:ResourceDef
1724      of the context of an Atom feed.    @ShadowContent:
1725        @@DISCore:resourceType: mv|ElementTypeClass
1726        @@For: =ManakaiDOM|ManakaiDOMLatest
1727    
1728      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>  ElementTypeBinding:
1729      is supported, a <IF::Document> object whose <A::Document.documentElement>'s    @Name: EMDef
1730      element type, if any, is <XE::atom|entry> at least at    @ElementType:
1731      the time of the creation <kwd:MUST> also      dis:ResourceDef
1732      implement the <IF::AtomEntryDocument> interface.  Other    @ShadowContent:
1733      <IF::Document> objects <kwd:MAY> also implement      @@DISCore:resourceType: mv|ElementTypeClassMix
1734      the <IF::AtomEntryDocument> interface.      @@For: =ManakaiDOM|ManakaiDOMLatest
1735    
1736    @Test:  ElementTypeBinding:
1737      @@QName: createDocument.AtomEntryDocument.test    @Name: STDef
1738      @@PerlDef:    @ElementType:
1739        my $impl;      dis:ResourceDef
1740        __CODE{tc|createImplForTest:: $impl => $impl}__;    @ShadowContent:
1741            @@DISCore:resourceType: mv|XMLDTDDatatypeEntity
1742        my $doc = $impl-><M::c|DOMImplementation.createDocument>      @@For: =ManakaiDOM|ManakaiDOMLatest
                          (<Q::atom|>, 'entry');  
1743    
1744        $test->id ('interface');  ElementTypeBinding:
1745        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);    @Name: STCDef
1746  ##AtomEntryDocument    @ElementType:
1747        dis:ResourceDef
1748      @ShadowContent:
1749        @@DISCore:resourceType: mv|ElementContentModel
1750        @@For: =ManakaiDOM|ManakaiDOMLatest
1751    
1752  IFClsDef:  IFClsDef:
1753    @IFQName: AtomElement    @IFQName: AtomElement
# Line 1404  IFClsDef: Line 1756  IFClsDef:
1756    @IFISA: Element    @IFISA: Element
1757    @ClsISA: te|ManakaiDOMElement    @ClsISA: te|ManakaiDOMElement
1758        
1759      @f:implements: AtomFeature10
1760    @s:elementType: AnyAtomElement||ManakaiDOM|all    @s:elementType: AnyAtomElement||ManakaiDOM|all
1761    
1762    @enDesc:    @enDesc:
# Line 1455  ResourceDef: Line 1808  ResourceDef:
1808      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
1809    @ForCheck: =ManakaiDOM|all    @ForCheck: =ManakaiDOM|all
1810    
1811  IFClsDef:  ElementTypeBinding:
1812      @Name: cm
1813      @ElementType:
1814        mv:elementContentModel
1815      @ShadowContent:
1816        @@ContentType: lang|dcmodel
1817    
1818    IFClsConstructDef:
1819    @IFQName: AtomTextConstruct    @IFQName: AtomTextConstruct
1820    @ClsQName: ManakaiAtomTextConstruct    @ClsQName: ManakaiAtomTextConstruct
1821      @AGQName: TextAG
1822      @AGName: text
1823      @CMQName: TextCM
1824      @CMName: text
1825    
1826    @IFISA: AtomElement    @IFISA: AtomElement
1827    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1828    
1829      @f:implements: AtomFeature10
1830      @mv:refers: atomCommonAttributes
1831    
1832      @cm:
1833        dxm|ANY||ManakaiDOM|all
1834      @enImplNote:
1835        @@ddid:cm
1836        @@@:
1837          {TODO::
1838            (dxm|PCDATA||ManakaiDOM|all | html|div)*
1839          }
1840    
1841    @enDesc:    @enDesc:
1842      The <IF::AtomTextConstruct> interface provides convenience      The <IF::AtomTextConstruct> interface provides convenience
1843      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1470  IFClsDef: Line 1846  IFClsDef:
1846      interface.      interface.
1847    
1848      A Text construct contains human-readable text, usually in      A Text construct contains human-readable text, usually in
1849      small quantities.  The content of Text constructs is      small quantities.  The content of a Text construct is
1850      Language-Sensitive.      Language-Sensitive.
1851    
1852    @Attr:    @ATTR:
1853      @@Name: type      @@Name: type
1854      @@enDesc:      @@enDesc:
1855        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 1581  IFClsDef: Line 1957  IFClsDef:
1957          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);
1958  ##AtomTextConstruct  ##AtomTextConstruct
1959    
1960  IFClsDef:  IFClsConstructDef:
1961    @IFQName: AtomPersonConstruct    @IFQName: AtomPersonConstruct
1962    @ClsQName: ManakaiAtomPersonConstruct    @ClsQName: ManakaiAtomPersonConstruct
1963      @AGQName: PersonAG
1964      @AGName: person
1965      @CMQName: PersonCM
1966      @CMName: person
1967    
1968    @IFISA: AtomElement    @IFISA: AtomElement
1969    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1970    
1971      @f:implements: AtomFeature10
1972      @mv:refers: atomCommonAttributes
1973    
1974      @cm:
1975        (person-prop+)
1976    
1977    @enDesc:    @enDesc:
1978      The <IF::AtomPersonConstruct> interface provides convenience      The <IF::AtomPersonConstruct> interface provides convenience
1979      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1635  IFClsDef: Line 2021  IFClsDef:
2021      @@Name: nameElement      @@Name: nameElement
2022      @@enDesc:      @@enDesc:
2023        The <XE::atom|name> child element of the node.        The <XE::atom|name> child element of the node.
2024      @@Type: AtomElement      @@Type: AtomNameElement
2025      @@Get:      @@Get:
2026        @@@enDesc:        @@@enDesc:
2027          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 2106  IFClsDef:
2106          }__;          }__;
2107  ##AtomPersonConstruct  ##AtomPersonConstruct
2108    
2109  IFClsDef:  ECDef:
2110      @QName: person-prop
2111      @mv:elementTypeClassName: person-prop
2112      @mv:refers: atom|name
2113      @mv:refers: atom|uri
2114      @mv:refers: atom|email
2115      @mv:refers: extensionElements
2116    
2117    IFClsConstructDef:
2118    @IFQName: AtomDateConstruct    @IFQName: AtomDateConstruct
2119    @ClsQName: ManakaiAtomDateConstruct    @ClsQName: ManakaiAtomDateConstruct
2120      @AGQName: DateAG
2121      @AGName: date
2122      @CMQName: DateCM
2123      @CMName: date
2124    
2125    @IFISA: AtomElement    @IFISA: AtomElement
2126    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2127    
2128      @f:implements: AtomFeature10
2129      @mv:refers: atomCommonAttributes
2130    
2131      @cm:
2132        (dxm|PCDATA||ManakaiDOM|all)*
2133      @enImplNote:
2134        @@ddid: cm
2135        @@@:
2136          {TODO::
2137            xsd|dateTime
2138          }
2139    
2140    @enDesc:    @enDesc:
2141      The <IF::AtomDateConstruct> interface provides convenience      The <IF::AtomDateConstruct> interface provides convenience
2142      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1797  IFClsDef: Line 2207  IFClsDef:
2207        }        }
2208  ##AtomDateConstruct  ##AtomDateConstruct
2209    
2210    ECDef:
2211      @QName: feed-prop
2212      @mv:elementTypeClassName: feed-prop
2213      @mv:refers: atom|author
2214      @mv:refers: atom|category
2215      @mv:refers: atom|contributor
2216      @mv:refers: atom|generator
2217      @mv:refers: atom|icon
2218      @mv:refers: atom|id
2219      @mv:refers: atom|link
2220      @mv:refers: atom|logo
2221      @mv:refers: atom|rights
2222      @mv:refers: atom|subtitle
2223      @mv:refers: atom|title
2224      @mv:refers: atom|updated
2225      @mv:refers: extensionElements
2226    
2227  IFClsETDef:  IFClsETDef:
2228    @IFQName: AtomFeedElement    @IFQName: AtomFeedElement
2229    @ETQName: atom|feed    @ETQName: atom|feed
# Line 1806  IFClsETDef: Line 2233  IFClsETDef:
2233    @IFISA: AtomElement    @IFISA: AtomElement
2234    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2235    
2236      @f:implements: AtomFeature10
2237      @mv:refers: atomCommonAttributes
2238    
2239      @cm:
2240        (feed-prop+, atom|entry*)
2241    
2242    @enDesc:    @enDesc:
2243      The <XE::atom|feed> element is the document element      The <XE::atom|feed> element is the document element
2244      of an Atom Feed Document.      of an Atom Feed Document.
2245    
2246        {ISSUE::
2247          <XE::atom|entry> children <kwd:MUST> be placed after
2248          any other elements.  Attributes creating children
2249          should insert them before any entries?
2250        }
2251    
2252    @Attr:    @Attr:
2253      @@Name: authorElements      @@Name: authorElements
2254      @@enDesc:      @@enDesc:
# Line 2403  IFClsETDef: Line 2842  IFClsETDef:
2842                                  (<Q::atom|>, 'updated');                                  (<Q::atom|>, 'updated');
2843            $updatede-><AS::AtomDateConstruct.value> (scalar time);            $updatede-><AS::AtomDateConstruct.value> (scalar time);
2844            $r-><M::Node.appendChild> ($updatede);            $r-><M::Node.appendChild> ($updatede);
2845    
2846              $self-><M::Node.appendChild> ($r);
2847          }__;          }__;
2848    
2849      @@Test:      @@Test:
# Line 2469  IFClsETDef: Line 2910  IFClsETDef:
2910          $test->assert_num_not_equals          $test->assert_num_not_equals
2911                   (actual_value => $updated-><AG::AtomDateConstruct.value>,                   (actual_value => $updated-><AG::AtomDateConstruct.value>,
2912                    expected_value => 0);                    expected_value => 0);
2913    
2914            $test->id ('parent');
2915            $test->assert_equals ($ent-><AG::Node.parentNode>, $feed);
2916      @@Test:      @@Test:
2917        @@@QName: AtomFeedElement.addNewEntry.2.test        @@@QName: AtomFeedElement.addNewEntry.2.test
2918        @@@enDesc:        @@@enDesc:
# Line 2487  IFClsETDef: Line 2931  IFClsETDef:
2931                                      (<Q::xml|>, 'lang'));                                      (<Q::xml|>, 'lang'));
2932  ##AtomFeedElement  ##AtomFeedElement
2933    
2934    ECDef:
2935      @QName: entry-prop
2936      @mv:elementTypeClassName: entry-prop
2937      @mv:refers: atom|author
2938      @mv:refers: atom|category
2939      @mv:refers: atom|content
2940      @mv:refers: atom|contributor
2941      @mv:refers: atom|id
2942      @mv:refers: atom|link
2943      @mv:refers: atom|published
2944      @mv:refers: atom|rights
2945      @mv:refers: atom|source
2946      @mv:refers: atom|summary
2947      @mv:refers: atom|title
2948      @mv:refers: atom|updated
2949      @mv:refers: extensionElements
2950    
2951  IFClsETDef:  IFClsETDef:
2952    @IFQName: AtomEntryElement    @IFQName: AtomEntryElement
2953    @ETQName: atom|entry    @ETQName: atom|entry
# Line 2496  IFClsETDef: Line 2957  IFClsETDef:
2957    @IFISA: AtomElement    @IFISA: AtomElement
2958    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2959    
2960      @f:implements: AtomFeature10
2961      @mv:refers: atomCommonAttributes
2962    
2963      @cm:
2964        (entry-prop+)
2965    
2966    @enDesc:    @enDesc:
2967      The <XE::atom|entry> element represents an individual      The <XE::atom|entry> element represents an individual
2968      entry, acting as a container for metadata and data      entry, acting as a container for metadata and data
# Line 2713  IFClsETDef: Line 3180  IFClsETDef:
3180          @@@@dlp:cloneCode: ManakaiAtomFeedElement.categoryElements.get          @@@@dlp:cloneCode: ManakaiAtomFeedElement.categoryElements.get
3181    
3182    @Attr:    @Attr:
3183        @@Name: contentElement
3184        @@enDesc:
3185          The <XE::atom|content> child element of the node.
3186        @@Type: AtomContentElement
3187        @@Get:
3188          @@@enDesc:
3189            It <kwd:MUST> <I::return a <XE::atom|content> child element>
3190            of the node.
3191          @@@nullCase:
3192            @@@@enDesc:
3193              If the algorithm returns <DOM::null>.
3194          @@@NodeReadOnlyError:
3195          @@@PerlDef:
3196            __CODE{returnChildElement::
3197              $node => $self,
3198              $namespaceURI => {<Q::atom|>},
3199              $localName => 'content',
3200              $r => $r,
3201            }__;
3202    
3203      @Attr:
3204      @@Name: contributorElements      @@Name: contributorElements
3205      @@enDesc:      @@enDesc:
3206        A static list of <XE::atom|contributor> child elements of the node.        A static list of <XE::atom|contributor> child elements of the node.
# Line 2995  IFClsETDef: Line 3483  IFClsETDef:
3483  ##AtomEntryElement  ##AtomEntryElement
3484    
3485  IFClsETDef:  IFClsETDef:
3486      @IFQName: AtomIdElement
3487      @ETQName: atom|id
3488      @ETRQName: atom|id
3489      @ClsQName: ManakaiAtomIdElement
3490    
3491      @IFISA: AtomElement
3492      @ClsISA: ManakaiAtomElement
3493    
3494      @f:implements: AtomFeature10
3495      @mv:refers: atomCommonAttributes
3496      
3497      @cm: atomUriCM
3498    ##AtomIdElement
3499    
3500    IFClsETDef:
3501      @IFQName: AtomIconElement
3502      @ETQName: atom|icon
3503      @ETRQName: atom|icon
3504      @ClsQName: ManakaiAtomIconElement
3505    
3506      @IFISA: AtomElement
3507      @ClsISA: ManakaiAtomElement
3508    
3509      @f:implements: AtomFeature10
3510      @mv:refers: atomCommonAttributes
3511    
3512      @cm: atomUriCM
3513    ##AtomIconElement
3514    
3515    IFClsETDef:
3516      @IFQName: AtomNameElement
3517      @ETQName: atom|name
3518      @ETRQName: atom|name
3519      @ClsQName: ManakaiAtomNameElement
3520    
3521      @IFISA: AtomElement
3522      @ClsISA: ManakaiAtomElement
3523    
3524      @f:implements: AtomFeature10
3525      # no common attribs
3526      @cm: TextCM
3527    
3528      @mv:refers: Atom
3529    ##AtomNameElement
3530    
3531    IFClsETDef:
3532      @IFQName: AtomUriElement
3533      @ETQName: atom|uri
3534      @ETRQName: atom|uri
3535      @ClsQName: ManakaiAtomUriElement
3536    
3537      @IFISA: AtomElement
3538      @ClsISA: ManakaiAtomElement
3539    
3540      @f:implements: AtomFeature10
3541      # no common attribs
3542      @cm: atomUriCM
3543    
3544      @mv:refers: Atom
3545    ##AtomUriElement
3546    
3547    IFClsETDef:
3548      @IFQName: AtomEmailElement
3549      @ETQName: atom|email
3550      @ETRQName: atom|email
3551      @ClsQName: ManakaiAtomEmailElement
3552    
3553      @IFISA: AtomElement
3554      @ClsISA: ManakaiAtomElement
3555    
3556      @f:implements: AtomFeature10
3557      # no common attribs
3558      @cm: atomEmailAddressCM
3559    
3560      @mv:refers: Atom
3561    ##AtomEmailElement
3562    
3563    IFClsETDef:
3564      @IFQName: AtomLogoElement
3565      @ETQName: atom|logo
3566      @ETRQName: atom|logo
3567      @ClsQName: ManakaiAtomLogoElement
3568    
3569      @IFISA: AtomElement
3570      @ClsISA: ManakaiAtomElement
3571    
3572      @f:implements: AtomFeature10
3573      @mv:refers: atomCommonAttributes
3574    
3575      @cm: atomUriCM
3576    ##AtomLogoElement
3577    
3578    IFClsETDef:
3579    @IFQName: AtomContentElement    @IFQName: AtomContentElement
3580    @ETQName: atom|content    @ETQName: atom|content
3581      @ETRQName: atom|content
3582    @ClsQName: ManakaiAtomContentElement    @ClsQName: ManakaiAtomContentElement
3583    
3584    @IFISA: AtomElement    @IFISA: AtomElement
3585    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3586    
3587      @f:implements: AtomFeature10
3588      @mv:refers: atomCommonAttributes
3589    
3590      @cm:
3591        dxm|ANY||ManakaiDOM|all
3592    
3593    @enDesc:    @enDesc:
3594      The <XE::atom|content> element either contains or links to      The <XE::atom|content> element either contains or links to
3595      the content of the entry.      the content of the entry.
3596    
3597    @Attr:    @ATTR:
3598      @@Name: type      @@Name: type
3599      @@enDesc:      @@enDesc:
3600        The type of the element.        The type of the element.
# Line 3071  IFClsETDef: Line 3659  IFClsETDef:
3659          $el-><AS::AtomContentElement.type> (null);          $el-><AS::AtomContentElement.type> (null);
3660          $test->assert_null ($el-><AG::AtomContentElement.type>);          $test->assert_null ($el-><AG::AtomContentElement.type>);
3661    
3662    @Attr:    @ATTR:
3663      @@Name: src      @@Name: src
3664      @@enDesc:      @@enDesc:
3665        The source of the remote content of the element.        The source of the remote content of the element.
# Line 3245  IFClsETDef: Line 3833  IFClsETDef:
3833  IFClsETDef:  IFClsETDef:
3834    @IFQName: AtomAuthorElement    @IFQName: AtomAuthorElement
3835    @ETQName: atom|author    @ETQName: atom|author
3836      @ETRQName: atom|author
3837    @ClsQName: ManakaiAtomAuthorElement    @ClsQName: ManakaiAtomAuthorElement
3838    
3839    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3840    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3841    
3842      @f:implements: AtomFeature10
3843      @mv:refers: PersonAG
3844      @mv:elementContentModel: PersonCM
3845    
3846    @enDesc:    @enDesc:
3847      The <XE::atom|author> element is a Person construct that      The <XE::atom|author> element is a Person construct that
3848      indicates the author of the entry or feed.      indicates the author of the entry or feed.
# Line 3258  IFClsETDef: Line 3851  IFClsETDef:
3851  IFClsETDef:  IFClsETDef:
3852    @IFQName: AtomCategoryElement    @IFQName: AtomCategoryElement
3853    @ETQName: atom|category    @ETQName: atom|category
3854      @ETRQName: atom|category
3855    @ClsQName: ManakaiAtomCategoryElement    @ClsQName: ManakaiAtomCategoryElement
3856    
3857    @IFISA: AtomElement    @IFISA: AtomElement
3858    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3859    
3860      @f:implements: AtomFeature10
3861      @mv:refers: atomCommonAttributes
3862    
3863      @cm: undefinedContent
3864    
3865    @enDesc:    @enDesc:
3866      The <XE::atom|category> element conveys information abut      The <XE::atom|category> element conveys information abut
3867      a category associated with an entry or feed.      a category associated with an entry or feed.
# Line 3371  IFClsETDef: Line 3970  IFClsETDef:
3970  IFClsETDef:  IFClsETDef:
3971    @IFQName: AtomContributorElement    @IFQName: AtomContributorElement
3972    @ETQName: atom|contributor    @ETQName: atom|contributor
3973      @ETRQName: atom|contributor
3974    @ClsQName: ManakaiAtomContributorElement    @ClsQName: ManakaiAtomContributorElement
3975    
3976    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3977    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3978    
3979      @f:implements: AtomFeature10
3980      @mv:refers: PersonAG
3981      @mv:elementContentModel: PersonCM
3982    
3983    @enDesc:    @enDesc:
3984      The <XE::atom|contributor> element is a Person construct that      The <XE::atom|contributor> element is a Person construct that
3985      indicates a person or other entity who contributed to the entry      indicates a person or other entity who contributed to the entry
# Line 3385  IFClsETDef: Line 3989  IFClsETDef:
3989  IFClsETDef:  IFClsETDef:
3990    @IFQName: AtomGeneratorElement    @IFQName: AtomGeneratorElement
3991    @ETQName: atom|generator    @ETQName: atom|generator
3992      @ETRQName: atom|generator
3993    @ClsQName: ManakaiAtomGeneratorElement    @ClsQName: ManakaiAtomGeneratorElement
3994    
3995    @IFISA: AtomElement    @IFISA: AtomElement
3996    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3997    
3998      @f:implements: AtomFeature10
3999      @mv:refers: atomCommonAttributes
4000    
4001      @cm:
4002        (dxm|PCDATA||ManakaiDOM|all)*
4003    
4004    @enDesc:    @enDesc:
4005      The <XE::atom|generator> element identifies the agent used      The <XE::atom|generator> element identifies the agent used
4006      to generate a feed.      to generate a feed.
# Line 3465  IFClsETDef: Line 4076  IFClsETDef:
4076  IFClsETDef:  IFClsETDef:
4077    @IFQName: AtomLinkElement    @IFQName: AtomLinkElement
4078    @ETQName: atom|link    @ETQName: atom|link
4079      @ETRQName: atom|link
4080    @ClsQName: ManakaiAtomLinkElement    @ClsQName: ManakaiAtomLinkElement
4081    
4082    @IFISA: AtomElement    @IFISA: AtomElement
4083    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4084    
4085      @f:implements: AtomFeature10
4086      @mv:refers: atomCommonAttributes
4087    
4088      @cm: undefinedContent
4089    
4090    @enDesc:    @enDesc:
4091      The <XE::atom|link> element defines a reference from an entry      The <XE::atom|link> element defines a reference from an entry
4092      or feed to a Web resource.      or feed to a Web resource.
4093    
4094    @Attr:    @ATTR:
4095      @@Name: href      @@Name: href
4096      @@enDesc:      @@enDesc:
4097        The <XA::href> attribute of the element.        The <XA::href> attribute of the element.
# Line 3482  IFClsETDef: Line 4099  IFClsETDef:
4099        It <kwd:MUST> <I::reflect the URI value        It <kwd:MUST> <I::reflect the URI value
4100        of the <XA::href> attribute> of the node.        of the <XA::href> attribute> of the node.
4101      @@Type: DOMString      @@Type: DOMString
4102      @@Type: DOMURI      @@actualType: DOMURI
4103      @@Get:      @@Get:
4104        @@@nullCase:        @@@nullCase:
4105          @@@@enDesc:          @@@@enDesc:
# Line 3508  IFClsETDef: Line 4125  IFClsETDef:
4125            $given => $given,            $given => $given,
4126          }__;          }__;
4127    
4128    @Attr:    @ATTR:
4129      @@Name: rel      @@Name: rel
4130      @@enDesc:      @@enDesc:
4131        The <XA::rel> attribute of the element.        The <XA::rel> attribute of the element.
# Line 3518  IFClsETDef: Line 4135  IFClsETDef:
4135        a few exceptions.  The default value <kwd:MUST>        a few exceptions.  The default value <kwd:MUST>
4136        be <URI^DISCore|QName::rel|alternate>.        be <URI^DISCore|QName::rel|alternate>.
4137      @@Type: DOMString      @@Type: DOMString
4138        @@actualType: DOMURI
4139      @@Get:      @@Get:
4140        @@@enDesc:        @@@enDesc:
4141          If the algorithm returns a string that does not contain          If the algorithm returns a string that does not contain
# Line 3591  IFClsETDef: Line 4209  IFClsETDef:
4209          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,
4210                                <Q::rel|alternate>);                                <Q::rel|alternate>);
4211    
4212    @Attr:    @ATTR:
4213      @@Name: type      @@Name: type
4214      @@enDesc:      @@enDesc:
4215        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 3600  IFClsETDef: Line 4218  IFClsETDef:
4218        of the <XA::type> attribute> of the node.        of the <XA::type> attribute> of the node.
4219      @@Type: DOMString      @@Type: DOMString
4220      @@Get:      @@Get:
4221          @@@enDesc:
4222            {P:: If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4223                 is supported, the attribute getter <kwd:MUST> return
4224                 the string <CODE::application/atom+xml> when both of the
4225                 following conditions are met:
4226    
4227               - The attribute getter would otherwise return <DOM::null>.
4228    
4229               - The <A::AtomLinkElement.rel> attribute contains
4230                 a string value of <URI^^DISCore|QName::rel|replies>.
4231    
4232            }
4233        @@@nullCase:        @@@nullCase:
4234          @@@@enDesc:          @@@@enDesc:
4235            If the algorithm returns <DOM::null>.            If the algorithm returns <DOM::null>.
# Line 3611  IFClsETDef: Line 4241  IFClsETDef:
4241            $r => $r,            $r => $r,
4242            $defaultValue => {null},            $defaultValue => {null},
4243          }__;          }__;
4244    
4245            unless (defined $r) {
4246              __DEEP{
4247                my $rel = $self-><AG::AtomLinkElement.rel>;
4248                if (defined $rel and $rel eq <Q::rel|replies>) {
4249                  $r = q<application/atom+xml>;
4250                }
4251              }__;
4252            }
4253      @@Set:      @@Set:
4254        @@@nullCase:        @@@nullCase:
4255          @@@@enDesc:          @@@@enDesc:
# Line 3624  IFClsETDef: Line 4263  IFClsETDef:
4263            $given => $given,            $given => $given,
4264          }__;          }__;
4265    
4266    @Attr:      @@Test:
4267          @@@QName: AtomLinkElement.type.!rel.test
4268          @@@PerlDef:
4269            my $doc;
4270            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4271    
4272            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4273    
4274            $test->id ('implied');
4275            my $type0 = $el-><AG::AtomLinkElement.type>;
4276            $test->assert_null ($type0);
4277    
4278            $test->id ('explicit');
4279            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4280            my $type1 = $el-><AG::AtomLinkElement.type>;
4281            $test->assert_equals ($type1, q<application/atom+xml>);
4282    
4283            $test->id ('different');
4284            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4285            my $type2 = $el-><AG::AtomLinkElement.type>;
4286            $test->assert_equals ($type2, q<application/xhtml+xml>);
4287        @@Test:
4288          @@@QName: AtomLinkElement.type.rel!=replies.test
4289          @@@PerlDef:
4290            my $doc;
4291            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4292    
4293            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4294    
4295            $el-><AS::AtomLinkElement.rel> (<Q::rel|alternate>);
4296    
4297            $test->id ('implied');
4298            my $type0 = $el-><AG::AtomLinkElement.type>;
4299            $test->assert_null ($type0);
4300    
4301            $test->id ('explicit');
4302            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4303            my $type1 = $el-><AG::AtomLinkElement.type>;
4304            $test->assert_equals ($type1, q<application/atom+xml>);
4305    
4306            $test->id ('different');
4307            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4308            my $type2 = $el-><AG::AtomLinkElement.type>;
4309            $test->assert_equals ($type2, q<application/xhtml+xml>);
4310        @@Test:
4311          @@@QName: AtomLinkElement.type.rel=replies.test
4312          @@@PerlDef:
4313            my $doc;
4314            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4315    
4316            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4317    
4318            $el-><AS::AtomLinkElement.rel> (<Q::rel|replies>);
4319    
4320            $test->id ('implied');
4321            my $type0 = $el-><AG::AtomLinkElement.type>;
4322            $test->assert_equals ($type0, q<application/atom+xml>);
4323    
4324            $test->id ('explicit');
4325            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4326            my $type1 = $el-><AG::AtomLinkElement.type>;
4327            $test->assert_equals ($type1, q<application/atom+xml>);
4328    
4329            $test->id ('different');
4330            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4331            my $type2 = $el-><AG::AtomLinkElement.type>;
4332            $test->assert_equals ($type2, q<application/xhtml+xml>);
4333    
4334      @ATTR:
4335      @@Name: hreflang      @@Name: hreflang
4336      @@enDesc:      @@enDesc:
4337        The <XA::hreflang> attribute of the element.        The <XA::hreflang> attribute of the element.
# Line 3657  IFClsETDef: Line 4364  IFClsETDef:
4364            $given => $given,            $given => $given,
4365          }__;          }__;
4366    
4367    @Attr:    @ATTR:
4368      @@Name: title      @@Name: title
4369      @@enDesc:      @@enDesc:
4370        The <XA::title> attribute of the element.        The <XA::title> attribute of the element.
# Line 3690  IFClsETDef: Line 4397  IFClsETDef:
4397            $given => $given,            $given => $given,
4398          }__;          }__;
4399    
4400    @Attr:    @ATTR:
4401      @@Name: length      @@Name: length
4402      @@enDesc:      @@enDesc:
4403        The <XA::length> attribute of the element.        The <XA::length> attribute of the element.
# Line 3727  IFClsETDef: Line 4434  IFClsETDef:
4434  IFClsETDef:  IFClsETDef:
4435    @IFQName: AtomPublishedElement    @IFQName: AtomPublishedElement
4436    @ETQName: atom|published    @ETQName: atom|published
4437      @ETRQName: atom|published
4438    @ClsQName: ManakaiAtomPublishedElement    @ClsQName: ManakaiAtomPublishedElement
4439    
4440    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4441    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4442    
4443      @f:implements: AtomFeature10
4444      @mv:refers: DateAG
4445      @mv:elementContentModel: DateCM
4446    
4447    @enDesc:    @enDesc:
4448      The <XE::atom|published> element is a Date construct      The <XE::atom|published> element is a Date construct
4449      indicating an instant in time associated with an      indicating an instant in time associated with an
# Line 3744  IFClsETDef: Line 4456  IFClsETDef:
4456  IFClsETDef:  IFClsETDef:
4457    @IFQName: AtomRightsElement    @IFQName: AtomRightsElement
4458    @ETQName: atom|rights    @ETQName: atom|rights
4459      @ETRQName: atom|rights
4460    @ClsQName: ManakaiAtomRightsElement    @ClsQName: ManakaiAtomRightsElement
4461    
4462    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4463    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4464    
4465      @f:implements: AtomFeature10
4466      @mv:refers: TextAG
4467      @mv:elementContentModel: TextCM
4468    
4469    @enDesc:    @enDesc:
4470      The <XE::atom|rights> element is a Text construct      The <XE::atom|rights> element is a Text construct
4471      that conveys information about rights held in and      that conveys information about rights held in and
4472      over an entry or feed.      over an entry or feed.
4473  ##AtomRightsElement  ##AtomRightsElement
4474    
4475    ECDef:
4476      @QName: source-prop
4477      @mv:elementTypeClassName: source-prop
4478      @mv:refers: atom|author
4479      @mv:refers: atom|category
4480      @mv:refers: atom|contributor
4481      @mv:refers: atom|generator
4482      @mv:refers: atom|icon
4483      @mv:refers: atom|id
4484      @mv:refers: atom|link
4485      @mv:refers: atom|logo
4486      @mv:refers: atom|rights
4487      @mv:refers: atom|subtitle
4488      @mv:refers: atom|title
4489      @mv:refers: atom|updated
4490      @mv:refers: extensionElements
4491    
4492  IFClsETDef:  IFClsETDef:
4493    @IFQName: AtomSourceElement    @IFQName: AtomSourceElement
4494    @ETQName: atom|source    @ETQName: atom|source
4495      @ETRQName: atom|source
4496    @ClsQName: ManakaiAtomSourceElement    @ClsQName: ManakaiAtomSourceElement
4497    
4498    @IFISA: AtomElement    @IFISA: AtomElement
4499    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4500    
4501      @f:implements: AtomFeature10
4502      @mv:refers: atomCommonAttributes
4503    
4504      @cm:
4505        (source-prop*)
4506    
4507    @Attr:    @Attr:
4508      @@Name: authorElements      @@Name: authorElements
4509      @@enDesc:      @@enDesc:
# Line 3967  IFClsETDef: Line 4708  IFClsETDef:
4708  IFClsETDef:  IFClsETDef:
4709    @IFQName: AtomSubtitleElement    @IFQName: AtomSubtitleElement
4710    @ETQName: atom|subtitle    @ETQName: atom|subtitle
4711      @ETRQName: atom|subtitle
4712    @ClsQName: ManakaiAtomSubtitleElement    @ClsQName: ManakaiAtomSubtitleElement
4713    
4714    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4715    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4716    
4717      @f:implements: AtomFeature10
4718      @mv:refers: TextAG
4719      @mv:elementContentModel: TextCM
4720    
4721    @enDesc:    @enDesc:
4722      The <XE::atom|subtitle> element is a Text construct      The <XE::atom|subtitle> element is a Text construct
4723      that conveys a human-readable description or subtitle for a feed.      that conveys a human-readable description or subtitle for a feed.
# Line 3980  IFClsETDef: Line 4726  IFClsETDef:
4726  IFClsETDef:  IFClsETDef:
4727    @IFQName: AtomSummaryElement    @IFQName: AtomSummaryElement
4728    @ETQName: atom|summary    @ETQName: atom|summary
4729      @ETRQName: atom|summary
4730    @ClsQName: ManakaiAtomSummaryElement    @ClsQName: ManakaiAtomSummaryElement
4731    
4732    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4733    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4734    
4735      @f:implements: AtomFeature10
4736      @mv:refers: TextAG
4737      @mv:elementContentModel: TextCM
4738    
4739    @enDesc:    @enDesc:
4740      The <XE::atom|summary> element is a Text construct      The <XE::atom|summary> element is a Text construct
4741      that conveys a short summary, abstract, or excerpt of an entry.      that conveys a short summary, abstract, or excerpt of an entry.
# Line 3993  IFClsETDef: Line 4744  IFClsETDef:
4744  IFClsETDef:  IFClsETDef:
4745    @IFQName: AtomTitleElement    @IFQName: AtomTitleElement
4746    @ETQName: atom|title    @ETQName: atom|title
4747      @ETRQName: atom|title
4748    @ClsQName: ManakaiAtomTitleElement    @ClsQName: ManakaiAtomTitleElement
4749    
4750    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4751    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4752    
4753      @f:implements: AtomFeature10
4754      @mv:refers: TextAG
4755      @mv:elementContentModel: TextCM
4756    
4757    @enDesc:    @enDesc:
4758      The <XE::atom|title> element is a Text construct      The <XE::atom|title> element is a Text construct
4759      that conveys a human-readable title for an entry or feed.      that conveys a human-readable title for an entry or feed.
# Line 4006  IFClsETDef: Line 4762  IFClsETDef:
4762  IFClsETDef:  IFClsETDef:
4763    @IFQName: AtomUpdatedElement    @IFQName: AtomUpdatedElement
4764    @ETQName: atom|updated    @ETQName: atom|updated
4765      @ETRQName: atom|updated
4766    @ClsQName: ManakaiAtomUpdatedElement    @ClsQName: ManakaiAtomUpdatedElement
4767    
4768    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4769    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4770    
4771      @f:implements: AtomFeature10
4772      @mv:refers: DateAG
4773      @mv:elementContentModel: DateCM
4774    
4775    @enDesc:    @enDesc:
4776      The <XE::atom|updated> element is a Date construct      The <XE::atom|updated> element is a Date construct
4777      indicating the most recent instant in time when an      indicating the most recent instant in time when an
# Line 4100  ElementTypeBinding: Line 4861  ElementTypeBinding:
4861      @@For: ManakaiDOM|DOM3      @@For: ManakaiDOM|DOM3
4862      @@For: =ManakaiDOM|all      @@For: =ManakaiDOM|all
4863      @@Type: idl|boolean||ManakaiDOM|all      @@Type: idl|boolean||ManakaiDOM|all
4864    
4865    ECDef:
4866      @QName: simpleExtensionElements
4867      @mv:elementTypeClassName: simple.extra
4868      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4869    
4870    ECDef:
4871      @QName: structuredExtensionElements
4872      @mv:elementTypeClassName: structured.extra
4873      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4874    
4875    EMDef:
4876      @QName: extensionElements
4877      @mv:elementTypeClassName: extra
4878      @mv:refers: simpleExtensionElements
4879      @mv:refers: structuredExtensionElements
4880      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4881    
4882    AGDef:
4883      @QName: undefinedAttributes
4884      @mv:attributeTypeGroupName: common.extra
4885    
4886    ResourceDef:
4887      @QName: undefinedContent
4888      @mv:elementContentModelName: undefined
4889      @For: =ManakaiDOM|ManakaiDOMLatest
4890      @DISCore:resourceType: mv|ElementContentModel
4891      @cm: dxm|ANY||ManakaiDOM|all
4892      @enImplNote:
4893        (text | anyForeignElement)*
4894    
4895    ## -- Atom Threading Extension [RFC 4685]
4896    
4897    IFClsDef:
4898      @IFQName: AtomEntryElementThread
4899      @ClsQName: ManakaiAtomEntryElementThread
4900    
4901      @ClsISA: ManakaiAtomEntryElement
4902    
4903      @f:implements: AtomThreadingFeature10
4904    
4905      @enDesc:
4906        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4907        is supported, any <IF::Element> whose element type
4908        is <XE::atom|entry> <kwd:MUST> implement the <IF::AtomEntryElementThread>
4909        interface in addition to other appropriate interfaces.
4910    
4911      @Test:
4912        @@QName: AtomEntryElementThread.1.test
4913        @@PerlDef:
4914          my $doc;
4915          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4916    
4917          my $el = $doc->create_element_ns (<Q::atom|>, 'entry');
4918    
4919          $test->id ('interface');
4920          $test->assert_isa ($el, <IFName::AtomEntryElementThread>);
4921    
4922          $test->id ('feature');
4923          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4924    
4925      @Attr:
4926        @@Name: threadInReplyToElements
4927        @@enDesc:
4928          A static list of <XE::thr|in-reply-to> child elements of the node.
4929        @@Type: StaticNodeList
4930        @@Get:
4931          @@@enDesc:
4932            It <kwd:MUST> <I::return a <XE::thr|in-reply-to> child element list>
4933            of the node.
4934          @@@PerlDef:
4935            __CODE{returnChildElementList::
4936              $node => $self,
4937              $namespaceURI => {<Q::thr|>},
4938              $localName => 'in-reply-to',
4939              $r => $r,
4940            }__;
4941    ##AtomEntryElementThread
4942    
4943    IFClsETDef:
4944      @IFQName: AtomThreadInReplyToElement
4945      @ETQName: thr|in-reply-to
4946      @ETRQName: thr|in-reply-to
4947      @ClsQName: ManakaiAtomThreadInReplyToElement
4948    
4949      @IFISA: AtomDateConstruct
4950      @ClsISA: ManakaiAtomDateConstruct
4951    
4952      @f:implements: AtomThreadingFeature10
4953      @mv:refers: atomCommonAttributes
4954    
4955      @cm: undefinedContent
4956    
4957      @enDesc:
4958        The <XE::thr|in-reply-to> element is used to indicate
4959        that an entry is a response to another resource.
4960    
4961        If the entry is a response to multiple resources,
4962        additional <XE::thr|in-reply-to> element <kwd:MAY>
4963        be used.
4964    
4965        RFC 4685 assigns no significance to the order in which
4966        multiple <XE::thr|in-reply-to> element appear within
4967        an entry.
4968    
4969      @Test:
4970        @@QName: AtomThreadInReplyToElement.1.test
4971        @@PerlDef:
4972          my $doc;
4973          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4974    
4975          my $el = $doc->create_element_ns (<Q::thr|>, 'in-reply-to');
4976    
4977          $test->id ('interface');
4978          $test->assert_isa ($el, <IFName::AtomThreadInReplyToElement>);
4979    
4980          $test->id ('feature');
4981          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4982    
4983      @ATTR:
4984        @@Name: ref
4985        @@enDesc:
4986          The <XA::ref> attribute of the element.
4987    
4988          It <kwd:MUST> <I::reflect the URI value
4989          of the <XA::ref> attribute> of the node.
4990    
4991          The <XA::ref> attribute specifies the persistent,
4992          universally unique identifier of the resource being
4993          responded to.  The value <kwd:MUST> conform to
4994          the same construction and comparison rules as the
4995          value of the <XE::atom|id> element.  Though the IRI
4996          might use a dereferenceable scheme, processors <kwd:MUST-NOT>
4997          assume that it can be dereferenced.
4998    
4999          The <XE::thr|in-reply-to> element <kwd:MUST> contain
5000          a <XA::ref> attribute identifying the resource that
5001          is being respnoded to.
5002    
5003          If the resource being responded to does not have a persistent,
5004          universally unique identifier, the publisher <kwd:MUST> assign an
5005          identifier that satisfies all the considerations in Section 4.2.6 of
5006          RFC 4287 for use as the value of the <XA::ref> attribute.
5007          In that case, if a representation of the resource can be retrieved
5008          from an IRI that can be used as a valid atom:id value, then this IRI
5009          <kwd:SHOULD> be used as the value of both the <XA::ref> and
5010          <XA::href> attributes.
5011        @@Type: DOMString
5012        @@actualType: DOMURI
5013        @@Get:
5014          @@@nullCase:
5015            @@@@enDesc:
5016              If the algorithm returns <DOM::null>.
5017          @@@PerlDef:
5018            __CODE{getReflectAttrURIValue::
5019              $node => $self,
5020              $namespaceURI => {null},
5021              $localName => 'ref',
5022              $r => $r,
5023              $defaultValue => {null},
5024            }__;
5025        @@Set:
5026          @@@nullCase:
5027            @@@@enDesc:
5028              Removes the attribute.
5029          @@@NodeReadOnlyError:
5030          @@@PerlDef:
5031            __CODE{setReflectAttrURIValue::
5032              $node => $self,
5033              $namespaceURI => {null},
5034              $localName => 'ref',
5035              $given => $given,
5036            }__;
5037            
5038      @ATTR:
5039        @@Name: source
5040        @@enDesc:
5041          The <XA::source> attribute of the element.
5042    
5043          It <kwd:MUST> <I::reflect the URI value
5044          of the <XA::source> attribute> of the node.
5045    
5046          The <XA::source> attribute <kwd:MAY> be used to specify the IRI
5047          of an Atom Feed or Entry Document containing an
5048          <XE::atom|entry> with an <XE::atom|id> value equal to the
5049          value of the <XA::ref> attribute.  The IRI specified <kwd:MUST>
5050          be dereferenceable.
5051        @@Type: DOMString
5052        @@actualType: DOMURI
5053        @@Get:
5054          @@@nullCase:
5055            @@@@enDesc:
5056              If the algorithm returns <DOM::null>.
5057          @@@PerlDef:
5058            __CODE{getReflectAttrURIValue::
5059              $node => $self,
5060              $namespaceURI => {null},
5061              $localName => 'source',
5062              $r => $r,
5063              $defaultValue => {null},
5064            }__;
5065        @@Set:
5066          @@@nullCase:
5067            @@@@enDesc:
5068              Removes the attribute.
5069          @@@NodeReadOnlyError:
5070          @@@PerlDef:
5071            __CODE{setReflectAttrURIValue::
5072              $node => $self,
5073              $namespaceURI => {null},
5074              $localName => 'source',
5075              $given => $given,
5076            }__;
5077            
5078      @ATTR:
5079        @@Name: href
5080        @@enDesc:
5081          The <XA::href> attribute of the element.
5082    
5083          It <kwd:MUST> <I::reflect the URI value
5084          of the <XA::href> attribute> of the node.
5085    
5086          The <XA::href> attribute specifies an IRI that may be used
5087          to retrieve a representation of the resource being
5088          responded to.  The IRI specified <kwd:MUST> be
5089          dereferenceable.
5090        @@Type: DOMString
5091        @@actualType: DOMURI
5092        @@Get:
5093          @@@nullCase:
5094            @@@@enDesc:
5095              If the algorithm returns <DOM::null>.
5096          @@@PerlDef:
5097            __CODE{getReflectAttrURIValue::
5098              $node => $self,
5099              $namespaceURI => {null},
5100              $localName => 'href',
5101              $r => $r,
5102              $defaultValue => {null},
5103            }__;
5104        @@Set:
5105          @@@nullCase:
5106            @@@@enDesc:
5107              Removes the attribute.
5108          @@@NodeReadOnlyError:
5109          @@@PerlDef:
5110            __CODE{setReflectAttrURIValue::
5111              $node => $self,
5112              $namespaceURI => {null},
5113              $localName => 'href',
5114              $given => $given,
5115            }__;
5116      
5117      @ATTR:
5118        @@Name: type
5119        @@enDesc:
5120          The <XA::type> attribute of the element.
5121    
5122          It <kwd:MUST> <I::reflect the string value
5123          of the <XA::type> attribute> of the node.
5124    
5125          The <XA::type> attribute <kwd:MAY> be used to provide
5126          a hint to the client about the media type of the
5127          resource identified by the <XA::href> attribute.
5128          The <XA::type> attribute is only meaningful if a
5129          corresponding <XA::href> attribute is also provided.
5130        @@Type: DOMString
5131        @@Get:
5132          @@@nullCase:
5133            @@@@enDesc:
5134              If the algorithm returns <DOM::null>.
5135          @@@PerlDef:
5136            __CODE{getReflectAttrStringValue::
5137              $node => $self,
5138              $namespaceURI => {null},
5139              $localName => 'type',
5140              $r => $r,
5141              $defaultValue => {null},
5142            }__;
5143        @@Set:
5144          @@@nullCase:
5145            @@@@enDesc:
5146              Removes the attribute.
5147          @@@NodeReadOnlyError:
5148          @@@PerlDef:
5149            __CODE{setReflectAttrStringValue::
5150              $node => $self,
5151              $namespaceURI => {null},
5152              $localName => 'type',
5153              $given => $given,
5154            }__;
5155    ##AtomThreadInReplyToElement
5156    
5157    IFClsDef:
5158      @IFQName: AtomLinkElementThread
5159      @ClsQName: ManakaiAtomLinkElementThread
5160    
5161      @ClsISA: ManakaiAtomLinkElement
5162    
5163      @f:implements: AtomThreadingFeature10
5164    
5165      @enDesc:
5166        An <XE::atom|link> element with a <XA::rel> attribute value of
5167        <XML::replies> may be used to reference a resource where responses
5168        to an entry may be found.  If the <XA::type> attribute of the
5169        <XE::atom|link> is omitted, its value is assumed to be
5170        <XML::application/atom+xml>.
5171    
5172        A <XML::replies> link appearing as a child of the <XE::atom|feed>
5173        or <XE::atom|source> element indicates that the referenced
5174        resource likely contains responses to any of that
5175        feed's entries.  A <XML::replies>
5176        link appearing as a child of an <XE::atom|entry> element
5177        indicates that the linked resource likely contains responses
5178        specific to that entry.
5179    
5180        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
5181        is supported, any <IF::Element> whose element type
5182        is <XE::atom|link> <kwd:MUST> implement the <IF::AtomLinkElementThread>
5183        interface in addition to other appropriate interfaces.
5184    
5185      @Test:
5186        @@QName: AtomLinkElementThread.1.test
5187        @@PerlDef:
5188          my $doc;
5189          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5190    
5191          my $el = $doc->create_element_ns (<Q::atom|>, 'link');
5192    
5193          $test->id ('interface');
5194          $test->assert_isa ($el, <IFName::AtomLinkElementThread>);
5195    
5196          $test->id ('feature');
5197          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5198    
5199      @ATTR:
5200        @@Name: threadCount
5201        @@enDesc:
5202          The <XA::thr|count> attribute of the element.
5203    
5204          It <kwd:MUST> <I::reflect the non-negative integer value
5205          of the <XA::thr|count> attribute> of the node.
5206    
5207          An <XE::atom|link> element using the <XML::replies>
5208          <XA::rel> attribute value <kwd:MAY> contain
5209          a <XA::thr|count> attribute whose value is a
5210          non-negative integer that provides a hint to clients
5211          as to the total number of replies contained by the
5212          linked resource.  The value is advisory and
5213          may not accurately reflect the actual number of replies.
5214        @@Type: idl|long||ManakaiDOM|all
5215        @@Get:
5216          @@@PerlDef:
5217            __CODE{getReflectAttrNonNegativeIntegerValue::
5218              $node => $self,
5219              $namespaceURI => {<Q::thr|>},
5220              $localName => 'count',
5221              $r => $r,
5222              $defaultValue => {null},
5223            }__;
5224        @@Set:
5225          @@@NodeReadOnlyError:
5226          @@@PerlDef:
5227            __CODE{setReflectAttrNonNegativeIntegerValue::
5228              $node => $self,
5229              $namespaceURI => {<Q::thr|>},
5230              $localName => 'count',
5231              $given => $given,
5232            }__;
5233    
5234        @@Test:
5235          @@@QName: AtomLinkElementThread.threadCount.1.test
5236          @@@PerlDef:
5237            my $doc;
5238            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5239    
5240            my $link = $doc->create_element_ns (<Q::atom|>, 'link');
5241    
5242            $test->id ('default');
5243            $test->assert_num_equals
5244                     (expected_value => -1,
5245                      actual_value =>
5246                        $link-><AG::AtomLinkElementThread.threadCount>);
5247    
5248            $test->id ('zero');
5249            $link-><AS::AtomLinkElementThread.threadCount> (0);
5250            $test->assert_num_equals
5251                     (expected_value => 0,
5252                      actual_value =>
5253                        $link-><AG::AtomLinkElementThread.threadCount>);
5254            $test->id ('zero.attr');
5255            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '0');
5256    
5257            $test->id ('one');
5258            $link-><AS::AtomLinkElementThread.threadCount> (1);
5259            $test->assert_num_equals
5260                     (expected_value => 1,
5261                      actual_value =>
5262                        $link-><AG::AtomLinkElementThread.threadCount>);
5263            $test->id ('one.attr');
5264            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '1');
5265    
5266            $test->id ('10000');
5267            $link-><AS::AtomLinkElementThread.threadCount> (10000);
5268            $test->assert_num_equals
5269                     (expected_value => 10000,
5270                      actual_value =>
5271                        $link-><AG::AtomLinkElementThread.threadCount>);
5272            $test->id ('10000.attr');
5273            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'),
5274                                  '10000');
5275    
5276            $test->id ('+10000');
5277            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '+10000');
5278            $test->assert_num_equals
5279                     (expected_value => 10000,
5280                      actual_value =>
5281                        $link-><AG::AtomLinkElementThread.threadCount>);
5282    
5283            $test->id ('010000');
5284            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '010000');
5285            $test->assert_num_equals
5286                     (expected_value => 10000,
5287                      actual_value =>
5288                        $link-><AG::AtomLinkElementThread.threadCount>);
5289    
5290            $test->id ('-100');
5291            $link-><AS::AtomLinkElementThread.threadCount> (-100);
5292            $test->assert_num_equals
5293                     (expected_value => -1,
5294                      actual_value =>
5295                        $link-><AG::AtomLinkElementThread.threadCount>);
5296            $test->id ('-100.attr');
5297            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5298    
5299            $test->id ('120a');
5300            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '120a');
5301            $test->assert_num_equals
5302                     (expected_value => -1,
5303                      actual_value =>
5304                        $link-><AG::AtomLinkElementThread.threadCount>);
5305    
5306            $test->id ('-1');
5307            $link-><AS::AtomLinkElementThread.threadCount> (-1);
5308            $test->assert_num_equals
5309                     (expected_value => -1,
5310                      actual_value =>
5311                        $link-><AG::AtomLinkElementThread.threadCount>);
5312            $test->id ('-1.attr');
5313            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5314    
5315      @enImplNote:
5316        @@ddid: updated
5317        @@@:
5318          {TODO::
5319            <XA::thr|updated> attribute
5320          }
5321    ##AtomLinkElementThread
5322    
5323    enImplNote:
5324      @@ddid: total
5325      @@@:
5326        {TODO::
5327          <XE::thr|total>
5328        }
5329    
5330    enImplNote:
5331      @@ddid: threaddtd
5332      @@@:
5333        {TODO::
5334          DTD impl for threading
5335        }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.19

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24