CCNx DTD

This corresponds to the XML schema ccnx.xsd.

ccnx.dtd
<!-- DTD for CCNx Protocol -->
<!ENTITY % URI "CDATA"> <!-- a Uniform Resource Identifier -->
<!ENTITY % commonattrs
        "xmlns %URI; #FIXED 'http://www.ccnx.org/content/schema/20090915'">

<!ENTITY % publisherid "PublisherPublicKeyDigest        |
                        PublisherCertificateDigest      |
                        PublisherIssuerKeyDigest        |
                        PublisherIssuerCertificateDigest">

<!ELEMENT CCNProtocolDataUnit   ((ContentObject | Interest)*)>
<!ATTLIST CCNProtocolDataUnit   %commonattrs;>

<!ELEMENT ContentObject (Signature, Name, SignedInfo, Content)>
<!ATTLIST ContentObject %commonattrs;>

<!ELEMENT Collection    (Link*)>
<!ATTLIST Collection    %commonattrs;>

<!ELEMENT Link          (Name, Label?, LinkAuthenticator?)>
<!ATTLIST Link          %commonattrs;>

<!ELEMENT CompleteName  (Name, SignedInfo, Signature)>
<!ATTLIST CompleteName  %commonattrs;>

<!ELEMENT LinkAuthenticator ((%publisherid;)?, NameComponentCount?, Timestamp?, Type?, ContentDigest?)>
<!ATTLIST LinkAuthenticator %commonattrs;>

<!ELEMENT KeyValueSet   (Entry*)>
<!ATTLIST KeyValueSet   %commonattrs;>

<!ENTITY % valuechoice "IntegerValue    |
                        DecimalValue    |
                        StringValue     |
                        BinaryValue     |
                        NameValue">

<!ELEMENT Entry         (Key, (%valuechoice;))>
<!ATTLIST Entry         %commonattrs;>

