/[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.15 by wakaba, Sat Nov 4 12:25:14 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 494  IFClsDef: Line 728  IFClsDef:
728          <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,          <IFName::AtomImplementation||ManakaiDOM|ManakaiDOM>,
729          <IFName::c|DOMImplementation>,          <IFName::c|DOMImplementation>,
730          <IFName::urigen|URIImplementation>,          <IFName::urigen|URIImplementation>,
         <IFName::f|MinimumImplementation>,  
731          <IFName::f|GetFeature>,          <IFName::f|GetFeature>,
732        ) {        ) {
733          $test->id ($interface);          $test->id ($interface);
# Line 1289  IFClsDef: Line 1522  IFClsDef:
1522          <QUOTE::reflecting Date child element> attribute should          <QUOTE::reflecting Date child element> attribute should
1523          be provided for published and created?          be provided for published and created?
1524        }        }
1525    
1526      @CODE:
1527        @@QName: getReflectAttrNonNegativeIntegerValue
1528        @@enDesc:
1529          {P:: If a DOM attribute is defined to <DFN::reflect the
1530               non-negative integer value of the <VAR::attr-name> attribute>
1531               of the node <VAR::E>, the getter of the attribute <kwd:MUST>
1532               return the value defined by the algorithm:
1533    
1534            {OLI:: If the <VAR::E> contains an attribute node <VAR::A> whose name
1535                   is <VAR::attr-name>:
1536    
1537              = If the <A::Node.nodeValue> of the <VAR::A> is
1538                one or more sequence of digits (<CHAR::DIGIT ZERO>,
1539                <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>) optionally
1540                preceding by a <CHAR::PLUS SIGN>, then
1541                the attribute getter <kwd:MUST> return a value
1542                by interpreting the <A::Node.nodeValue> of the <VAR::A>
1543                as a decimal number.
1544    
1545            }
1546    
1547            = If a default value is explicitly defined
1548              where this algorithm is referenced, it <kwd:MUST>
1549              return the default value.
1550    
1551            = Otherwise, it <kwd:MUST> return a binding-specific
1552              default value, if it is defined by the specification
1553              of the binding, or <DOM::-1>.
1554    
1555          }
1556    
1557            {NOTE::
1558              In Atom Threading Extension <SRC::RFC 4685>,
1559              the <CHAR::PLUS SIGN> and leading <CHAR::DIGIT ZERO>s
1560              are prohibitted.
1561            }
1562        @@PerlDef:
1563          __DEEP{
1564            E: {
1565              $r = $node-><M::Element.getAttributeNS> ($namespaceURI, $localName);
1566              if (defined $r) {
1567                if ($r =~ /\A\+?([0-9]+)\z/) {
1568                  $r = 0+$1;
1569                  last E;
1570                }
1571              }
1572    
1573              $r = $defaultValue;
1574              $r = -1 unless defined $r;
1575            } # E
1576          }__;
1577    
1578      @CODE:
1579        @@QName: setReflectAttrNonNegativeIntegerValue
1580        @@enDesc:
1581          {P:: If a DOM attribute is defined to <DFN::reflect the
1582               non-negative integer value
1583               of the <VAR::attr-name> attribute> of the node <VAR::E>,
1584               the setter of the attribute <kwd:MUST> modify the node as
1585               defined by the algorithm:
1586    
1587            = If the given value is <DOM::-1> or one of binding-specific
1588              default values, if any, as defined by the specification
1589              of the binding, it <kwd:MUST>
1590              remove the <VAR::attr-name> attribute node, if any,
1591              from the list of attribute nodes of <VAR::E>.
1592    
1593            = Otherwise, it <kwd:MUST> set the <VAR::attr-name>
1594              attribute node value to a string representation
1595              of the given value as if
1596              the <M::Element.setAttributeNS> method were invoked.
1597              The string representation <kwd:MUST> be a decimal
1598              number consist of one or more sequence of digits
1599              (<CHAR::DIGIT ZERO>, <CHAR::DIGIT ONE>, ..., <CHAR::DIGIT NINE>)
1600              <EM::without> any leading <CHAR::DIGIT ZERO>.
1601              The <CHAR::PLUS SIGN> <kwd:MUST> be omitted.
1602    
1603          }
1604    
1605            {NOTE::
1606              It might throw an exception.
1607            }
1608        @@PerlDef:
1609          __DEEP{
1610            if (defined $given and $given >= 0) {
1611              $node-><M::Element.setAttributeNS>
1612                       ($namespaceURI, $localName, 0+$given);
1613            } else {
1614              $node-><M::Element.removeAttributeNS> ($namespaceURI, $localName);
1615            }
1616          }__;
1617  ##AtomImplementation  ##AtomImplementation
1618    
1619  IFClsDef:  IFClsDef:
1620    @IFQName: AtomDocument    @IFQName: AtomDocument
1621    @ClsQName: ManakaiAtomDocument    @ClsQName: ManakaiAtomDocument
1622    
1623    @IFISA: Document    @domperl:implementedByObjectsOf: Document
1624    @ClsISA: td|ManakaiDOMDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1625    
1626    @s:rootElementType: AnyAtomElement||ManakaiDOM|all    @f:implements: AtomFeature10
1627    
1628    @enDesc:    @enDesc:
1629      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>      If the <Feature::fe|Atom> feature version <FeatureVer::1.0>
# Line 1326  IFClsDef: Line 1651  IFClsDef:
1651    @IFQName: AtomFeedDocument    @IFQName: AtomFeedDocument
1652    @ClsQName: ManakaiFeedEntryDocument    @ClsQName: ManakaiFeedEntryDocument
1653    
1654    @IFISA: AtomDocument    @domperl:implementedByObjectsOf: Document
1655    @ClsISA: ManakaiAtomDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1656    
1657    @s:rootElementType:    @f:implements: AtomFeature10
     @@@: atom|feed  
     @@DISCore:stopISARecursive: 1  
1658    
1659    @enDesc:    @enDesc:
1660      The <IF::AtomFeedDocument> interface provides convenience      The <IF::AtomFeedDocument> interface provides convenience
# Line 1363  IFClsDef: Line 1686  IFClsDef:
1686    @IFQName: AtomEntryDocument    @IFQName: AtomEntryDocument
1687    @ClsQName: ManakaiAtomEntryDocument    @ClsQName: ManakaiAtomEntryDocument
1688    
1689    @IFISA: AtomDocument    @domperl:implementedByObjectsOf: Document
1690    @ClsISA: ManakaiAtomDocument    @domperl:classImplementedByObjectsOf: td|ManakaiDOMDocument
1691    
1692    @s:rootElementType:    @f:implements: AtomFeature10
     @@@: atom|entry  
     @@DISCore:stopISARecursive: 1  
