/[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.14 by wakaba, Tue Oct 3 09:37:36 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    @dx:    @dx:
81      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/DOMException#
82      @dxm:
83        http://suika.fam.cx/~wakaba/archive/2004/dis/XML#
84    @ecore:    @ecore:
85      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/      http://suika.fam.cx/~wakaba/archive/2005/manakai/Util/Error/Core/
86    @f:    @f:
# Line 94  Namespace: Line 101  Namespace:
101      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#
102    @Markup:    @Markup:
103      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/  
104    @MDOM:    @MDOM:
105      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.      http://suika.fam.cx/~wakaba/archive/2004/8/18/manakai-dom#ManakaiDOM.
106    @MDOMX:    @MDOMX:
107      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#      http://suika.fam.cx/~wakaba/archive/2004/8/4/manakai-dom-exception#
108    @dlp:    @mv:
109      http://suika.fam.cx/~wakaba/archive/2004/dis/Perl#      http://suika.fam.cx/www/2006/05/mv/
110    @rel:    @rel:
111      http://www.iana.org/assignments/relation/      http://www.iana.org/assignments/relation/
112    @s:    @s:
# Line 114  Namespace: Line 119  Namespace:
119      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/Element/
120    @test:    @test:
121      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#      http://suika.fam.cx/~wakaba/archive/2004/dis/Test#
122      @thr:
123        http://purl.org/syndication/thread/1.0
124    @tx:    @tx:
125      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/      http://suika.fam.cx/~wakaba/archive/2005/manakai/DOM/XML/
126    @urigen:    @urigen:
# Line 160  ElementTypeBinding: Line 167  ElementTypeBinding:
167      @@ForCheck: !=ManakaiDOM|ManakaiDOM      @@ForCheck: !=ManakaiDOM|ManakaiDOM
168    
169  ElementTypeBinding:  ElementTypeBinding:
170      @Name: ATTR
171      @ElementType:
172        dis:ResourceDef
173      @ShadowContent:
174        @@DISCore:resourceType:
175          @@@@: DISLang|Attribute
176          @@@ForCheck: ManakaiDOM|ForIF
177        @@DISCore:resourceType:
178          @@@@: DISLang|Attribute
179          @@@ForCheck: ManakaiDOM|ForClass
180        @@DISCore:resourceType:
181          @@@@: mv|AttributeType
182          @@@ForCheck: s|ForML
183        @@ForCheck: !=ManakaiDOM|ManakaiDOM
184    
185    ElementTypeBinding:
186    @Name: Get    @Name: Get
187    @ElementType:    @ElementType:
188      dis:ResourceDef      dis:ResourceDef
# Line 249  ElementTypeBinding: Line 272  ElementTypeBinding:
272        @@@@: s|ElementType        @@@@: s|ElementType
273        @@@ForCheck: s|ForML        @@@ForCheck: s|ForML
274    
     @@f:implements: AtomFeature10  
   
275  ElementTypeBinding:  ElementTypeBinding:
276    @Name: IFClsDef    @Name: IFClsDef
277    @ElementType:    @ElementType:
# Line 279  ElementTypeBinding: Line 300  ElementTypeBinding:
300        @@@ContentType: DISCore|TFPQNames        @@@ContentType: DISCore|TFPQNames
301        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest        @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest
302    
303      @@f:implements: AtomFeature10  ElementTypeBinding:
304      @Name: IFClsConstructDef
305      @ElementType:
306        dis:ResourceDef
307      @ShadowContent:
308        @@DISCore:resourceType:
309          @@@@: dis|MultipleResource
310          @@@ForCheck:
311            !ManakaiDOM|ForIF !ManakaiDOM|ForClass !s|ForML !mv|ForCM !mv|ForAG
312        @@resourceFor: ManakaiDOM|ForIF
313        @@resourceFor: ManakaiDOM|ForClass
314        @@resourceFor: mv|ForCM
315        @@resourceFor: mv|ForAG
316        @@For: ManakaiDOM|ManakaiDOM
317    
318        @@DISCore:resourceType:
319          @@@@: DISLang|Interface
320          @@@ForCheck: ManakaiDOM|ForIF
321    
322        @@DISCore:resourceType:
323          @@@@: DISLang|Class
324          @@@ForCheck: ManakaiDOM|ForClass
325        @@Implement:
326          @@@@: ||ManakaiDOM|ManakaiDOM||ManakaiDOM|ForIF
327          @@@ContentType: DISCore|TFPQNames
328          @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOM
329        @@Implement:
330          @@@@: ||ManakaiDOM|ManakaiDOMLatest||ManakaiDOM|ForIF
331          @@@ContentType: DISCore|TFPQNames
332          @@@ForCheck: ManakaiDOM|ForClass ManakaiDOM|ManakaiDOMLatest
333    
334        @@DISCore:resourceType:
335          @@@@: mv|AttributeTypeGroup
336          @@@ForCheck: mv|ForAG
337    
338        @@DISCore:resourceType:
339          @@@@: mv|ElementContentModel
340          @@@ForCheck: mv|ForCM
341    
342    
343  ElementTypeBinding:  ElementTypeBinding:
344    @Name: IFQName    @Name: IFQName
# Line 311  ElementTypeBinding: Line 370  ElementTypeBinding:
370      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
371    
372  ElementTypeBinding:  ElementTypeBinding:
373      @Name: CMQName
374      @ElementType:
375        dis:QName
376      @ShadowContent:
377        @@ForCheck: mv|ForCM
378    
379    ElementTypeBinding:
380      @Name: CMName
381      @ElementType:
382        mv:elementContentModelName
383      @ShadowContent:
384        @@ForCheck: mv|ForCM
385    
386    ElementTypeBinding:
387      @Name: AGQName
388      @ElementType:
389        dis:QName
390      @ShadowContent:
391        @@ForCheck: mv|ForAG
392    
393    ElementTypeBinding:
394      @Name: AGName
395      @ElementType:
396        mv:attributeTypeGroupName
397      @ShadowContent:
398        @@ForCheck: mv|ForAG
399    
400    ElementTypeBinding:
401    @Name: IFISA    @Name: IFISA
402    @ElementType:    @ElementType:
403      dis:ISA      dis:ISA
# Line 413  ElementTypeBinding: Line 500  ElementTypeBinding:
500      @@lang:en      @@lang:en
501    
502  ElementTypeBinding:  ElementTypeBinding:
503      @Name: enLN
504      @ElementType:
505        mv:longName
506      @ShadowContent:
507        @@lang:en
508    
509    ElementTypeBinding:
510    @Name: TrueCase    @Name: TrueCase
511    @ElementType:    @ElementType:
512      dis:ResourceDef      dis:ResourceDef
# Line 471  FeatureDef: Line 565  FeatureDef:
565      @@enDesc:      @@enDesc:
566        The Atom DOM, version 1.0.        The Atom DOM, version 1.0.
567    
568    FeatureDef:
569      @featureQName: fe|AtomThreading
570      @QName: AtomThreadingFeature
571      @FeatureVerDef:
572        @@QName: AtomThreadingFeature10
573        @@Version: 1.0
574        @@f:instanceOf: AtomThreadingFeature
575        @@f:requires: fe|AtomFeature10
576        @@enDesc:
577          The Atom Threading Extension DOM, version 1.0.
578    
579    ## -- Modules
580    
581    ModuleSetDef:
582      @QName: Atom
583      @enLN: Atom
584      @mv:version: 1.0
585      @mv:contains: AtomDatatypes
586      @mv:contains: AtomProperties
587      @mv:contains: AtomEntry
588      @mv:contains: AtomFeed
589      @mv:contains: AtomQName
590    
591      @mv:targetNamespace: atom|
592      @mv:defaultNamespacePrefix: atom
593      @mv:systemIdentifierBaseURI: \
594    
595    ModuleDef:
596      @QName: AtomFeed
597      @mv:id: feed
598      @enLN: Feed
599      @mv:contains: feed-prop
600      @mv:contains: atom|feed
601    
602    ModuleDef:
603      @QName: AtomEntry
604      @mv:id: entry
605      @enLN: Entry
606      @mv:contains: entry-prop
607      @mv:contains: atom|entry
608    
609    ModuleDef:
610      @QName: AtomProperties
611      @mv:id: props
612      @enLN: Properties
613      @mv:contains: atom|content
614      @mv:contains: atom|contributor
615      @mv:contains: atom|category
616      @mv:contains: atom|generator
617      @mv:contains: atom|link
618      @mv:contains: atom|author
619      @mv:contains: atom|published
620      @mv:contains: atom|updated
621      @mv:contains: atom|icon
622      @mv:contains: atom|id
623      @mv:contains: atom|logo
624      @mv:contains: atom|rights
625      @mv:contains: atom|subtitle
626      @mv:contains: atom|summary
627      @mv:contains: atom|title
628      @mv:contains: source-prop
629      @mv:contains: atom|source
630    
631    ModuleDef:
632      @QName: AtomDatatypes
633      @mv:id: datatypes
634      @enLN: Datatypes
635    
636      @mv:contains: atomNCName
637      @mv:contains: atomMediaType
638      @mv:contains: atomLanguageTag
639      @mv:contains: atomUri
640      @mv:contains: atomUriCM
641      @mv:contains: atomEmailAddress
642      @mv:contains: atomEmailAddressCM
643    
644      @mv:contains: undefinedAttributes
645      @mv:contains: undefinedContent
646      @mv:contains: atomCommonAttributes
647    
648      @mv:contains: simpleExtensionElements
649      @mv:contains: structuredExtensionElements
650      @mv:contains: extensionElements
651    
652      @mv:contains: TextAG
653      @mv:contains: TextCM
654    
655      @mv:contains: atom|name
656      @mv:contains: atom|email
657      @mv:contains: atom|uri
658      @mv:contains: PersonAG
659      @mv:contains: person-prop
660      @mv:contains: PersonCM
661    
662      @mv:contains: DateAG
663      @mv:contains: DateCM
664    
665    ResourceDef:
666      @QName: AtomQName
667      @enLN: Qualified Names
668      @mv:id: qname
669      @For: =ManakaiDOM|ManakaiDOMLatest
670      @DISCore:resourceType: mv|XMLDTDQNameModule
671    
672      @mv:contains: Atom
673    
674    ResourceDef:
675      @QName: Atom10
676      @enLN: Atom 1.0
677      @mv:id: atom10
678      @For: =ManakaiDOM|ManakaiDOMLatest
679      @DISCore:resourceType: mv|XMLDTDDriver
680    
681      @mv:refers: Atom
682    
683      @mv:refers: AtomQName
684      @mv:refers: AtomDatatypes
685      @mv:refers: AtomProperties
686      @mv:refers: AtomEntry
687      @mv:refers: AtomFeed
688    
689    ElementTypeBinding:
690      @Name: ModuleSetDef
691      @ElementType:
692        dis:ResourceDef
693      @ShadowContent:
694        @@DISCore:resourceType: mv|XMLDTDModuleSet
695        @@For: =ManakaiDOM|ManakaiDOMLatest
696    
697    ElementTypeBinding:
698      @Name: ModuleDef
699      @ElementType:
700        dis:ResourceDef
701      @ShadowContent:
702        @@DISCore:resourceType: mv|XMLDTDModule
703        @@For: =ManakaiDOM|ManakaiDOMLatest
704    
705  ## -- Implementation  ## -- Implementation
706    
707  IFClsDef:  IFClsDef:
# Line 485  IFClsDef: Line 716  IFClsDef:
716      methods to create Atom documents.      methods to create Atom documents.
717    
718    @f:provides: AtomFeature10    @f:provides: AtomFeature10
719      @f:implements: AtomFeature10
720    
721    @Test:    @Test:
722      @@QName: AtomImplementation.interface.test      @@QName: AtomImplementation.interface.test
# 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:
# Line 1298  IFClsDef: Line 1622  IFClsDef:
1622    @IFISA: Document    @IFISA: Document
1623    @ClsISA: td|ManakaiDOMDocument    @ClsISA: td|ManakaiDOMDocument
1624    
1625      @f:implements: AtomFeature10
1626    @s:rootElementType: AnyAtomElement||ManakaiDOM|all    @s:rootElementType: AnyAtomElement||ManakaiDOM|all
1627    
1628    @enDesc:    @enDesc:
# Line 1329  IFClsDef: Line 1654  IFClsDef:
1654    @IFISA: AtomDocument    @IFISA: AtomDocument
1655    @ClsISA: ManakaiAtomDocument    @ClsISA: ManakaiAtomDocument
1656    
1657      @f:implements: AtomFeature10
1658    @s:rootElementType:    @s:rootElementType:
1659      @@@: atom|feed      @@@: atom|feed
1660      @@DISCore:stopISARecursive: 1      @@DISCore:stopISARecursive: 1
# Line 1366  IFClsDef: Line 1692  IFClsDef:
1692    @IFISA: AtomDocument    @IFISA: AtomDocument
1693    @ClsISA: ManakaiAtomDocument    @ClsISA: ManakaiAtomDocument
1694    
1695      @f:implements: AtomFeature10
1696    @s:rootElementType:    @s:rootElementType:
1697      @@@: atom|entry      @@@: atom|entry
1698      @@DISCore:stopISARecursive: 1      @@DISCore:stopISARecursive: 1
# Line 1397  IFClsDef: Line 1724  IFClsDef:
1724        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);        $test->assert_isa ($doc, <IFName::AtomEntryDocument>);
1725  ##AtomEntryDocument  ##AtomEntryDocument
1726    
1727    AGDef:
1728      @QName: atomCommonAttributes
1729      @enFN: common attributes
1730      @mv:attributeTypeGroupName: common
1731    
1732      @mv:refers: Atom
1733      
1734      @ATDef:
1735        @@mv:attributeTypeName: xml|base
1736        @@mv:attributeValueType: atomUri
1737    
1738      @ATDef:
1739        @@mv:attributeTypeName: xml|lang
1740        @@mv:attributeValueType: atomLanguageTag
1741    
1742      @mv:refers: undefinedAttributes
1743    ##atomCommonAttributes
1744    
1745    STDef:
1746      @QName: atomNCName
1747      @mv:datatypeEntityName: NCName
1748      #subsetOf: xsd|string
1749      #minLength, pattern
1750    
1751    STDef:
1752      @QName: atomMediaType
1753      @mv:datatypeEntityName: MediaType
1754      #subsetOf xsd|string
1755      # pattern
1756    
1757    STDef:
1758      @QName: atomLanguageTag
1759      @mv:datatypeEntityName: LangaugeTag
1760      #subsetOf: xsd|string
1761      #pattern
1762    
1763    STDef:
1764      @QName: atomUri
1765      @mv:datatypeEntityName: URI
1766      #aliasfor text
1767    STCDef:
1768      @QName: atomUriCM
1769      @mv:elementContentModelName: URI
1770      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1771    
1772    STDef:
1773      @QName: atomEmailAddress
1774      @mv:datatypeEntityName: EmailAddress
1775      #subsetOf xsd|string
1776      #pattern
1777    STCDef:
1778      @QName: atomEmailAddressCM
1779      @mv:elementContentModelName: EmailAddress
1780      @cm: (dxm|PCDATA||ManakaiDOM|all)*
1781    
1782    ElementTypeBinding:
1783      @Name: AGDef
1784      @ElementType:
1785        dis:ResourceDef
1786      @ShadowContent:
1787        @@DISCore:resourceType: mv|AttributeTypeGroup
1788        @@For: =ManakaiDOM|ManakaiDOMLatest
1789    
1790    ElementTypeBinding:
1791      @Name: ATDef
1792      @ElementType:
1793        dis:ResourceDef
1794      @ShadowContent:
1795        @@DISCore:resourceType: mv|AttributeType
1796        @@For: =ManakaiDOM|ManakaiDOMLatest
1797    
1798    ElementTypeBinding:
1799      @Name: ECDef
1800      @ElementType:
1801        dis:ResourceDef
1802      @ShadowContent:
1803        @@DISCore:resourceType: mv|ElementTypeClass
1804        @@For: =ManakaiDOM|ManakaiDOMLatest
1805    
1806    ElementTypeBinding:
1807      @Name: EMDef
1808      @ElementType:
1809        dis:ResourceDef
1810      @ShadowContent:
1811        @@DISCore:resourceType: mv|ElementTypeClassMix
1812        @@For: =ManakaiDOM|ManakaiDOMLatest
1813    
1814    ElementTypeBinding:
1815      @Name: STDef
1816      @ElementType:
1817        dis:ResourceDef
1818      @ShadowContent:
1819        @@DISCore:resourceType: mv|XMLDTDDatatypeEntity
1820        @@For: =ManakaiDOM|ManakaiDOMLatest
1821    
1822    ElementTypeBinding:
1823      @Name: STCDef
1824      @ElementType:
1825        dis:ResourceDef
1826      @ShadowContent:
1827        @@DISCore:resourceType: mv|ElementContentModel
1828        @@For: =ManakaiDOM|ManakaiDOMLatest
1829    
1830  IFClsDef:  IFClsDef:
1831    @IFQName: AtomElement    @IFQName: AtomElement
1832    @ClsQName: ManakaiAtomElement    @ClsQName: ManakaiAtomElement
# Line 1404  IFClsDef: Line 1834  IFClsDef:
1834    @IFISA: Element    @IFISA: Element
1835    @ClsISA: te|ManakaiDOMElement    @ClsISA: te|ManakaiDOMElement
1836        
1837      @f:implements: AtomFeature10
1838    @s:elementType: AnyAtomElement||ManakaiDOM|all    @s:elementType: AnyAtomElement||ManakaiDOM|all
1839    
1840    @enDesc:    @enDesc:
# Line 1455  ResourceDef: Line 1886  ResourceDef:
1886      @@ContentType: DISCore|QName      @@ContentType: DISCore|QName
1887    @ForCheck: =ManakaiDOM|all    @ForCheck: =ManakaiDOM|all
1888    
1889  IFClsDef:  ElementTypeBinding:
1890      @Name: cm
1891      @ElementType:
1892        mv:elementContentModel
1893      @ShadowContent:
1894        @@ContentType: lang|dcmodel
1895    
1896    IFClsConstructDef:
1897    @IFQName: AtomTextConstruct    @IFQName: AtomTextConstruct
1898    @ClsQName: ManakaiAtomTextConstruct    @ClsQName: ManakaiAtomTextConstruct
1899      @AGQName: TextAG
1900      @AGName: text
1901      @CMQName: TextCM
1902      @CMName: text
1903    
1904    @IFISA: AtomElement    @IFISA: AtomElement
1905    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
1906    
1907      @f:implements: AtomFeature10
1908      @mv:refers: atomCommonAttributes
1909    
1910      @cm:
1911        dxm|ANY||ManakaiDOM|all
1912      @enImplNote:
1913        @@ddid:cm
1914        @@@:
1915          {TODO::
1916            (dxm|PCDATA||ManakaiDOM|all | html|div)*
1917          }
1918    
1919    @enDesc:    @enDesc:
1920      The <IF::AtomTextConstruct> interface provides convenience      The <IF::AtomTextConstruct> interface provides convenience
1921      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1470  IFClsDef: Line 1924  IFClsDef:
1924      interface.      interface.
1925    
1926      A Text construct contains human-readable text, usually in      A Text construct contains human-readable text, usually in
1927      small quantities.  The content of Text constructs is      small quantities.  The content of a Text construct is
1928      Language-Sensitive.      Language-Sensitive.
1929    
1930    @Attr:    @ATTR:
1931      @@Name: type      @@Name: type
1932      @@enDesc:      @@enDesc:
1933        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 1581  IFClsDef: Line 2035  IFClsDef:
2035          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);          $test->assert_equals ($el-><AG::AtomTextConstruct.container>, $con);
2036  ##AtomTextConstruct  ##AtomTextConstruct
2037    
2038  IFClsDef:  IFClsConstructDef:
2039    @IFQName: AtomPersonConstruct    @IFQName: AtomPersonConstruct
2040    @ClsQName: ManakaiAtomPersonConstruct    @ClsQName: ManakaiAtomPersonConstruct
2041      @AGQName: PersonAG
2042      @AGName: person
2043      @CMQName: PersonCM
2044      @CMName: person
2045    
2046    @IFISA: AtomElement    @IFISA: AtomElement
2047    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2048    
2049      @f:implements: AtomFeature10
2050      @mv:refers: atomCommonAttributes
2051    
2052      @cm:
2053        (person-prop+)
2054    
2055    @enDesc:    @enDesc:
2056      The <IF::AtomPersonConstruct> interface provides convenience      The <IF::AtomPersonConstruct> interface provides convenience
2057      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1635  IFClsDef: Line 2099  IFClsDef:
2099      @@Name: nameElement      @@Name: nameElement
2100      @@enDesc:      @@enDesc:
2101        The <XE::atom|name> child element of the node.        The <XE::atom|name> child element of the node.
2102      @@Type: AtomElement      @@Type: AtomNameElement
2103      @@Get:      @@Get:
2104        @@@enDesc:        @@@enDesc:
2105          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 2184  IFClsDef:
2184          }__;          }__;
2185  ##AtomPersonConstruct  ##AtomPersonConstruct
2186    
2187  IFClsDef:  ECDef:
2188      @QName: person-prop
2189      @mv:elementTypeClassName: person-prop
2190      @mv:refers: atom|name
2191      @mv:refers: atom|uri
2192      @mv:refers: atom|email
2193      @mv:refers: extensionElements
2194    
2195    IFClsConstructDef:
2196    @IFQName: AtomDateConstruct    @IFQName: AtomDateConstruct
2197    @ClsQName: ManakaiAtomDateConstruct    @ClsQName: ManakaiAtomDateConstruct
2198      @AGQName: DateAG
2199      @AGName: date
2200      @CMQName: DateCM
2201      @CMName: date
2202    
2203    @IFISA: AtomElement    @IFISA: AtomElement
2204    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2205    
2206      @f:implements: AtomFeature10
2207      @mv:refers: atomCommonAttributes
2208    
2209      @cm:
2210        (dxm|PCDATA||ManakaiDOM|all)*
2211      @enImplNote:
2212        @@ddid: cm
2213        @@@:
2214          {TODO::
2215            xsd|dateTime
2216          }
2217    
2218    @enDesc:    @enDesc:
2219      The <IF::AtomDateConstruct> interface provides convenience      The <IF::AtomDateConstruct> interface provides convenience
2220      methods and attributes for <IF::Element> nodes      methods and attributes for <IF::Element> nodes
# Line 1797  IFClsDef: Line 2285  IFClsDef:
2285        }        }
2286  ##AtomDateConstruct  ##AtomDateConstruct
2287    
2288    ECDef:
2289      @QName: feed-prop
2290      @mv:elementTypeClassName: feed-prop
2291      @mv:refers: atom|author
2292      @mv:refers: atom|category
2293      @mv:refers: atom|contributor
2294      @mv:refers: atom|generator
2295      @mv:refers: atom|icon
2296      @mv:refers: atom|id
2297      @mv:refers: atom|link
2298      @mv:refers: atom|logo
2299      @mv:refers: atom|rights
2300      @mv:refers: atom|subtitle
2301      @mv:refers: atom|title
2302      @mv:refers: atom|updated
2303      @mv:refers: extensionElements
2304    
2305  IFClsETDef:  IFClsETDef:
2306    @IFQName: AtomFeedElement    @IFQName: AtomFeedElement
2307    @ETQName: atom|feed    @ETQName: atom|feed
# Line 1806  IFClsETDef: Line 2311  IFClsETDef:
2311    @IFISA: AtomElement    @IFISA: AtomElement
2312    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
2313    
2314      @f:implements: AtomFeature10
2315      @mv:refers: atomCommonAttributes
2316    
2317      @cm:
2318        (feed-prop+, atom|entry*)
2319    
2320    @enDesc:    @enDesc:
2321      The <XE::atom|feed> element is the document element      The <XE::atom|feed> element is the document element
2322      of an Atom Feed Document.      of an Atom Feed Document.
# Line 2409  IFClsETDef: Line 2920  IFClsETDef:
2920                                  (<Q::atom|>, 'updated');                                  (<Q::atom|>, 'updated');
2921            $updatede-><AS::AtomDateConstruct.value> (scalar time);            $updatede-><AS::AtomDateConstruct.value> (scalar time);
2922            $r-><M::Node.appendChild> ($updatede);            $r-><M::Node.appendChild> ($updatede);
2923    
2924              $self-><M::Node.appendChild> ($r);
2925          }__;          }__;
2926    
2927      @@Test:      @@Test:
# Line 2475  IFClsETDef: Line 2988  IFClsETDef:
2988          $test->assert_num_not_equals          $test->assert_num_not_equals
2989                   (actual_value => $updated-><AG::AtomDateConstruct.value>,                   (actual_value => $updated-><AG::AtomDateConstruct.value>,
2990                    expected_value => 0);                    expected_value => 0);
2991    
2992            $test->id ('parent');
2993            $test->assert_equals ($ent-><AG::Node.parentNode>, $feed);
2994      @@Test:      @@Test:
2995        @@@QName: AtomFeedElement.addNewEntry.2.test        @@@QName: AtomFeedElement.addNewEntry.2.test
2996        @@@enDesc:        @@@enDesc:
# Line 2493  IFClsETDef: Line 3009  IFClsETDef:
3009                                      (<Q::xml|>, 'lang'));                                      (<Q::xml|>, 'lang'));
3010  ##AtomFeedElement  ##AtomFeedElement
3011    
3012    ECDef:
3013      @QName: entry-prop
3014      @mv:elementTypeClassName: entry-prop
3015      @mv:refers: atom|author
3016      @mv:refers: atom|category
3017      @mv:refers: atom|content
3018      @mv:refers: atom|contributor
3019      @mv:refers: atom|id
3020      @mv:refers: atom|link
3021      @mv:refers: atom|published
3022      @mv:refers: atom|rights
3023      @mv:refers: atom|source
3024      @mv:refers: atom|summary
3025      @mv:refers: atom|title
3026      @mv:refers: atom|updated
3027      @mv:refers: extensionElements
3028    
3029  IFClsETDef:  IFClsETDef:
3030    @IFQName: AtomEntryElement    @IFQName: AtomEntryElement
3031    @ETQName: atom|entry    @ETQName: atom|entry
# Line 2502  IFClsETDef: Line 3035  IFClsETDef:
3035    @IFISA: AtomElement    @IFISA: AtomElement
3036    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3037    
3038      @f:implements: AtomFeature10
3039      @mv:refers: atomCommonAttributes
3040    
3041      @cm:
3042        (entry-prop+)
3043    
3044    @enDesc:    @enDesc:
3045      The <XE::atom|entry> element represents an individual      The <XE::atom|entry> element represents an individual
3046      entry, acting as a container for metadata and data      entry, acting as a container for metadata and data
# Line 3022  IFClsETDef: Line 3561  IFClsETDef:
3561  ##AtomEntryElement  ##AtomEntryElement
3562    
3563  IFClsETDef:  IFClsETDef:
3564      @IFQName: AtomIdElement
3565      @ETQName: atom|id
3566      @ETRQName: atom|id
3567      @ClsQName: ManakaiAtomIdElement
3568    
3569      @IFISA: AtomElement
3570      @ClsISA: ManakaiAtomElement
3571    
3572      @f:implements: AtomFeature10
3573      @mv:refers: atomCommonAttributes
3574      
3575      @cm: atomUriCM
3576    ##AtomIdElement
3577    
3578    IFClsETDef:
3579      @IFQName: AtomIconElement
3580      @ETQName: atom|icon
3581      @ETRQName: atom|icon
3582      @ClsQName: ManakaiAtomIconElement
3583    
3584      @IFISA: AtomElement
3585      @ClsISA: ManakaiAtomElement
3586    
3587      @f:implements: AtomFeature10
3588      @mv:refers: atomCommonAttributes
3589    
3590      @cm: atomUriCM
3591    ##AtomIconElement
3592    
3593    IFClsETDef:
3594      @IFQName: AtomNameElement
3595      @ETQName: atom|name
3596      @ETRQName: atom|name
3597      @ClsQName: ManakaiAtomNameElement
3598    
3599      @IFISA: AtomElement
3600      @ClsISA: ManakaiAtomElement
3601    
3602      @f:implements: AtomFeature10
3603      # no common attribs
3604      @cm: TextCM
3605    
3606      @mv:refers: Atom
3607    ##AtomNameElement
3608    
3609    IFClsETDef:
3610      @IFQName: AtomUriElement
3611      @ETQName: atom|uri
3612      @ETRQName: atom|uri
3613      @ClsQName: ManakaiAtomUriElement
3614    
3615      @IFISA: AtomElement
3616      @ClsISA: ManakaiAtomElement
3617    
3618      @f:implements: AtomFeature10
3619      # no common attribs
3620      @cm: atomUriCM
3621    
3622      @mv:refers: Atom
3623    ##AtomUriElement
3624    
3625    IFClsETDef:
3626      @IFQName: AtomEmailElement
3627      @ETQName: atom|email
3628      @ETRQName: atom|email
3629      @ClsQName: ManakaiAtomEmailElement
3630    
3631      @IFISA: AtomElement
3632      @ClsISA: ManakaiAtomElement
3633    
3634      @f:implements: AtomFeature10
3635      # no common attribs
3636      @cm: atomEmailAddressCM
3637    
3638      @mv:refers: Atom
3639    ##AtomEmailElement
3640    
3641    IFClsETDef:
3642      @IFQName: AtomLogoElement
3643      @ETQName: atom|logo
3644      @ETRQName: atom|logo
3645      @ClsQName: ManakaiAtomLogoElement
3646    
3647      @IFISA: AtomElement
3648      @ClsISA: ManakaiAtomElement
3649    
3650      @f:implements: AtomFeature10
3651      @mv:refers: atomCommonAttributes
3652    
3653      @cm: atomUriCM
3654    ##AtomLogoElement
3655    
3656    IFClsETDef:
3657    @IFQName: AtomContentElement    @IFQName: AtomContentElement
3658    @ETQName: atom|content    @ETQName: atom|content
3659      @ETRQName: atom|content
3660    @ClsQName: ManakaiAtomContentElement    @ClsQName: ManakaiAtomContentElement
3661    
3662    @IFISA: AtomElement    @IFISA: AtomElement
3663    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3664    
3665      @f:implements: AtomFeature10
3666      @mv:refers: atomCommonAttributes
3667    
3668      @cm:
3669        dxm|ANY||ManakaiDOM|all
3670    
3671    @enDesc:    @enDesc:
3672      The <XE::atom|content> element either contains or links to      The <XE::atom|content> element either contains or links to
3673      the content of the entry.      the content of the entry.
3674    
3675    @Attr:    @ATTR:
3676      @@Name: type      @@Name: type
3677      @@enDesc:      @@enDesc:
3678        The type of the element.        The type of the element.
# Line 3098  IFClsETDef: Line 3737  IFClsETDef:
3737          $el-><AS::AtomContentElement.type> (null);          $el-><AS::AtomContentElement.type> (null);
3738          $test->assert_null ($el-><AG::AtomContentElement.type>);          $test->assert_null ($el-><AG::AtomContentElement.type>);
3739    
3740    @Attr:    @ATTR:
3741      @@Name: src      @@Name: src
3742      @@enDesc:      @@enDesc:
3743        The source of the remote content of the element.        The source of the remote content of the element.
# Line 3272  IFClsETDef: Line 3911  IFClsETDef:
3911  IFClsETDef:  IFClsETDef:
3912    @IFQName: AtomAuthorElement    @IFQName: AtomAuthorElement
3913    @ETQName: atom|author    @ETQName: atom|author
3914      @ETRQName: atom|author
3915    @ClsQName: ManakaiAtomAuthorElement    @ClsQName: ManakaiAtomAuthorElement
3916    
3917    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
3918    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
3919    
3920      @f:implements: AtomFeature10
3921      @mv:refers: PersonAG
3922      @mv:elementContentModel: PersonCM
3923    
3924    @enDesc:    @enDesc:
3925      The <XE::atom|author> element is a Person construct that      The <XE::atom|author> element is a Person construct that
3926      indicates the author of the entry or feed.      indicates the author of the entry or feed.
# Line 3285  IFClsETDef: Line 3929  IFClsETDef:
3929  IFClsETDef:  IFClsETDef:
3930    @IFQName: AtomCategoryElement    @IFQName: AtomCategoryElement
3931    @ETQName: atom|category    @ETQName: atom|category
3932      @ETRQName: atom|category
3933    @ClsQName: ManakaiAtomCategoryElement    @ClsQName: ManakaiAtomCategoryElement
3934    
3935    @IFISA: AtomElement    @IFISA: AtomElement
3936    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
3937    
3938      @f:implements: AtomFeature10
3939      @mv:refers: atomCommonAttributes
3940    
3941      @cm: undefinedContent
3942    
3943    @enDesc:    @enDesc:
3944      The <XE::atom|category> element conveys information abut      The <XE::atom|category> element conveys information abut
3945      a category associated with an entry or feed.      a category associated with an entry or feed.
# Line 3398  IFClsETDef: Line 4048  IFClsETDef:
4048  IFClsETDef:  IFClsETDef:
4049    @IFQName: AtomContributorElement    @IFQName: AtomContributorElement
4050    @ETQName: atom|contributor    @ETQName: atom|contributor
4051      @ETRQName: atom|contributor
4052    @ClsQName: ManakaiAtomContributorElement    @ClsQName: ManakaiAtomContributorElement
4053    
4054    @IFISA: AtomPersonConstruct    @IFISA: AtomPersonConstruct
4055    @ClsISA: ManakaiAtomPersonConstruct    @ClsISA: ManakaiAtomPersonConstruct
4056    
4057      @f:implements: AtomFeature10
4058      @mv:refers: PersonAG
4059      @mv:elementContentModel: PersonCM
4060    
4061    @enDesc:    @enDesc:
4062      The <XE::atom|contributor> element is a Person construct that      The <XE::atom|contributor> element is a Person construct that
4063      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 4067  IFClsETDef:
4067  IFClsETDef:  IFClsETDef:
4068    @IFQName: AtomGeneratorElement    @IFQName: AtomGeneratorElement
4069    @ETQName: atom|generator    @ETQName: atom|generator
4070      @ETRQName: atom|generator
4071    @ClsQName: ManakaiAtomGeneratorElement    @ClsQName: ManakaiAtomGeneratorElement
4072    
4073    @IFISA: AtomElement    @IFISA: AtomElement
4074    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4075    
4076      @f:implements: AtomFeature10
4077      @mv:refers: atomCommonAttributes
4078    
4079      @cm:
4080        (dxm|PCDATA||ManakaiDOM|all)*
4081    
4082    @enDesc:    @enDesc:
4083      The <XE::atom|generator> element identifies the agent used      The <XE::atom|generator> element identifies the agent used
4084      to generate a feed.      to generate a feed.
# Line 3492  IFClsETDef: Line 4154  IFClsETDef:
4154  IFClsETDef:  IFClsETDef:
4155    @IFQName: AtomLinkElement    @IFQName: AtomLinkElement
4156    @ETQName: atom|link    @ETQName: atom|link
4157      @ETRQName: atom|link
4158    @ClsQName: ManakaiAtomLinkElement    @ClsQName: ManakaiAtomLinkElement
4159    
4160    @IFISA: AtomElement    @IFISA: AtomElement
4161    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4162    
4163      @f:implements: AtomFeature10
4164      @mv:refers: atomCommonAttributes
4165    
4166      @cm: undefinedContent
4167    
4168    @enDesc:    @enDesc:
4169      The <XE::atom|link> element defines a reference from an entry      The <XE::atom|link> element defines a reference from an entry
4170      or feed to a Web resource.      or feed to a Web resource.
4171    
4172    @Attr:    @ATTR:
4173      @@Name: href      @@Name: href
4174      @@enDesc:      @@enDesc:
4175        The <XA::href> attribute of the element.        The <XA::href> attribute of the element.
# Line 3509  IFClsETDef: Line 4177  IFClsETDef:
4177        It <kwd:MUST> <I::reflect the URI value        It <kwd:MUST> <I::reflect the URI value
4178        of the <XA::href> attribute> of the node.        of the <XA::href> attribute> of the node.
4179      @@Type: DOMString      @@Type: DOMString
4180      @@Type: DOMURI      @@actualType: DOMURI
4181      @@Get:      @@Get:
4182        @@@nullCase:        @@@nullCase:
4183          @@@@enDesc:          @@@@enDesc:
# Line 3535  IFClsETDef: Line 4203  IFClsETDef:
4203            $given => $given,            $given => $given,
4204          }__;          }__;
4205    
4206    @Attr:    @ATTR:
4207      @@Name: rel      @@Name: rel
4208      @@enDesc:      @@enDesc:
4209        The <XA::rel> attribute of the element.        The <XA::rel> attribute of the element.
# Line 3545  IFClsETDef: Line 4213  IFClsETDef:
4213        a few exceptions.  The default value <kwd:MUST>        a few exceptions.  The default value <kwd:MUST>
4214        be <URI^DISCore|QName::rel|alternate>.        be <URI^DISCore|QName::rel|alternate>.
4215      @@Type: DOMString      @@Type: DOMString
4216        @@actualType: DOMURI
4217      @@Get:      @@Get:
4218        @@@enDesc:        @@@enDesc:
4219          If the algorithm returns a string that does not contain          If the algorithm returns a string that does not contain
# Line 3618  IFClsETDef: Line 4287  IFClsETDef:
4287          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,          $test->assert_equals ($el-><AG::AtomLinkElement.rel>,
4288                                <Q::rel|alternate>);                                <Q::rel|alternate>);
4289    
4290    @Attr:    @ATTR:
4291      @@Name: type      @@Name: type
4292      @@enDesc:      @@enDesc:
4293        The <XA::type> attribute of the element.        The <XA::type> attribute of the element.
# Line 3627  IFClsETDef: Line 4296  IFClsETDef:
4296        of the <XA::type> attribute> of the node.        of the <XA::type> attribute> of the node.
4297      @@Type: DOMString      @@Type: DOMString
4298      @@Get:      @@Get:
4299          @@@enDesc:
4300            {P:: If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4301                 is supported, the attribute getter <kwd:MUST> return
4302                 the string <CODE::application/atom+xml> when both of the
4303                 following conditions are met:
4304    
4305               - The attribute getter would otherwise return <DOM::null>.
4306    
4307               - The <A::AtomLinkElement.rel> attribute contains
4308                 a string value of <URI^^DISCore|QName::rel|replies>.
4309    
4310            }
4311        @@@nullCase:        @@@nullCase:
4312          @@@@enDesc:          @@@@enDesc:
4313            If the algorithm returns <DOM::null>.            If the algorithm returns <DOM::null>.
# Line 3638  IFClsETDef: Line 4319  IFClsETDef:
4319            $r => $r,            $r => $r,
4320            $defaultValue => {null},            $defaultValue => {null},
4321          }__;          }__;
4322    
4323            unless (defined $r) {
4324              __DEEP{
4325                my $rel = $self-><AG::AtomLinkElement.rel>;
4326                if (defined $rel and $rel eq <Q::rel|replies>) {
4327                  $r = q<application/atom+xml>;
4328                }
4329              }__;
4330            }
4331      @@Set:      @@Set:
4332        @@@nullCase:        @@@nullCase:
4333          @@@@enDesc:          @@@@enDesc:
# Line 3651  IFClsETDef: Line 4341  IFClsETDef:
4341            $given => $given,            $given => $given,
4342          }__;          }__;
4343    
4344    @Attr:      @@Test:
4345          @@@QName: AtomLinkElement.type.!rel.test
4346          @@@PerlDef:
4347            my $doc;
4348            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4349    
4350            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4351    
4352            $test->id ('implied');
4353            my $type0 = $el-><AG::AtomLinkElement.type>;
4354            $test->assert_null ($type0);
4355    
4356            $test->id ('explicit');
4357            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4358            my $type1 = $el-><AG::AtomLinkElement.type>;
4359            $test->assert_equals ($type1, q<application/atom+xml>);
4360    
4361            $test->id ('different');
4362            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4363            my $type2 = $el-><AG::AtomLinkElement.type>;
4364            $test->assert_equals ($type2, q<application/xhtml+xml>);
4365        @@Test:
4366          @@@QName: AtomLinkElement.type.rel!=replies.test
4367          @@@PerlDef:
4368            my $doc;
4369            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4370    
4371            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4372    
4373            $el-><AS::AtomLinkElement.rel> (<Q::rel|alternate>);
4374    
4375            $test->id ('implied');
4376            my $type0 = $el-><AG::AtomLinkElement.type>;
4377            $test->assert_null ($type0);
4378    
4379            $test->id ('explicit');
4380            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4381            my $type1 = $el-><AG::AtomLinkElement.type>;
4382            $test->assert_equals ($type1, q<application/atom+xml>);
4383    
4384            $test->id ('different');
4385            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4386            my $type2 = $el-><AG::AtomLinkElement.type>;
4387            $test->assert_equals ($type2, q<application/xhtml+xml>);
4388        @@Test:
4389          @@@QName: AtomLinkElement.type.rel=replies.test
4390          @@@PerlDef:
4391            my $doc;
4392            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4393    
4394            my $el = $doc-><M::Document.createElementNS> (<Q::atom|>, 'link');
4395    
4396            $el-><AS::AtomLinkElement.rel> (<Q::rel|replies>);
4397    
4398            $test->id ('implied');
4399            my $type0 = $el-><AG::AtomLinkElement.type>;
4400            $test->assert_equals ($type0, q<application/atom+xml>);
4401    
4402            $test->id ('explicit');
4403            $el-><AS::AtomLinkElement.type> ('application/atom+xml');
4404            my $type1 = $el-><AG::AtomLinkElement.type>;
4405            $test->assert_equals ($type1, q<application/atom+xml>);
4406    
4407            $test->id ('different');
4408            $el-><AS::AtomLinkElement.type> ('application/xhtml+xml');
4409            my $type2 = $el-><AG::AtomLinkElement.type>;
4410            $test->assert_equals ($type2, q<application/xhtml+xml>);
4411    
4412      @ATTR:
4413      @@Name: hreflang      @@Name: hreflang
4414      @@enDesc:      @@enDesc:
4415        The <XA::hreflang> attribute of the element.        The <XA::hreflang> attribute of the element.
# Line 3684  IFClsETDef: Line 4442  IFClsETDef:
4442            $given => $given,            $given => $given,
4443          }__;          }__;
4444    
4445    @Attr:    @ATTR:
4446      @@Name: title      @@Name: title
4447      @@enDesc:      @@enDesc:
4448        The <XA::title> attribute of the element.        The <XA::title> attribute of the element.
# Line 3717  IFClsETDef: Line 4475  IFClsETDef:
4475            $given => $given,            $given => $given,
4476          }__;          }__;
4477    
4478    @Attr:    @ATTR:
4479      @@Name: length      @@Name: length
4480      @@enDesc:      @@enDesc:
4481        The <XA::length> attribute of the element.        The <XA::length> attribute of the element.
# Line 3754  IFClsETDef: Line 4512  IFClsETDef:
4512  IFClsETDef:  IFClsETDef:
4513    @IFQName: AtomPublishedElement    @IFQName: AtomPublishedElement
4514    @ETQName: atom|published    @ETQName: atom|published
4515      @ETRQName: atom|published
4516    @ClsQName: ManakaiAtomPublishedElement    @ClsQName: ManakaiAtomPublishedElement
4517    
4518    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4519    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4520    
4521      @f:implements: AtomFeature10
4522      @mv:refers: DateAG
4523      @mv:elementContentModel: DateCM
4524    
4525    @enDesc:    @enDesc:
4526      The <XE::atom|published> element is a Date construct      The <XE::atom|published> element is a Date construct
4527      indicating an instant in time associated with an      indicating an instant in time associated with an
# Line 3771  IFClsETDef: Line 4534  IFClsETDef:
4534  IFClsETDef:  IFClsETDef:
4535    @IFQName: AtomRightsElement    @IFQName: AtomRightsElement
4536    @ETQName: atom|rights    @ETQName: atom|rights
4537      @ETRQName: atom|rights
4538    @ClsQName: ManakaiAtomRightsElement    @ClsQName: ManakaiAtomRightsElement
4539    
4540    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4541    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4542    
4543      @f:implements: AtomFeature10
4544      @mv:refers: TextAG
4545      @mv:elementContentModel: TextCM
4546    
4547    @enDesc:    @enDesc:
4548      The <XE::atom|rights> element is a Text construct      The <XE::atom|rights> element is a Text construct
4549      that conveys information about rights held in and      that conveys information about rights held in and
4550      over an entry or feed.      over an entry or feed.
4551  ##AtomRightsElement  ##AtomRightsElement
4552    
4553    ECDef:
4554      @QName: source-prop
4555      @mv:elementTypeClassName: source-prop
4556      @mv:refers: atom|author
4557      @mv:refers: atom|category
4558      @mv:refers: atom|contributor
4559      @mv:refers: atom|generator
4560      @mv:refers: atom|icon
4561      @mv:refers: atom|id
4562      @mv:refers: atom|link
4563      @mv:refers: atom|logo
4564      @mv:refers: atom|rights
4565      @mv:refers: atom|subtitle
4566      @mv:refers: atom|title
4567      @mv:refers: atom|updated
4568      @mv:refers: extensionElements
4569    
4570  IFClsETDef:  IFClsETDef:
4571    @IFQName: AtomSourceElement    @IFQName: AtomSourceElement
4572    @ETQName: atom|source    @ETQName: atom|source
4573      @ETRQName: atom|source
4574    @ClsQName: ManakaiAtomSourceElement    @ClsQName: ManakaiAtomSourceElement
4575    
4576    @IFISA: AtomElement    @IFISA: AtomElement
4577    @ClsISA: ManakaiAtomElement    @ClsISA: ManakaiAtomElement
4578    
4579      @f:implements: AtomFeature10
4580      @mv:refers: atomCommonAttributes
4581    
4582      @cm:
4583        (source-prop*)
4584    
4585    @Attr:    @Attr:
4586      @@Name: authorElements      @@Name: authorElements
4587      @@enDesc:      @@enDesc:
# Line 3994  IFClsETDef: Line 4786  IFClsETDef:
4786  IFClsETDef:  IFClsETDef:
4787    @IFQName: AtomSubtitleElement    @IFQName: AtomSubtitleElement
4788    @ETQName: atom|subtitle    @ETQName: atom|subtitle
4789      @ETRQName: atom|subtitle
4790    @ClsQName: ManakaiAtomSubtitleElement    @ClsQName: ManakaiAtomSubtitleElement
4791    
4792    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4793    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4794    
4795      @f:implements: AtomFeature10
4796      @mv:refers: TextAG
4797      @mv:elementContentModel: TextCM
4798    
4799    @enDesc:    @enDesc:
4800      The <XE::atom|subtitle> element is a Text construct      The <XE::atom|subtitle> element is a Text construct
4801      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 4804  IFClsETDef:
4804  IFClsETDef:  IFClsETDef:
4805    @IFQName: AtomSummaryElement    @IFQName: AtomSummaryElement
4806    @ETQName: atom|summary    @ETQName: atom|summary
4807      @ETRQName: atom|summary
4808    @ClsQName: ManakaiAtomSummaryElement    @ClsQName: ManakaiAtomSummaryElement
4809    
4810    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4811    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4812    
4813      @f:implements: AtomFeature10
4814      @mv:refers: TextAG
4815      @mv:elementContentModel: TextCM
4816    
4817    @enDesc:    @enDesc:
4818      The <XE::atom|summary> element is a Text construct      The <XE::atom|summary> element is a Text construct
4819      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 4822  IFClsETDef:
4822  IFClsETDef:  IFClsETDef:
4823    @IFQName: AtomTitleElement    @IFQName: AtomTitleElement
4824    @ETQName: atom|title    @ETQName: atom|title
4825      @ETRQName: atom|title
4826    @ClsQName: ManakaiAtomTitleElement    @ClsQName: ManakaiAtomTitleElement
4827    
4828    @IFISA: AtomTextConstruct    @IFISA: AtomTextConstruct
4829    @ClsISA: ManakaiAtomTextConstruct    @ClsISA: ManakaiAtomTextConstruct
4830    
4831      @f:implements: AtomFeature10
4832      @mv:refers: TextAG
4833      @mv:elementContentModel: TextCM
4834    
4835    @enDesc:    @enDesc:
4836      The <XE::atom|title> element is a Text construct      The <XE::atom|title> element is a Text construct
4837      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 4840  IFClsETDef:
4840  IFClsETDef:  IFClsETDef:
4841    @IFQName: AtomUpdatedElement    @IFQName: AtomUpdatedElement
4842    @ETQName: atom|updated    @ETQName: atom|updated
4843      @ETRQName: atom|updated
4844    @ClsQName: ManakaiAtomUpdatedElement    @ClsQName: ManakaiAtomUpdatedElement
4845    
4846    @IFISA: AtomDateConstruct    @IFISA: AtomDateConstruct
4847    @ClsISA: ManakaiAtomDateConstruct    @ClsISA: ManakaiAtomDateConstruct
4848    
4849      @f:implements: AtomFeature10
4850      @mv:refers: DateAG
4851      @mv:elementContentModel: DateCM
4852    
4853    @enDesc:    @enDesc:
4854      The <XE::atom|updated> element is a Date construct      The <XE::atom|updated> element is a Date construct
4855      indicating the most recent instant in time when an      indicating the most recent instant in time when an
# Line 4127  ElementTypeBinding: Line 4939  ElementTypeBinding:
4939      @@For: ManakaiDOM|DOM3      @@For: ManakaiDOM|DOM3
4940      @@For: =ManakaiDOM|all      @@For: =ManakaiDOM|all
4941      @@Type: idl|boolean||ManakaiDOM|all      @@Type: idl|boolean||ManakaiDOM|all
4942    
4943    ECDef:
4944      @QName: simpleExtensionElements
4945      @mv:elementTypeClassName: simple.extra
4946      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4947    
4948    ECDef:
4949      @QName: structuredExtensionElements
4950      @mv:elementTypeClassName: structured.extra
4951      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4952    
4953    EMDef:
4954      @QName: extensionElements
4955      @mv:elementTypeClassName: extra
4956      @mv:refers: simpleExtensionElements
4957      @mv:refers: structuredExtensionElements
4958      @DISCore:resourceType: mv|ElementTypeAdditionalClass
4959    
4960    AGDef:
4961      @QName: undefinedAttributes
4962      @mv:attributeTypeGroupName: common.extra
4963    
4964    ResourceDef:
4965      @QName: undefinedContent
4966      @mv:elementContentModelName: undefined
4967      @For: =ManakaiDOM|ManakaiDOMLatest
4968      @DISCore:resourceType: mv|ElementContentModel
4969      @cm: dxm|ANY||ManakaiDOM|all
4970      @enImplNote:
4971        (text | anyForeignElement)*
4972    
4973    ## -- Atom Threading Extension [RFC 4685]
4974    
4975    IFClsDef:
4976      @IFQName: AtomEntryElementThread
4977      @ClsQName: ManakaiAtomEntryElementThread
4978    
4979      @ClsISA: ManakaiAtomEntryElement
4980    
4981      @f:implements: AtomThreadingFeature10
4982    
4983      @enDesc:
4984        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
4985        is supported, any <IF::Element> whose element type
4986        is <XE::atom|entry> <kwd:MUST> implement the <IF::AtomEntryElementThread>
4987        interface in addition to other appropriate interfaces.
4988    
4989      @Test:
4990        @@QName: AtomEntryElementThread.1.test
4991        @@PerlDef:
4992          my $doc;
4993          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
4994    
4995          my $el = $doc->create_element_ns (<Q::atom|>, 'entry');
4996    
4997          $test->id ('interface');
4998          $test->assert_isa ($el, <IFName::AtomEntryElementThread>);
4999    
5000          $test->id ('feature');
5001          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5002    
5003      @Attr:
5004        @@Name: threadInReplyToElements
5005        @@enDesc:
5006          A static list of <XE::thr|in-reply-to> child elements of the node.
5007        @@Type: StaticNodeList
5008        @@Get:
5009          @@@enDesc:
5010            It <kwd:MUST> <I::return a <XE::thr|in-reply-to> child element list>
5011            of the node.
5012          @@@PerlDef:
5013            __CODE{returnChildElementList::
5014              $node => $self,
5015              $namespaceURI => {<Q::thr|>},
5016              $localName => 'in-reply-to',
5017              $r => $r,
5018            }__;
5019    ##AtomEntryElementThread
5020    
5021    IFClsETDef:
5022      @IFQName: AtomThreadInReplyToElement
5023      @ETQName: thr|in-reply-to
5024      @ETRQName: thr|in-reply-to
5025      @ClsQName: ManakaiAtomThreadInReplyToElement
5026    
5027      @IFISA: AtomDateConstruct
5028      @ClsISA: ManakaiAtomDateConstruct
5029    
5030      @f:implements: AtomThreadingFeature10
5031      @mv:refers: atomCommonAttributes
5032    
5033      @cm: undefinedContent
5034    
5035      @enDesc:
5036        The <XE::thr|in-reply-to> element is used to indicate
5037        that an entry is a response to another resource.
5038    
5039        If the entry is a response to multiple resources,
5040        additional <XE::thr|in-reply-to> element <kwd:MAY>
5041        be used.
5042    
5043        RFC 4685 assigns no significance to the order in which
5044        multiple <XE::thr|in-reply-to> element appear within
5045        an entry.
5046    
5047      @Test:
5048        @@QName: AtomThreadInReplyToElement.1.test
5049        @@PerlDef:
5050          my $doc;
5051          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5052    
5053          my $el = $doc->create_element_ns (<Q::thr|>, 'in-reply-to');
5054    
5055          $test->id ('interface');
5056          $test->assert_isa ($el, <IFName::AtomThreadInReplyToElement>);
5057    
5058          $test->id ('feature');
5059          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5060    
5061      @ATTR:
5062        @@Name: ref
5063        @@enDesc:
5064          The <XA::ref> attribute of the element.
5065    
5066          It <kwd:MUST> <I::reflect the URI value
5067          of the <XA::ref> attribute> of the node.
5068    
5069          The <XA::ref> attribute specifies the persistent,
5070          universally unique identifier of the resource being
5071          responded to.  The value <kwd:MUST> conform to
5072          the same construction and comparison rules as the
5073          value of the <XE::atom|id> element.  Though the IRI
5074          might use a dereferenceable scheme, processors <kwd:MUST-NOT>
5075          assume that it can be dereferenced.
5076    
5077          The <XE::thr|in-reply-to> element <kwd:MUST> contain
5078          a <XA::ref> attribute identifying the resource that
5079          is being respnoded to.
5080    
5081          If the resource being responded to does not have a persistent,
5082          universally unique identifier, the publisher <kwd:MUST> assign an
5083          identifier that satisfies all the considerations in Section 4.2.6 of
5084          RFC 4287 for use as the value of the <XA::ref> attribute.
5085          In that case, if a representation of the resource can be retrieved
5086          from an IRI that can be used as a valid atom:id value, then this IRI
5087          <kwd:SHOULD> be used as the value of both the <XA::ref> and
5088          <XA::href> attributes.
5089        @@Type: DOMString
5090        @@actualType: DOMURI
5091        @@Get:
5092          @@@nullCase:
5093            @@@@enDesc:
5094              If the algorithm returns <DOM::null>.
5095          @@@PerlDef:
5096            __CODE{getReflectAttrURIValue::
5097              $node => $self,
5098              $namespaceURI => {null},
5099              $localName => 'ref',
5100              $r => $r,
5101              $defaultValue => {null},
5102            }__;
5103        @@Set:
5104          @@@nullCase:
5105            @@@@enDesc:
5106              Removes the attribute.
5107          @@@NodeReadOnlyError:
5108          @@@PerlDef:
5109            __CODE{setReflectAttrURIValue::
5110              $node => $self,
5111              $namespaceURI => {null},
5112              $localName => 'ref',
5113              $given => $given,
5114            }__;
5115            
5116      @ATTR:
5117        @@Name: source
5118        @@enDesc:
5119          The <XA::source> attribute of the element.
5120    
5121          It <kwd:MUST> <I::reflect the URI value
5122          of the <XA::source> attribute> of the node.
5123    
5124          The <XA::source> attribute <kwd:MAY> be used to specify the IRI
5125          of an Atom Feed or Entry Document containing an
5126          <XE::atom|entry> with an <XE::atom|id> value equal to the
5127          value of the <XA::ref> attribute.  The IRI specified <kwd:MUST>
5128          be dereferenceable.
5129        @@Type: DOMString
5130        @@actualType: DOMURI
5131        @@Get:
5132          @@@nullCase:
5133            @@@@enDesc:
5134              If the algorithm returns <DOM::null>.
5135          @@@PerlDef:
5136            __CODE{getReflectAttrURIValue::
5137              $node => $self,
5138              $namespaceURI => {null},
5139              $localName => 'source',
5140              $r => $r,
5141              $defaultValue => {null},
5142            }__;
5143        @@Set:
5144          @@@nullCase:
5145            @@@@enDesc:
5146              Removes the attribute.
5147          @@@NodeReadOnlyError:
5148          @@@PerlDef:
5149            __CODE{setReflectAttrURIValue::
5150              $node => $self,
5151              $namespaceURI => {null},
5152              $localName => 'source',
5153              $given => $given,
5154            }__;
5155            
5156      @ATTR:
5157        @@Name: href
5158        @@enDesc:
5159          The <XA::href> attribute of the element.
5160    
5161          It <kwd:MUST> <I::reflect the URI value
5162          of the <XA::href> attribute> of the node.
5163    
5164          The <XA::href> attribute specifies an IRI that may be used
5165          to retrieve a representation of the resource being
5166          responded to.  The IRI specified <kwd:MUST> be
5167          dereferenceable.
5168        @@Type: DOMString
5169        @@actualType: DOMURI
5170        @@Get:
5171          @@@nullCase:
5172            @@@@enDesc:
5173              If the algorithm returns <DOM::null>.
5174          @@@PerlDef:
5175            __CODE{getReflectAttrURIValue::
5176              $node => $self,
5177              $namespaceURI => {null},
5178              $localName => 'href',
5179              $r => $r,
5180              $defaultValue => {null},
5181            }__;
5182        @@Set:
5183          @@@nullCase:
5184            @@@@enDesc:
5185              Removes the attribute.
5186          @@@NodeReadOnlyError:
5187          @@@PerlDef:
5188            __CODE{setReflectAttrURIValue::
5189              $node => $self,
5190              $namespaceURI => {null},
5191              $localName => 'href',
5192              $given => $given,
5193            }__;
5194      
5195      @ATTR:
5196        @@Name: type
5197        @@enDesc:
5198          The <XA::type> attribute of the element.
5199    
5200          It <kwd:MUST> <I::reflect the string value
5201          of the <XA::type> attribute> of the node.
5202    
5203          The <XA::type> attribute <kwd:MAY> be used to provide
5204          a hint to the client about the media type of the
5205          resource identified by the <XA::href> attribute.
5206          The <XA::type> attribute is only meaningful if a
5207          corresponding <XA::href> attribute is also provided.
5208        @@Type: DOMString
5209        @@Get:
5210          @@@nullCase:
5211            @@@@enDesc:
5212              If the algorithm returns <DOM::null>.
5213          @@@PerlDef:
5214            __CODE{getReflectAttrStringValue::
5215              $node => $self,
5216              $namespaceURI => {null},
5217              $localName => 'type',
5218              $r => $r,
5219              $defaultValue => {null},
5220            }__;
5221        @@Set:
5222          @@@nullCase:
5223            @@@@enDesc:
5224              Removes the attribute.
5225          @@@NodeReadOnlyError:
5226          @@@PerlDef:
5227            __CODE{setReflectAttrStringValue::
5228              $node => $self,
5229              $namespaceURI => {null},
5230              $localName => 'type',
5231              $given => $given,
5232            }__;
5233    ##AtomThreadInReplyToElement
5234    
5235    IFClsDef:
5236      @IFQName: AtomLinkElementThread
5237      @ClsQName: ManakaiAtomLinkElementThread
5238    
5239      @ClsISA: ManakaiAtomLinkElement
5240    
5241      @f:implements: AtomThreadingFeature10
5242    
5243      @enDesc:
5244        An <XE::atom|link> element with a <XA::rel> attribute value of
5245        <XML::replies> may be used to reference a resource where responses
5246        to an entry may be found.  If the <XA::type> attribute of the
5247        <XE::atom|link> is omitted, its value is assumed to be
5248        <XML::application/atom+xml>.
5249    
5250        A <XML::replies> link appearing as a child of the <XE::atom|feed>
5251        or <XE::atom|source> element indicates that the referenced
5252        resource likely contains responses to any of that
5253        feed's entries.  A <XML::replies>
5254        link appearing as a child of an <XE::atom|entry> element
5255        indicates that the linked resource likely contains responses
5256        specific to that entry.
5257    
5258        If the feature <Feature^^DISCore|QName::AtomThreadingFeature10>
5259        is supported, any <IF::Element> whose element type
5260        is <XE::atom|link> <kwd:MUST> implement the <IF::AtomLinkElementThread>
5261        interface in addition to other appropriate interfaces.
5262    
5263      @Test:
5264        @@QName: AtomLinkElementThread.1.test
5265        @@PerlDef:
5266          my $doc;
5267          __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5268    
5269          my $el = $doc->create_element_ns (<Q::atom|>, 'link');
5270    
5271          $test->id ('interface');
5272          $test->assert_isa ($el, <IFName::AtomLinkElementThread>);
5273    
5274          $test->id ('feature');
5275          $test->assert_true ($el->is_supported (<Q::fe|AtomThreading> => '1.0'));
5276    
5277      @ATTR:
5278        @@Name: threadCount
5279        @@enDesc:
5280          The <XA::thr|count> attribute of the element.
5281    
5282          It <kwd:MUST> <I::reflect the non-negative integer value
5283          of the <XA::thr|count> attribute> of the node.
5284    
5285          An <XE::atom|link> element using the <XML::replies>
5286          <XA::rel> attribute value <kwd:MAY> contain
5287          a <XA::thr|count> attribute whose value is a
5288          non-negative integer that provides a hint to clients
5289          as to the total number of replies contained by the
5290          linked resource.  The value is advisory and
5291          may not accurately reflect the actual number of replies.
5292        @@Type: idl|long||ManakaiDOM|all
5293        @@Get:
5294          @@@PerlDef:
5295            __CODE{getReflectAttrNonNegativeIntegerValue::
5296              $node => $self,
5297              $namespaceURI => {<Q::thr|>},
5298              $localName => 'count',
5299              $r => $r,
5300              $defaultValue => {null},
5301            }__;
5302        @@Set:
5303          @@@NodeReadOnlyError:
5304          @@@PerlDef:
5305            __CODE{setReflectAttrNonNegativeIntegerValue::
5306              $node => $self,
5307              $namespaceURI => {<Q::thr|>},
5308              $localName => 'count',
5309              $given => $given,
5310            }__;
5311    
5312        @@Test:
5313          @@@QName: AtomLinkElementThread.threadCount.1.test
5314          @@@PerlDef:
5315            my $doc;
5316            __CODE{tc|createEmptyDocumentForTest:: $doc => $doc}__;
5317    
5318            my $link = $doc->create_element_ns (<Q::atom|>, 'link');
5319    
5320            $test->id ('default');
5321            $test->assert_num_equals
5322                     (expected_value => -1,
5323                      actual_value =>
5324                        $link-><AG::AtomLinkElementThread.threadCount>);
5325    
5326            $test->id ('zero');
5327            $link-><AS::AtomLinkElementThread.threadCount> (0);
5328            $test->assert_num_equals
5329                     (expected_value => 0,
5330                      actual_value =>
5331                        $link-><AG::AtomLinkElementThread.threadCount>);
5332            $test->id ('zero.attr');
5333            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '0');
5334    
5335            $test->id ('one');
5336            $link-><AS::AtomLinkElementThread.threadCount> (1);
5337            $test->assert_num_equals
5338                     (expected_value => 1,
5339                      actual_value =>
5340                        $link-><AG::AtomLinkElementThread.threadCount>);
5341            $test->id ('one.attr');
5342            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'), '1');
5343    
5344            $test->id ('10000');
5345            $link-><AS::AtomLinkElementThread.threadCount> (10000);
5346            $test->assert_num_equals
5347                     (expected_value => 10000,
5348                      actual_value =>
5349                        $link-><AG::AtomLinkElementThread.threadCount>);
5350            $test->id ('10000.attr');
5351            $test->assert_equals ($link->get_attribute_ns (<Q::thr|>, 'count'),
5352                                  '10000');
5353    
5354            $test->id ('+10000');
5355            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '+10000');
5356            $test->assert_num_equals
5357                     (expected_value => 10000,
5358                      actual_value =>
5359                        $link-><AG::AtomLinkElementThread.threadCount>);
5360    
5361            $test->id ('010000');
5362            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '010000');
5363            $test->assert_num_equals
5364                     (expected_value => 10000,
5365                      actual_value =>
5366                        $link-><AG::AtomLinkElementThread.threadCount>);
5367    
5368            $test->id ('-100');
5369            $link-><AS::AtomLinkElementThread.threadCount> (-100);
5370            $test->assert_num_equals
5371                     (expected_value => -1,
5372                      actual_value =>
5373                        $link-><AG::AtomLinkElementThread.threadCount>);
5374            $test->id ('-100.attr');
5375            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5376    
5377            $test->id ('120a');
5378            $link->set_attribute_ns (<Q::thr|>, 'thr:count', '120a');
5379            $test->assert_num_equals
5380                     (expected_value => -1,
5381                      actual_value =>
5382                        $link-><AG::AtomLinkElementThread.threadCount>);
5383    
5384            $test->id ('-1');
5385            $link-><AS::AtomLinkElementThread.threadCount> (-1);
5386            $test->assert_num_equals
5387                     (expected_value => -1,
5388                      actual_value =>
5389                        $link-><AG::AtomLinkElementThread.threadCount>);
5390            $test->id ('-1.attr');
5391            $test->assert_false ($link->has_attribute_ns (<Q::thr|>, 'count'));
5392    
5393      @enImplNote:
5394        @@ddid: updated
5395        @@@:
5396          {TODO::
5397            <XA::thr|updated> attribute
5398          }
5399    ##AtomLinkElementThread
5400    
5401    enImplNote:
5402      @@ddid: total
5403      @@@:
5404        {TODO::
5405          <XE::thr|total>
5406        }
5407    
5408    enImplNote:
5409      @@ddid: threaddtd
5410      @@@:
5411        {TODO::
5412          DTD impl for threading
5413        }

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24