<!ELEMENT IntegerValue  (#PCDATA)>      <!-- integer -->
<!ELEMENT DecimalValue  (#PCDATA)>      <!-- decimal -->
<!ELEMENT StringValue   (#PCDATA)>      <!-- string -->

<!ELEMENT BinaryValue   (#PCDATA)>      <!-- base64Binary -->
<!ELEMENT NameValue     (Name)>         <!-- ccnx Name -->
<!ATTLIST BinaryValue   ccnbencoding CDATA #FIXED 'base64Binary'>
<!ATTLIST BinaryValue   %commonattrs;>

<!ELEMENT Header        (Start, Count, BlockSize, Length, ContentDigest?, RootDigest?)>
<!ATTLIST Header        %commonattrs;>

<!ELEMENT Start         (#PCDATA)>      <!-- nonNegativeInteger -->
<!ELEMENT Count         (#PCDATA)>      <!-- nonNegativeInteger -->
<!ELEMENT BlockSize     (#PCDATA)>      <!-- nonNegativeInteger -->
<!ELEMENT Length        (#PCDATA)>      <!-- nonNegativeInteger -->

<!ELEMENT RootDigest    (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST RootDigest    ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT Content       (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Content       ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT Name          (Component*)>
<!ATTLIST Name          %commonattrs;>

<!ELEMENT Component     (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Component     ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT SignedInfo    (PublisherPublicKeyDigest,
                         Timestamp,
                         Type?,
                         FreshnessSeconds?,
                         FinalBlockID?,
                         KeyLocator?)>
<!ATTLIST SignedInfo %commonattrs;>

<!ELEMENT NameComponentCount (#PCDATA)> <!-- nonNegativeInteger -->

<!ELEMENT Interest      (Name,
                         MinSuffixComponents?,
                         MaxSuffixComponents?,
                         (%publisherid;)?,
                         Exclude?,
                         ChildSelector?,
                         AnswerOriginKind?,
                         Scope?,
                                                 InterestLifetime?,
                         Nonce?)>
<!ATTLIST Interest      %commonattrs;>

<!ELEMENT PublisherPublicKeyDigest      (#PCDATA)>      <!-- base64Binary SHA-256 digest -->
<!ATTLIST PublisherPublicKeyDigest   ccnbencoding CDATA #FIXED 'base64Binary'>
<!ATTLIST PublisherPublicKeyDigest      %commonattrs;>

<!ELEMENT PublisherCertificateDigest    (#PCDATA)>      <!-- base64Binary SHA-256 digest -->
<!ATTLIST PublisherCertificateDigest   ccnbencoding CDATA #FIXED 'base64Binary'>
<!ATTLIST PublisherCertificateDigest    %commonattrs;>

<!ELEMENT PublisherIssuerKeyDigest      (#PCDATA)>      <!-- base64Binary SHA-256 digest -->
<!ATTLIST PublisherIssuerKeyDigest   ccnbencoding CDATA #FIXED 'base64Binary'>
<!ATTLIST PublisherIssuerKeyDigest      %commonattrs;>

<!ELEMENT PublisherIssuerCertificateDigest      (#PCDATA)>      <!-- base64Binary SHA-256 digest -->
<!ATTLIST PublisherIssuerCertificateDigest   ccnbencoding CDATA #FIXED 'base64Binary'>
<!ATTLIST PublisherIssuerCertificateDigest      %commonattrs;>

<!ELEMENT Exclude       ((Any | Bloom)?, (Component, (Any | Bloom)?)*)>

<!ELEMENT Any           EMPTY>

<!ELEMENT Bloom (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Bloom ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT ChildSelector (#PCDATA)>    <!-- nonNegativeInteger -->

<!ELEMENT AnswerOriginKind (#PCDATA)>   <!-- nonNegativeInteger -->

<!ELEMENT Scope         (#PCDATA)>      <!-- nonNegativeInteger -->

<!ELEMENT Nonce         (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Nonce         ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT ExperimentalResponseFilter (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST ExperimentalResponseFilter ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT MinSuffixComponents (#PCDATA)> <!-- nonNegativeInteger -->

<!ELEMENT MaxSuffixComponents (#PCDATA)> <!-- nonNegativeInteger -->

<!ELEMENT Timestamp     (#PCDATA)>      <!-- binary, 12 bit fraction -->
<!ATTLIST Timestamp     ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT InterestLifetime      (#PCDATA)>      <!-- binary, 12 bit fraction -->
<!ATTLIST InterestLifetime      ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT FreshnessSeconds (#PCDATA)>   <!-- nonNegativeInteger -->

<!ELEMENT FinalBlockID  (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST FinalBlockID  ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT Type          (#PCDATA)>      <!-- DATA, ENCR, GONE, KEY/, LINK, NACK -->
<!ATTLIST Type          ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT ContentDigest (#PCDATA)>      <!-- base64 encoding of DER-encoded DigestInfo -->
<!ATTLIST ContentDigest ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT KeyLocator    (Key | Certificate | KeyName)>
<!ATTLIST KeyLocator    %commonattrs;>

<!ELEMENT Key           (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Key           ccnbencoding CDATA #FIXED 'base64Binary'>
<!ELEMENT Certificate   (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Certificate   ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT Signature     (DigestAlgorithm?, Witness?, SignatureBits)>

<!ELEMENT DigestAlgorithm  (#PCDATA)>   <!-- decimal OID -->

<!ELEMENT Witness       (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST Witness       ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT SignatureBits (#PCDATA)>      <!-- base64Binary -->
<!ATTLIST SignatureBits ccnbencoding CDATA #FIXED 'base64Binary'>

<!ELEMENT KeyName       (Name, (%publisherid;)?)>
<!ATTLIST KeyName       %commonattrs;>

<!ELEMENT FaceInstance  (Action?,
                         PublisherPublicKeyDigest?,
                         FaceID?,
                         IPProto?,
                         Host?,
                         Port?,
                         MulticastInterface?,
                         MulticastTTL?,
                         FreshnessSeconds?)>

<!ATTLIST FaceInstance %commonattrs;>

<!ELEMENT Action        (#PCDATA)>

<!ELEMENT FaceID        (#PCDATA)>      <!-- nonNegativeInteger -->

<!ELEMENT IPProto       (#PCDATA)>      <!-- nonNegativeInteger -->

<!ELEMENT Host          (#PCDATA)>      <!-- textual representation of address -->

<!ELEMENT Port          (#PCDATA)>      <!-- nonNegativeInteger -->

<!ELEMENT MulticastInterface (#PCDATA)> <!-- for multicast when there are multiple interfaces -->
<!ELEMENT MulticastTTL       (#PCDATA)> <!-- nonNegativeInteger -->

<!ELEMENT ForwardingEntry  (Action?,
                            Name?,
                            PublisherPublicKeyDigest?,
                            FaceID?,
                            ForwardingFlags?,
                            FreshnessSeconds?)>
<!ATTLIST ForwardingEntry %commonattrs;>

<!ELEMENT ForwardingFlags (#PCDATA)>    <!-- nonNegativeInteger -->

<!ELEMENT StatusResponse (StatusCode, StatusText?)>
<!ELEMENT StatusCode (#PCDATA)> <!-- nonNegativeInteger -->
<!ELEMENT StatusText (#PCDATA)> <!-- textual description of error or other condition -->