1693    
1694    @enDesc:    @enDesc:
1695      The <IF::AtomEntryDocument> interface provides convenience      The <IF::AtomEntryDocument> interface provides convenience
# Line 1397  IFClsDef: Line 1718  IFClsDef:
1718        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);
1719  ##AtomEntryDocument  ##AtomEntryDocument
1720    
1721    AGDef:
1722      @QName: atomCommonAttributes
1723      @enFN: common attributes
1724      @mv:attributeTypeGroupName: common
1725    
1726      @mv:refers: Atom
1727      
1728      @ATDef:
1729        @@mv:attributeTypeName: xml|base
1730        @@mv:attributeValueType: atomUri
1731    
1732      @ATDef:
1733        @@mv:attributeTypeName: xml|lang
1734        @@mv:attributeValueType: atomLanguageTag
1735    
1736      @mv:refers: undefinedAttributes
1737    ##atomCommonAttributes
1738    
1739    STDef:
1740      @QName: atomNCName
1741      @mv:datatypeEntityName: NCName
1742      #subsetOf: xsd|string
1743      #minLength, pattern
1744    
1745    STDef:
1746      @QName: atomMediaType
1747      @mv:datatypeEntityName: MediaType
1748      #subsetOf xsd|string
1749      # pattern
1750    
1751    STDef:
1752      @QName: atomLanguageTag
1753      @mv:datatypeEntityName: LangaugeTag
1754      #subsetOf: xsd|string
1755      #pattern
1756    
1757    STDef:
1758      @QName: atomUri
1759      @mv:datatypeEntityName: URI
1760      #aliasfor text
1761    STCDef:
1762      @QName: atomUriCM
1763      @mv:elementContentModelName: URI
1764      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1765    
1766    STDef:
1767      @QName: atomEmailAddress
1768      @mv:datatypeEntityName: EmailAddress
1769      #subsetOf xsd|string
1770      #pattern
1771    STCDef:
1772      @QName: atomEmailAddressCM
1773      @mv:elementContentModelName: EmailAddress
1774      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1775    
1776    ElementTypeBinding:
1777      @Name: AGDef
1778      @ElementType:
1779        dis:ResourceDef
1780      @ShadowContent:
1781        @@DISCore:resourceType: mv|AttributeTypeGroup
1782        @@For: =ManakaiDOM|ManakaiDOMLatest
1783    
1784    ElementTypeBinding:
1785      @Name: ATDef
1786      @ElementType:
1787        dis:ResourceDef
1788      @ShadowContent:
1789        @@DISCore:resourceType: mv|AttributeType
1790        @@For: =ManakaiDOM|ManakaiDOMLatest
1791    
1792    ElementTypeBinding:
1793      @Name: ECDef
1794      @ElementType:
1795        dis:ResourceDef
1796      @ShadowContent:
1797        @@DISCore:resourceType: mv|ElementTypeClass
1798        @@For: =ManakaiDOM|ManakaiDOMLatest
1799    
1800    ElementTypeBinding:
1801      @Name: EMDef
1802      @ElementType:
1803        dis:ResourceDef
1804      @ShadowContent:
1805        @@DISCore:resourceType: mv|ElementTypeClassMix
1806        @@For: =ManakaiDOM|ManakaiDOMLatest
1807    
1808    ElementTypeBinding:
1809      @Name: STDef
1810      @ElementType:
1811        dis:ResourceDef
1812      @ShadowContent:
1813        @@DISCore:resourceType: mv|XMLDTDDatatypeEntity
1814        @@For: =ManakaiDOM|ManakaiDOMLatest
1815    
1816    ElementTypeBinding:
1817      @Name: STCDef
1818      @ElementType:
1819        dis:ResourceDef
1820      @ShadowContent:
1821        @@DISCore:resourceType: mv|ElementContentModel
1822        @@For: =ManakaiDOM|ManakaiDOMLatest
1823    
1824  IFClsDef:  IFClsDef:
1825    @IFQName: AtomElement    @IFQName: AtomElement
1826    @ClsQName: ManakaiAtomElement    @ClsQName: ManakaiAtomElement
# Line 1404  IFClsDef: Line 1828  IFClsDef:
1828    @IFISA: Element    @IFISA: Element
1829    @ClsISA: te|ManakaiDOMElement    @ClsISA: te|ManakaiDOMElement
1830        
1831      @f:implements: AtomFeature10
1832    @s:elementType: AnyAtomElement||ManakaiDOM|all    @s:elementType: AnyAtomElement||ManakaiDOM|all
1833    
1834    @enDesc:    @enDesc:
# Line 1455  ResourceDef: Line 1880  ResourceDef:
1880      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
1881    @ForCheck: =ManakaiDOM|all    @ForCheck: =ManakaiDOM|all
1882    
1883  IFClsDef:  ElementTypeBinding:
1884      @Name: cm
1885      @ElementType:
1886        mv:elementContentModel
1887      @ShadowContent:
1888        @@ContentType: lang|dcmodel
1889    
1890    IFClsConstructDef:
1891    @IFQName: AtomTextConstruct    @IFQName: AtomTextConstruct
1892    @ClsQName: ManakaiAtomTextConstruct    @ClsQName: ManakaiAtomTextConstruct
1893      @AGQName: TextAG
1894      @AGName: text
1895      @CMQName: TextCM
1896      @CMName: text
1897    
1898    @IFISA: AtomElement    @IFISA: AtomElement
1899    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1900    
1901      @f:implements: AtomFeature10
1902      @mv:refers: atomCommonAttributes
1903    
1904      @cm:
1905        dxm|ANY||ManakaiDOM|all
1906      @enImplNote:
1907        @@ddid:cm
1908        @@@:
1909          {TODO::
1910            (dxm|PCDATA||ManakaiDOM|all | html|div)*
1911          }
1912    
1913    @enDesc:    @enDesc:
1914      The <IF::AtomTextConstruct> interface provides convenience      The <IF::AtomTextConstruct> interface provides convenience
1915      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1470  IFClsDef: Line 1918  IFClsDef:
1918      interface.      interface.
1919    
1920      A Text construct contains human-readable text, usually in      A Text construct contains human-readable text, usually in
1921      small quantities.  The content of Text constructs is      small quantities.  The content of a Text construct is
1922      Language-Sensitive.      Language-Sensitive.
1923    
1924    @Attr:    @ATTR:
1925      @@Name: type      @@Name: type
1926      @@enDesc:      @@enDesc:
1927        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 1581  IFClsDef: Line 2029  IFClsDef:
2029          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);
2030  ##AtomTextConstruct  ##AtomTextConstruct
2031    
2032  IFClsDef:  IFClsConstructDef:
2033    @IFQName: AtomPersonConstruct    @IFQName: AtomPersonConstruct
2034    @ClsQName: ManakaiAtomPersonConstruct    @ClsQName: ManakaiAtomPersonConstruct
2035      @AGQName: PersonAG
2036      @AGName: person
2037      @CMQName: PersonCM
2038      @CMName: person
2039    
2040    @IFISA: AtomElement    @IFISA: AtomElement
2041    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2042    
2043      @f:implements: AtomFeature10
2044      @mv:refers: atomCommonAttributes
2045    
2046      @cm:
2047        (person-prop+)
2048    
2049    @enDesc:    @enDesc:
2050      The <IF::AtomPersonConstruct> interface provides convenience      The <IF::AtomPersonConstruct> interface provides convenience
2051      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1635  IFClsDef: Line 2093  IFClsDef:
2093      @@Name: nameElement      @@Name: nameElement
2094      @@enDesc:      @@enDesc:
2095        The <XE::atom|name> child element of the node.        The <XE::atom|name> child element of the node.
2096      @@Type: AtomElement      @@Type: AtomNameElement
2097      @@Get:      @@Get:
2098        @@@enDesc:        @@@enDesc:
2099          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 2178  IFClsDef:
2178          }__;          }__;
2179  ##AtomPersonConstruct  ##AtomPersonConstruct
2180    
2181  IFClsDef:  ECDef:
2182      @QName: person-prop
2183      @mv:elementTypeClassName: person-prop
2184      @mv:refers: atom|name
2185      @mv:refers: atom|uri
2186      @mv:refers: atom|email
2187      @mv:refers: extensionElements
2188    
2189    IFClsConstructDef:
2190    @IFQName: AtomDateConstruct    @IFQName: AtomDateConstruct
2191    @ClsQName: ManakaiAtomDateConstruct    @ClsQName: ManakaiAtomDateConstruct
2192      @AGQName: DateAG
2193      @AGName: date
2194      @CMQName: DateCM
2195      @CMName: date
2196    
2197    @IFISA: AtomElement    @IFISA: AtomElement
2198    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2199    
2200      @f:implements: AtomFeature10
2201      @mv:refers: atomCommonAttributes
2202    
2203      @cm:
2204        (dxm|PCDATA||ManakaiDOM|all)*
2205      @enImplNote:
2206        @@ddid: cm
2207        @@@:
2208          {TODO::
2209            xsd|dateTime
2210          }
2211    
2212    @enDesc:    @enDesc:
2213      The <IF::AtomDateConstruct> interface provides convenience      The <IF::AtomDateConstruct> interface provides convenience
2214      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1797  IFClsDef: Line 2279  IFClsDef:
2279        }        }
2280  ##AtomDateConstruct  ##AtomDateConstruct
2281    
2282    ECDef:
2283      @QName: feed-prop
2284      @mv:elementTypeClassName: feed-prop
2285      @mv:refers: atom|author
2286      @mv:refers: atom|category
2287      @mv:refers: atom|contributor
2288      @mv:refers: atom|generator
2289      @mv:refers: atom|icon
2290      @mv:refers: atom|id
2291      @mv:refers: atom|link
2292      @mv:refers: atom|logo
2293      @mv:refers: atom|rights
2294      @mv:refers: atom|subtitle
2295      @mv:refers: atom|title
2296      @mv:refers: atom|updated
2297      @mv:refers: extensionElements
2298    
2299  IFClsETDef:  IFClsETDef:
2300    @IFQName: AtomFeedElement    @IFQName: AtomFeedElement
2301    @ETQName: atom|feed    @ETQName: atom|feed
# Line 1806  IFClsETDef: Line 2305  IFClsETDef:
2305    @IFISA: AtomElement    @IFISA: AtomElement
2306    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2307    
2308      @f:implements: AtomFeature10
2309      @mv:refers: atomCommonAttributes
2310    
2311      @cm:
2312        (feed-prop+, atom|entry*)
2313    
2314    @enDesc:    @enDesc:
2315      The <XE::atom|feed> element is the document element      The <XE::atom|feed> element is the document element
2316      of an Atom Feed Document.      of an Atom Feed Document.
# Line 2409  IFClsETDef: Line 2914  IFClsETDef:
2914                                  (<Q::atom|>, 'updated');                                  (<Q::atom|>, 'updated');
2915            $updatede-><AS::AtomDateConstruct.value> (scalar time);            $updatede-><AS::AtomDateConstruct.value> (scalar time);
2916            $r-><M::Node.appendChild> ($updatede);            $r-><M::Node.appendChild> ($updatede);
2917    
2918              $self-><M::Node.appendChild> ($r);
2919          }__;          }__;
2920    
2921      @@Test:      @@Test:
# Line 2475  IFClsETDef: Line 2982  IFClsETDef:
2982          $test->assert_num_not_equals          $test->assert_num_not_equals
2983                   (actual_value => $updated-><AG::AtomDateConstruct.value>,                   (actual_value => $updated-><AG::AtomDateConstruct.value>,
2984                    expected_value => 0);                    expected_value => 0);
2985    
2986            $test->id ('parent');
2987            $test->assert_equals ($ent-><AG::Node.parentNode>, $feed);
2988      @@Test:      @@Test:
2989        @@@QName: AtomFeedElement.addNewEntry.2.test        @@@QName: AtomFeedElement.addNewEntry.2.test
2990        @@@enDesc:        @@@enDesc:
# Line 2493  IFClsETDef: Line 3003  IFClsETDef:
3003                                      (<Q::xml|>, 'lang'));                                      (<Q::xml|>, 'lang'));
3004  ##AtomFeedElement  ##AtomFeedElement
3005    
3006    ECDef:
3007      @QName: entry-prop
3008      @mv:elementTypeClassName: entry-prop
3009      @mv:refers: atom|author
3010      @mv:refers: atom|category
3011      @mv:refers: atom|content
3012      @mv:refers: atom|contributor
3013      @mv:refers: atom|id
3014      @mv:refers: atom|link
3015      @mv:refers: atom|published
3016      @mv:refers: atom|rights
3017      @mv:refers: atom|source
3018      @mv:refers: atom|summary
3019      @mv:refers: atom|title
3020      @mv:refers: atom|updated
3021      @mv:refers: extensionElements
3022    
3023  IFClsETDef:  IFClsETDef:
3024    @IFQName: AtomEntryElement    @IFQName: AtomEntryElement
3025    @ETQName: atom|entry    @ETQName: atom|entry
# Line 2502  IFClsETDef: Line 3029  IFClsETDef:
3029    @IFISA: AtomElement    @IFISA: AtomElement
3030    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3031    
3032      @f:implements: AtomFeature10
3033      @mv:refers: atomCommonAttributes
3034    
3035      @cm:
3036        (entry-prop+)
3037    
3038    @enDesc:    @enDesc:
3039      The <XE::atom|entry> element represents an individual      The <XE::atom|entry> element represents an individual
3040      entry, acting as a container for metadata and data      entry, acting as a container for metadata and data
# Line 3022  IFClsETDef: Line 3555  IFClsETDef:
3555  ##AtomEntryElement  ##AtomEntryElement
3556    
3557  IFClsETDef:  IFClsETDef:
3558      @IFQName: AtomIdElement
3559      @ETQName: atom|id
3560      @ETRQName: atom|id
3561      @ClsQName: ManakaiAtomIdElement
3562    
3563      @IFISA: AtomElement
3564      @ClsISA: ManakaiAtomElement
3565    
3566      @f:implements: AtomFeature10
3567      @mv:refers: atomCommonAttributes
3568      
3569      @cm: atomUriCM
3570    ##AtomIdElement
3571    
3572    IFClsETDef:
3573      @IFQName: AtomIconElement
3574      @ETQName: atom|icon
3575      @ETRQName: atom|icon
3576      @ClsQName: ManakaiAtomIconElement
3577    
3578      @IFISA: AtomElement
3579      @ClsISA: ManakaiAtomElement
3580    
3581      @f:implements: AtomFeature10
3582      @mv:refers: atomCommonAttributes
3583    
3584      @cm: atomUriCM
3585    ##AtomIconElement
3586    
3587    IFClsETDef:
3588      @IFQName: AtomNameElement
3589      @ETQName: atom|name
3590      @ETRQName: atom|name
3591      @ClsQName: ManakaiAtomNameElement
3592    
3593      @IFISA: AtomElement
3594      @ClsISA: ManakaiAtomElement
3595    
3596      @f:implements: AtomFeature10
3597      # no common attribs
3598      @cm: TextCM
3599    
3600      @mv:refers: Atom
3601    ##AtomNameElement
3602    
3603    IFClsETDef:
3604      @IFQName: AtomUriElement
3605      @ETQName: atom|uri
3606      @ETRQName: atom|uri
3607      @ClsQName: ManakaiAtomUriElement
3608    
3609      @IFISA: AtomElement
3610      @ClsISA: ManakaiAtomElement
3611    
3612      @f:implements: AtomFeature10
3613      # no common attribs
3614      @cm: atomUriCM
3615    
3616      @mv:refers: Atom
3617    ##AtomUriElement
3618    
3619    IFClsETDef:
3620      @IFQName: AtomEmailElement
3621      @ETQName: atom|email
3622      @ETRQName: atom|email
3623      @ClsQName: ManakaiAtomEmailElement
3624    
3625      @IFISA: AtomElement
3626      @ClsISA: ManakaiAtomElement
3627    
3628      @f:implements: AtomFeature10
3629      # no common attribs
3630      @cm: atomEmailAddressCM
3631    
3632      @mv:refers: Atom
3633    ##AtomEmailElement
3634    
3635    IFClsETDef:
3636      @IFQName: AtomLogoElement
3637      @ETQName: atom|logo
3638      @ETRQName: atom|logo
3639      @ClsQName: ManakaiAtomLogoElement
3640    
3641      @IFISA: AtomElement
3642      @ClsISA: ManakaiAtomElement
3643    
3644      @f:implements: AtomFeature10
3645      @mv:refers: atomCommonAttributes
3646    
3647      @cm: atomUriCM
3648    ##AtomLogoElement
3649    
3650    IFClsETDef:
3651    @IFQName: AtomContentElement    @IFQName: AtomContentElement
3652    @ETQName: atom|content    @ETQName: atom|content
3653      @ETRQName: atom|content
3654    @ClsQName: ManakaiAtomContentElement    @ClsQName: ManakaiAtomContentElement
3655    
3656    @IFISA: AtomElement    @IFISA: AtomElement
3657    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3658    
3659      @f:implements: AtomFeature10
3660      @mv:refers: atomCommonAttributes
3661    
3662      @cm:
3663        dxm|ANY||ManakaiDOM|all
3664    
3665    @enDesc:    @enDesc:
3666      The <XE::atom|content> element either contains or links to      The <XE::atom|content> element either contains or links to
3667      the content of the entry.      the content of the entry.
3668    
3669    @Attr:    @ATTR:
3670      @@Name: type      @@Name: type
3671      @@enDesc:      @@enDesc:
3672        The type of the element.        The type of the element.
# Line 3098  IFClsETDef: Line 3731  IFClsETDef:
3731          $el-><AS::AtomContentElement.type> (null);          $el-><AS::AtomContentElement.type> (null);
3732          $test->assert_null ($el-><AG::AtomContentElement.type>);          $test->assert_null ($el-><AG::AtomContentElement.type>);
3733    
3734    @Attr:    @ATTR:
3735      @@Name: src      @@Name: src
3736      @@enDesc:      @@enDesc:
3737        The source of the remote content of the element.        The source of the remote content of the element.
# Line 3272  IFClsETDef: Line 3905  IFClsETDef:
3905  IFClsETDef:  IFClsETDef:
3906    @IFQName: AtomAuthorElement    @IFQName: AtomAuthorElement
3907    @ETQName: atom|author    @ETQName: atom|author
3908      @ETRQName: atom|author
3909    @ClsQName: ManakaiAtomAuthorElement    @ClsQName: ManakaiAtomAuthorElement
3910    
3911    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3912    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3913    
3914      @f:implements: AtomFeature10
3915      @mv:refers: PersonAG
3916      @mv:elementContentModel: PersonCM
3917    
3918    @enDesc:    @enDesc:
3919      The <XE::atom|author> element is a Person construct that      The <XE::atom|author> element is a Person construct that
3920      indicates the author of the entry or feed.      indicates the author of the entry or feed.
# Line 3285  IFClsETDef: Line 3923  IFClsETDef:
3923  IFClsETDef:  IFClsETDef:
3924    @IFQName: AtomCategoryElement    @IFQName: AtomCategoryElement
3925    @ETQName: atom|category    @ETQName: atom|category
3926      @ETRQName: atom|category
3927    @ClsQName: ManakaiAtomCategoryElement    @ClsQName: ManakaiAtomCategoryElement
3928    
3929    @IFISA: AtomElement    @IFISA: AtomElement
3930    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3931    
3932      @f:implements: AtomFeature10
3933      @mv:refers: atomCommonAttributes
3934    
3935      @cm: undefinedContent
3936    
3937    @enDesc:    @enDesc:
3938      The <XE::atom|category> element conveys information abut      The <XE::atom|category> element conveys information abut
3939      a category associated with an entry or feed.      a category associated with an entry or feed.
# Line 3398  IFClsETDef: Line 4042  IFClsETDef:
4042  IFClsETDef:  IFClsETDef:
4043    @IFQName: AtomContributorElement    @IFQName: AtomContributorElement
4044    @ETQName: atom|contributor    @ETQName: atom|contributor
4045      @ETRQName: atom|contributor
4046    @ClsQName: ManakaiAtomContributorElement    @ClsQName: ManakaiAtomContributorElement
4047    
4048    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
4049    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
4050    
4051      @f:implements: AtomFeature10
4052      @mv:refers: PersonAG
4053      @mv:elementContentModel: PersonCM
4054    
4055    @enDesc:    @enDesc:
4056      The <XE::atom|contributor> element is a Person construct that      The <XE::atom|contributor> element is a Person construct that
4057      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 4061  IFClsETDef:
4061  IFClsETDef:  IFClsETDef:
4062    @IFQName: AtomGeneratorElement    @IFQName: AtomGeneratorElement
4063    @ETQName: atom|generator    @ETQName: atom|generator
4064      @ETRQName: atom|generator
4065    @ClsQName: ManakaiAtomGeneratorElement    @ClsQName: ManakaiAtomGeneratorElement
4066    
4067    @IFISA: AtomElement    @IFISA: AtomElement
4068    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4069    
4070      @f:implements: AtomFeature10
4071      @mv:refers: atomCommonAttributes
4072    
4073      @cm:
4074        (dxm|PCDATA||ManakaiDOM|all)*
4075    
4076    @enDesc:    @enDesc:
4077      The <XE::atom|generator> element identifies the agent used      The <XE::atom|generator> element identifies the agent used
4078      to generate a feed.      to generate a feed.
# Line 3492  IFClsETDef: Line 4148  IFClsETDef:
4148  IFClsETDef:  IFClsETDef:
4149    @IFQName: AtomLinkElement    @IFQName: AtomLinkElement
4150    @ETQName: atom|link    @ETQName: atom|link
4151      @ETRQName: atom|link
4152    @ClsQName: ManakaiAtomLinkElement    @ClsQName: ManakaiAtomLinkElement
4153    
4154    @IFISA: AtomElement    @IFISA: AtomElement
4155    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4156    
4157      @f:implements: AtomFeature10
4158      @mv:refers: atomCommonAttributes
4159    
4160      @cm: undefinedContent
4161    
4162    @enDesc:    @enDesc:
4163      The <XE::atom|link> element defines a reference from an entry      The <XE::atom|link> element defines a reference from an entry
4164      or feed to a Web resource.      or feed to a Web resource.
4165    
4166    @Attr:    @ATTR:
4167      @@Name: href      @@Name: href
4168      @@enDesc:      @@enDesc:
4169        The <XA::href> attribute of the element.        The <XA::href> attribute of the element.
# Line 3509  IFClsETDef: Line 4171  IFClsETDef:
4171        It <kwd:MUST> <I::reflect the URI value        It <kwd:MUST> <I::reflect the URI value
4172        of the <XA::href> attribute> of the node.        of the <XA::href> attribute> of the node.
4173      @@Type: DOMString      @@Type: DOMString
4174      @@Type: DOMURI      @@actualType: DOMURI
4175      @@Get:      @@Get:
4176        @@@nullCase:        @@@nullCase:
4177          @@@@enDesc:          @@@@enDesc:
# Line 3535  IFClsETDef: Line 4197  IFClsETDef:
4197            $given => $given,            $given => $given,
4198          }__;          }__;
4199    
4200    @Attr:    @ATTR:
4201      @@Name: rel      @@Name: rel
4202      @@enDesc:      @@enDesc:
4203        The <XA::rel> attribute of the element.        The <XA::rel> attribute of the element.
# Line 3545  IFClsETDef: Line 4207  IFClsETDef:
4207        a few exceptions.  The default value <kwd:MUST>        a few exceptions.  The default value <kwd:MUST>
4208        be <URI^DISCore|QName::rel|alternate>.        be <URI^DISCore|QName::rel|alternate>.
4209      @@Type: DOMString      @@Type: DOMString
4210        @@actualType: DOMURI
4211      @@Get:      @@Get:
4212        @@@enDesc:        @@@enDesc:
4213          If the algorithm returns a string that does not contain          If the algorithm returns a string that does not contain
# Line 3618  IFClsETDef: Line 4281  IFClsETDef:
4281          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,
4282                                <Q::rel|alternate>);                                <Q::rel|alternate>);
4283    
4284    @Attr:    @ATTR:
4285      @@Name: type      @@Name: type
4286      @@enDesc:      @@enDesc:
4287        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 3627  IFClsETDef: Line 4290  IFClsETDef:
4290        of the <XA::type> attribute> of the node.        of the <XA::type> attribute> of the node.
4291      @@Type: DOMString      @@Type: DOMString
4292      @@Get:      @@Get:
4293          @@@enDesc:
4294            {P:: If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4295                 is supported, the attribute getter <kwd:MUST> return
4296                 the string <CODE::application/atom+xml> when both of the
4297                 following conditions are met:
4298    
4299               - The attribute getter would otherwise return <DOM::null>.
4300    
4301               - The <A::AtomLinkElement.rel> attribute contains
4302                 a string value of <URI^^DISCore|QName::rel|replies>.
4303    
4304            }
4305        @@@nullCase:        @@@nullCase:
4306          @@@@enDesc:          @@@@enDesc:
4307            If the algorithm returns <DOM::null>.            If the algorithm returns <DOM::null>.
# Line 3638  IFClsETDef: Line 4313  IFClsETDef:
4313            $r => $r,            $r => $r,
4314            $defaultValue => {null},            $defaultValue => {null},
4315          }__;          }__;
4316    
4317            unless (defined $r) {
4318              __DEEP{
4319                my $rel = $self-><AG::AtomLinkElement.rel>;
4320                if (defined $rel and $rel eq <Q::rel|replies>) {
4321                  $r = q<application/atom+xml>;
4322                }
4323              }__;
4324            }
4325      @@Set:      @@Set:
4326        @@@nullCase:        @@@nullCase:
4327          @@@@enDesc:          @@@@enDesc:
# Line 3651  IFClsETDef: Line 4335  IFClsETDef:
4335            $given => $given,            $given => $given,
4336          }__;          }__;
4337    
4338    @Attr:      @@Test:
4339          @@@QName: AtomLinkElement.type.!rel.test
4340          @@@PerlDef:
4341            my $doc;
4342            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4343    
4344            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4345    
4346            $test->id ('implied');
4347            my $type0 = $el-><AG::AtomLinkElement.type>;
4348            $test->assert_null ($type0);
4349    
4350            $test->id ('explicit');
4351            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4352            my $type1 = $el-><AG::AtomLinkElement.type>;
4353            $test->assert_equals ($type1, q<application/atom+xml>);
4354    
4355            $test->id ('different');
4356            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4357            my $type2 = $el-><AG::AtomLinkElement.type>;
4358            $test->assert_equals ($type2, q<application/xhtml+xml>);
4359        @@Test:
4360          @@@QName: AtomLinkElement.type.rel!=replies.test
4361          @@@PerlDef:
4362            my $doc;
4363            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4364    
4365            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4366    
4367            $el-><AS::AtomLinkElement.rel> (<Q::rel|alternate>);
4368    
4369            $test->id ('implied');
4370            my $type0 = $el-><AG::AtomLinkElement.type>;
4371            $test->assert_null ($type0);
4372    
4373            $test->id ('explicit');
4374            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4375            my $type1 = $el-><AG::AtomLinkElement.type>;
4376            $test->assert_equals ($type1, q<application/atom+xml>);
4377    
4378            $test->id ('different');
4379            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4380            my $type2 = $el-><AG::AtomLinkElement.type>;
4381            $test->assert_equals ($type2, q<application/xhtml+xml>);
4382        @@Test:
4383          @@@QName: AtomLinkElement.type.rel=replies.test
4384          @@@PerlDef:
4385            my $doc;
4386            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4387    
4388            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4389    
4390            $el-><AS::AtomLinkElement.rel> (<Q::rel|replies>);
4391    
4392            $test->id ('implied');
4393            my $type0 = $el-><AG::AtomLinkElement.type>;
4394            $test->assert_equals ($type0, q<application/atom+xml>);
4395    
4396            $test->id ('explicit');
4397            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4398            my $type1 = $el-><AG::AtomLinkElement.type>;
4399            $test->assert_equals ($type1, q<application/atom+xml>);
4400    
4401            $test->id ('different');
4402            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4403            my $type2 = $el-><AG::AtomLinkElement.type>;
4404            $test->assert_equals ($type2, q<application/xhtml+xml>);
4405    
4406      @ATTR:
4407      @@Name: hreflang      @@Name: hreflang
4408      @@enDesc:      @@enDesc:
4409        The <XA::hreflang> attribute of the element.        The <XA::hreflang> attribute of the element.
# Line 3684  IFClsETDef: Line 4436  IFClsETDef:
4436            $given => $given,            $given => $given,
4437          }__;          }__;
4438    
4439    @Attr:    @ATTR:
4440      @@Name: title      @@Name: title
4441      @@enDesc:      @@enDesc:
4442        The <XA::title> attribute of the element.        The <XA::title> attribute of the element.
# Line 3717  IFClsETDef: Line 4469  IFClsETDef:
4469            $given => $given,            $given => $given,
4470          }__;          }__;
4471    
4472    @Attr:    @ATTR:
4473      @@Name: length      @@Name: length
4474      @@enDesc:      @@enDesc:
4475        The <XA::length> attribute of the element.        The <XA::length> attribute of the element.
# Line 3754  IFClsETDef: Line 4506  IFClsETDef:
4506  IFClsETDef:  IFClsETDef:
4507    @IFQName: AtomPublishedElement    @IFQName: AtomPublishedElement
4508    @ETQName: atom|published    @ETQName: atom|published
4509      @ETRQName: atom|published
4510    @ClsQName: ManakaiAtomPublishedElement    @ClsQName: ManakaiAtomPublishedElement
4511    
4512    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4513    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4514    
4515      @f:implements: AtomFeature10
4516      @mv:refers: DateAG
4517      @mv:elementContentModel: DateCM
4518    
4519    @enDesc:    @enDesc:
4520      The <XE::atom|published> element is a Date construct      The <XE::atom|published> element is a Date construct
4521      indicating an instant in time associated with an      indicating an instant in time associated with an
# Line 3771  IFClsETDef: Line 4528  IFClsETDef:
4528  IFClsETDef:  IFClsETDef:
4529    @IFQName: AtomRightsElement    @IFQName: AtomRightsElement
4530    @ETQName: atom|rights    @ETQName: atom|rights
4531      @ETRQName: atom|rights
4532    @ClsQName: ManakaiAtomRightsElement    @ClsQName: ManakaiAtomRightsElement
4533    
4534    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4535    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4536    
4537      @f:implements: AtomFeature10
4538      @mv:refers: TextAG
4539      @mv:elementContentModel: TextCM
4540    
4541    @enDesc:    @enDesc:
4542      The <XE::atom|rights> element is a Text construct      The <XE::atom|rights> element is a Text construct
4543      that conveys information about rights held in and      that conveys information about rights held in and
4544      over an entry or feed.      over an entry or feed.
4545  ##AtomRightsElement  ##AtomRightsElement
4546    
4547    ECDef:
4548      @QName: source-prop
4549      @mv:elementTypeClassName: source-prop
4550      @mv:refers: atom|author
4551      @mv:refers: atom|category
4552      @mv:refers: atom|contributor
4553      @mv:refers: atom|generator
4554      @mv:refers: atom|icon
4555      @mv:refers: atom|id
4556      @mv:refers: atom|link
4557      @mv:refers: atom|logo
4558      @mv:refers: atom|rights
4559      @mv:refers: atom|subtitle
4560      @mv:refers: atom|title
4561      @mv:refers: atom|updated
4562      @mv:refers: extensionElements
4563    
4564  IFClsETDef:  IFClsETDef:
4565    @IFQName: AtomSourceElement    @IFQName: AtomSourceElement
4566    @ETQName: atom|source    @ETQName: atom|source
4567      @ETRQName: atom|source
4568    @ClsQName: ManakaiAtomSourceElement    @ClsQName: ManakaiAtomSourceElement
4569    
4570    @IFISA: AtomElement    @IFISA: AtomElement
4571    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4572    
4573      @f:implements: AtomFeature10
4574      @mv:refers: atomCommonAttributes
4575    
4576      @cm:
4577        (source-prop*)
4578    
4579    @Attr:    @Attr:
4580      @@Name: authorElements      @@Name: authorElements
4581      @@enDesc:      @@enDesc:
# Line 3994  IFClsETDef: Line 4780  IFClsETDef:
4780  IFClsETDef:  IFClsETDef:
4781    @IFQName: AtomSubtitleElement    @IFQName: AtomSubtitleElement
4782    @ETQName: atom|subtitle    @ETQName: atom|subtitle
4783      @ETRQName: atom|subtitle
4784    @ClsQName: ManakaiAtomSubtitleElement    @ClsQName: ManakaiAtomSubtitleElement
4785    
4786    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4787    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4788    
4789      @f:implements: AtomFeature10
4790      @mv:refers: TextAG
4791      @mv:elementContentModel: TextCM
4792    
4793    @enDesc:    @enDesc:
4794      The <XE::atom|subtitle> element is a Text construct      The <XE::atom|subtitle> element is a Text construct
4795      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 4798  IFClsETDef:
4798  IFClsETDef:  IFClsETDef:
4799    @IFQName: AtomSummaryElement    @IFQName: AtomSummaryElement
4800    @ETQName: atom|summary    @ETQName: atom|summary
4801      @ETRQName: atom|summary
4802    @ClsQName: ManakaiAtomSummaryElement    @ClsQName: ManakaiAtomSummaryElement
4803    
4804    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4805    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4806    
4807      @f:implements: AtomFeature10
4808      @mv:refers: TextAG
4809      @mv:elementContentModel: TextCM
4810    
4811    @enDesc:    @enDesc:
4812      The <XE::atom|summary> element is a Text construct      The <XE::atom|summary> element is a Text construct
4813      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 4816  IFClsETDef:
4816  IFClsETDef:  IFClsETDef:
4817    @IFQName: AtomTitleElement    @IFQName: AtomTitleElement
4818    @ETQName: atom|title    @ETQName: atom|title
4819      @ETRQName: atom|title
4820    @ClsQName: ManakaiAtomTitleElement    @ClsQName: ManakaiAtomTitleElement
4821    
4822    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4823    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4824    
4825      @f:implements: AtomFeature10
4826      @mv:refers: TextAG
4827      @mv:elementContentModel: TextCM
4828    
4829    @enDesc:    @enDesc:
4830      The <XE::atom|title> element is a Text construct      The <XE::atom|title> element is a Text construct
4831      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 4834  IFClsETDef:
4834  IFClsETDef:  IFClsETDef:
4835    @IFQName: AtomUpdatedElement    @IFQName: AtomUpdatedElement
4836    @ETQName: atom|updated    @ETQName: atom|updated
4837      @ETRQName: atom|updated
4838    @ClsQName: ManakaiAtomUpdatedElement    @ClsQName: ManakaiAtomUpdatedElement
4839    
4840    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4841    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4842    
4843      @f:implements: AtomFeature10
4844      @mv:refers: DateAG
4845      @mv:elementContentModel: DateCM
4846    
4847    @enDesc:    @enDesc:
4848      The <XE::atom|updated> element is a Date construct      The <XE::atom|updated> element is a Date construct
4849      indicating the most recent instant in time when an      indicating the most recent instant in time when an
# Line 4127  ElementTypeBinding: Line 4933  ElementTypeBinding:
4933      @@For: ManakaiDOM|DOM3      @@For: ManakaiDOM|DOM3
4934      @@For: =ManakaiDOM|all      @@For: =ManakaiDOM|all
4935      @@Type: idl|boolean||ManakaiDOM|all      @@Type: idl|boolean||ManakaiDOM|all
4936    
4937    ECDef:
4938      @QName: simpleExtensionElements
4939      @mv:elementTypeClassName: simple.extra
4940      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4941    
4942    ECDef:
4943      @QName: structuredExtensionElements
4944      @mv:elementTypeClassName: structured.extra
4945      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4946    
4947    EMDef:
4948      @QName: extensionElements
4949      @mv:elementTypeClassName: extra
4950      @mv:refers: simpleExtensionElements
4951      @mv:refers: structuredExtensionElements
4952      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4953    
4954    AGDef:
4955      @QName: undefinedAttributes
4956      @mv:attributeTypeGroupName: common.extra
4957    
4958    ResourceDef:
4959      @QName: undefinedContent
4960      @mv:elementContentModelName: undefined
4961      @For: =ManakaiDOM|ManakaiDOMLatest
4962      @DISCore:resourceType: mv|ElementContentModel
4963      @cm: dxm|ANY||ManakaiDOM|all
4964      @enImplNote:
4965        (text | anyForeignElement)*
4966    
4967    ## -- Atom Threading Extension [RFC 4685]
4968    
4969    IFClsDef:
4970      @IFQName: AtomEntryElementThread
4971      @ClsQName: ManakaiAtomEntryElementThread
4972    
4973      @ClsISA: ManakaiAtomEntryElement
4974    
4975      @f:implements: AtomThreadingFeature10
4976    
4977      @enDesc:
4978        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4979        is supported, any <IF::Element> whose element type
4980        is <XE::atom|entry> <kwd:MUST> implement the <IF::AtomEntryElementThread>
4981        interface in addition to other appropriate interfaces.
4982    
4983      @Test:
4984        @@QName: AtomEntryElementThread.1.test
4985        @@PerlDef:
4986          my $doc;
4987          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4988    
4989          my $el = $doc->create_element_ns (<Q::atom|>, 'entry');
4990    
4991          $test->id ('interface');
4992          $test->assert_isa ($el, <IFName::AtomEntryElementThread>);
4993    
4994          $test->id ('feature');
4995          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
4996    
4997      @Attr:
4998        @@Name: threadInReplyToElements
4999        @@enDesc:
5000          A static list of <XE::thr|in-reply-to> child elements of the node.
5001        @@Type: StaticNodeList
5002        @@Get:
5003          @@@enDesc:
5004            It <kwd:MUST> <I::return a <XE::thr|in-reply-to> child element list>
5005            of the node.
5006          @@@PerlDef:
5007            __CODE{returnChildElementList::
5008              $node => $self,
5009              $namespaceURI => {<Q::thr|>},
5010              $localName => 'in-reply-to',
5011              $r => $r,
5012            }__;
5013    ##AtomEntryElementThread
5014    
5015    IFClsETDef:
5016      @IFQName: AtomThreadInReplyToElement
5017      @ETQName: thr|in-reply-to
5018      @ETRQName: thr|in-reply-to
5019      @ClsQName: ManakaiAtomThreadInReplyToElement
5020    
5021      @IFISA: AtomDateConstruct
5022      @ClsISA: ManakaiAtomDateConstruct
5023    
5024      @f:implements: AtomThreadingFeature10
5025      @mv:refers: atomCommonAttributes
5026    
5027      @cm: undefinedContent
5028    
5029      @enDesc:
5030        The <XE::thr|in-reply-to> element is used to indicate
5031        that an entry is a response to another resource.
5032    
5033        If the entry is a response to multiple resources,
5034        additional <XE::thr|in-reply-to> element <kwd:MAY>
5035        be used.
5036    
5037        RFC 4685 assigns no significance to the order in which
5038        multiple <XE::thr|in-reply-to> element appear within
5039        an entry.
5040    
5041      @Test:
5042        @@QName: AtomThreadInReplyToElement.1.test
5043        @@PerlDef:
5044          my $doc;
5045          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5046    
5047          my $el = $doc->create_element_ns (<Q::thr|>, 'in-reply-to');
5048    
5049          $test->id ('interface');
5050          $test->assert_isa ($el, <IFName::AtomThreadInReplyToElement>);
5051    
5052          $test->id ('feature');
5053          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5054    
5055      @ATTR:
5056        @@Name: ref
5057        @@enDesc:
5058          The <XA::ref> attribute of the element.
5059    
5060          It <kwd:MUST> <I::reflect the URI value
5061          of the <XA::ref> attribute> of the node.
5062    
5063          The <XA::ref> attribute specifies the persistent,
5064          universally unique identifier of the resource being
5065          responded to.  The value <kwd:MUST> conform to
5066          the same construction and comparison rules as the
5067          value of the <XE::atom|id> element.  Though the IRI
5068          might use a dereferenceable scheme, processors <kwd:MUST-NOT>
5069          assume that it can be dereferenced.
5070    
5071          The <XE::thr|in-reply-to> element <kwd:MUST> contain
5072          a <XA::ref> attribute identifying the resource that
5073          is being respnoded to.
5074    
5075          If the resource being responded to does not have a persistent,
5076          universally unique identifier, the publisher <kwd:MUST> assign an
5077          identifier that satisfies all the considerations in Section 4.2.6 of
5078          RFC 4287 for use as the value of the <XA::ref> attribute.
5079          In that case, if a representation of the resource can be retrieved
5080          from an IRI that can be used as a valid atom:id value, then this IRI
5081          <kwd:SHOULD> be used as the value of both the <XA::ref> and
5082          <XA::href> attributes.
5083        @@Type: DOMString
5084        @@actualType: DOMURI
5085        @@Get:
5086          @@@nullCase:
5087            @@@@enDesc:
5088              If the algorithm returns <DOM::null>.
5089          @@@PerlDef:
5090            __CODE{getReflectAttrURIValue::
5091              $node => $self,
5092              $namespaceURI => {null},
5093              $localName => 'ref',
5094              $r => $r,
5095              $defaultValue => {null},
5096            }__;
5097        @@Set:
5098          @@@nullCase:
5099            @@@@enDesc:
5100              Removes the attribute.
5101          @@@NodeReadOnlyError:
5102          @@@PerlDef:
5103            __CODE{setReflectAttrURIValue::
5104              $node => $self,
5105              $namespaceURI => {null},
5106              $localName => 'ref',
5107              $given => $given,
5108            }__;
5109            
5110      @ATTR:
5111        @@Name: source
5112        @@enDesc:
5113          The <XA::source> attribute of the element.
5114    
5115          It <kwd:MUST> <I::reflect the URI value
5116          of the <XA::source> attribute> of the node.
5117    
5118          The <XA::source> attribute <kwd:MAY> be used to specify the IRI
5119          of an Atom Feed or Entry Document containing an
5120          <XE::atom|entry> with an <XE::atom|id> value equal to the
5121          value of the <XA::ref> attribute.  The IRI specified <kwd:MUST>
5122          be dereferenceable.
5123        @@Type: DOMString
5124        @@actualType: DOMURI
5125        @@Get:
5126          @@@nullCase:
5127            @@@@enDesc:
5128              If the algorithm returns <DOM::null>.
5129          @@@PerlDef:
5130            __CODE{getReflectAttrURIValue::
5131              $node => $self,
5132              $namespaceURI => {null},
5133              $localName => 'source',
5134              $r => $r,
5135              $defaultValue => {null},
5136            }__;
5137        @@Set:
5138          @@@nullCase:
5139            @@@@enDesc:
5140              Removes the attribute.
5141          @@@NodeReadOnlyError:
5142          @@@PerlDef:
5143            __CODE{setReflectAttrURIValue::
5144              $node => $self,
5145              $namespaceURI => {null},
5146              $localName => 'source',
5147              $given => $given,
5148            }__;
5149            
5150      @ATTR:
5151        @@Name: href
5152        @@enDesc:
5153          The <XA::href> attribute of the element.
5154    
5155          It <kwd:MUST> <I::reflect the URI value
5156          of the <XA::href> attribute> of the node.
5157    
5158          The <XA::href> attribute specifies an IRI that may be used
5159          to retrieve a representation of the resource being
5160          responded to.  The IRI specified <kwd:MUST> be
5161          dereferenceable.
5162        @@Type: DOMString
5163        @@actualType: DOMURI
5164        @@Get:
5165          @@@nullCase:
5166            @@@@enDesc:
5167              If the algorithm returns <DOM::null>.
5168          @@@PerlDef:
5169            __CODE{getReflectAttrURIValue::
5170              $node => $self,
5171              $namespaceURI => {null},
5172              $localName => 'href',
5173              $r => $r,
5174              $defaultValue => {null},
5175            }__;
5176        @@Set:
5177          @@@nullCase:
5178            @@@@enDesc:
5179              Removes the attribute.
5180          @@@NodeReadOnlyError:
5181          @@@PerlDef:
5182            __CODE{setReflectAttrURIValue::
5183              $node => $self,
5184              $namespaceURI => {null},
5185              $localName => 'href',
5186              $given => $given,
5187            }__;
5188      
5189      @ATTR:
5190        @@Name: type
5191        @@enDesc:
5192          The <XA::type> attribute of the element.
5193    
5194          It <kwd:MUST> <I::reflect the string value
5195          of the <XA::type> attribute> of the node.
5196    
5197          The <XA::type> attribute <kwd:MAY> be used to provide
5198          a hint to the client about the media type of the
5199          resource identified by the <XA::href> attribute.
5200          The <XA::type> attribute is only meaningful if a
5201          corresponding <XA::href> attribute is also provided.
5202        @@Type: DOMString
5203        @@Get:
5204          @@@nullCase:
5205            @@@@enDesc:
5206              If the algorithm returns <DOM::null>.
5207          @@@PerlDef:
5208            __CODE{getReflectAttrStringValue::
5209              $node => $self,
5210              $namespaceURI => {null},
5211              $localName => 'type',
5212              $r => $r,
5213              $defaultValue => {null},
5214            }__;
5215        @@Set:
5216          @@@nullCase:
5217            @@@@enDesc:
5218              Removes the attribute.
5219          @@@NodeReadOnlyError:
5220          @@@PerlDef:
5221            __CODE{setReflectAttrStringValue::
5222              $node => $self,
5223              $namespaceURI => {null},
5224              $localName => 'type',
5225              $given => $given,
5226            }__;
5227    ##AtomThreadInReplyToElement
5228    
5229    IFClsDef:
5230      @IFQName: AtomLinkElementThread
5231      @ClsQName: ManakaiAtomLinkElementThread
5232    
5233      @ClsISA: ManakaiAtomLinkElement
5234    
5235      @f:implements: AtomThreadingFeature10
5236    
5237      @enDesc:
5238        An <XE::atom|link> element with a <XA::rel> attribute value of
5239        <XML::replies> may be used to reference a resource where responses
5240        to an entry may be found.  If the <XA::type> attribute of the
5241        <XE::atom|link> is omitted, its value is assumed to be
5242        <XML::application/atom+xml>.
5243    
5244        A <XML::replies> link appearing as a child of the <XE::atom|feed>
5245        or <XE::atom|source> element indicates that the referenced
5246        resource likely contains responses to any of that
5247        feed's entries.  A <XML::replies>
5248        link appearing as a child of an <XE::atom|entry> element
5249        indicates that the linked resource likely contains responses
5250        specific to that entry.
5251    
5252        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
5253        is supported, any <IF::Element> whose element type
5254        is <XE::atom|link> <kwd:MUST> implement the <IF::AtomLinkElementThread>
5255        interface in addition to other appropriate interfaces.
5256    
5257      @Test:
5258        @@QName: AtomLinkElementThread.1.test
5259        @@PerlDef:
5260          my $doc;
5261          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5262    
5263          my $el = $doc->create_element_ns (<Q::atom|>, 'link');
5264    
5265          $test->id ('interface');
5266          $test->assert_isa ($el, <IFName::AtomLinkElementThread>);
5267    
5268          $test->id ('feature');
5269          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5270    
5271      @ATTR:
5272        @@Name: threadCount
5273        @@enDesc:
5274          The <XA::thr|count> attribute of the element.
5275    
5276          It <kwd:MUST> <I::reflect the non-negative integer value
5277          of the <XA::thr|count> attribute> of the node.
5278    
5279          An <XE::atom|link> element using the <XML::replies>
5280          <XA::rel> attribute value <kwd:MAY> contain
5281          a <XA::thr|count> attribute whose value is a
5282          non-negative integer that provides a hint to clients
5283          as to the total number of replies contained by the
5284          linked resource.  The value is advisory and
5285          may not accurately reflect the actual number of replies.
5286        @@Type: idl|long||ManakaiDOM|all
5287        @@Get:
5288          @@@PerlDef:
5289            __CODE{getReflectAttrNonNegativeIntegerValue::
5290              $node => $self,
5291              $namespaceURI => {<Q::thr|>},
5292              $localName => 'count',
5293              $r => $r,
5294              $defaultValue => {null},
5295            }__;
5296        @@Set:
5297          @@@NodeReadOnlyError:
5298          @@@PerlDef:
5299            __CODE{setReflectAttrNonNegativeIntegerValue::
5300              $node => $self,
5301              $namespaceURI => {<Q::thr|>},
5302              $localName => 'count',
5303              $given => $given,
5304            }__;
5305    
5306        @@Test:
5307          @@@QName: AtomLinkElementThread.threadCount.1.test
5308          @@@PerlDef:
5309            my $doc;
5310            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5311    
5312            my $link = $doc->create_element_ns (<Q::atom|>, 'link');
5313    
5314            $test->id ('default');
5315            $test->assert_num_equals
5316                     (expected_value => -1,
5317                      actual_value =>
5318                        $link-><AG::AtomLinkElementThread.threadCount>);
5319    
5320            $test->id ('zero');
5321            $link-><AS::AtomLinkElementThread.threadCount> (0);
5322            $test->assert_num_equals
5323                     (expected_value => 0,
5324                      actual_value =>
5325                        $link-><AG::AtomLinkElementThread.threadCount>);
5326            $test->id ('zero.attr');
5327            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '0');
5328    
5329            $test->id ('one');
5330            $link-><AS::AtomLinkElementThread.threadCount> (1);
5331            $test->assert_num_equals
5332                     (expected_value => 1,
5333                      actual_value =>
5334                        $link-><AG::AtomLinkElementThread.threadCount>);
5335            $test->id ('one.attr');
5336            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '1');
5337    
5338            $test->id ('10000');
5339            $link-><AS::AtomLinkElementThread.threadCount> (10000);
5340            $test->assert_num_equals
5341                     (expected_value => 10000,
5342                      actual_value =>
5343                        $link-><AG::AtomLinkElementThread.threadCount>);
5344            $test->id ('10000.attr');
5345            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'),
5346                                  '10000');
5347    
5348            $test->id ('+10000');
5349            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '+10000');
5350            $test->assert_num_equals
5351                     (expected_value => 10000,
5352                      actual_value =>
5353                        $link-><AG::AtomLinkElementThread.threadCount>);
5354    
5355            $test->id ('010000');
5356            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '010000');
5357            $test->assert_num_equals
5358                     (expected_value => 10000,
5359                      actual_value =>
5360                        $link-><AG::AtomLinkElementThread.threadCount>);
5361    
5362            $test->id ('-100');
5363            $link-><AS::AtomLinkElementThread.threadCount> (-100);
5364            $test->assert_num_equals
5365                     (expected_value => -1,
5366                      actual_value =>
5367                        $link-><AG::AtomLinkElementThread.threadCount>);
5368            $test->id ('-100.attr');
5369            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5370    
5371            $test->id ('120a');
5372            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '120a');
5373            $test->assert_num_equals
5374                     (expected_value => -1,
5375                      actual_value =>
5376                        $link-><AG::AtomLinkElementThread.threadCount>);
5377    
5378            $test->id ('-1');
5379            $link-><AS::AtomLinkElementThread.threadCount> (-1);
5380            $test->assert_num_equals
5381                     (expected_value => -1,
5382                      actual_value =>
5383                        $link-><AG::AtomLinkElementThread.threadCount>);
5384            $test->id ('-1.attr');
5385            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5386    
5387      @enImplNote:
5388        @@ddid: updated
5389        @@@:
5390          {TODO::
5391            <XA::thr|updated> attribute
5392          }
5393    ##AtomLinkElementThread
5394    
5395    enImplNote:
5396      @@ddid: total
5397      @@@:
5398        {TODO::
5399          <XE::thr|total>
5400        }
5401    
5402    enImplNote:
5403      @@ddid: threaddtd
5404      @@@:
5405        {TODO::
5406          DTD impl for threading
5407        }

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24