[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Atom schema in ASN.1



For those who generate XML using ASN.1 based tools, the draft ASN.1
schema for Atom which is below may be useful.

Note: There are three files: Cut and paste, etc. The XML.asn and
XSD.asn files are provided for those not familiar with this stuff who
might be interested in digging into it a bit.
	Atom.asn
	XML.asn
	XSD.asn

        bob wyman

===================================
File: Atom.asn
===================================
Atom
DEFINITIONS XER INSTRUCTIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS 
    Lang
    FROM XML
    String, AnyURI, AnySimpleType, DateTime, Date, NormalizedString
    FROM XSD;

Feed ::= [NAME AS UNCAPITALIZED] [ELEMENT] FeedType

FeedType ::= [NAME AS UNCAPITALIZED] SET {
    version          [NOT NAMESPACE] [ATTRIBUTE] VersionType,
    lang             [ATTRIBUTE] Lang OPTIONAL,
    title            XSD.String,
    link-list        [UNTAGGED] SEQUENCE OF link LinkType,
    author           PersonType OPTIONAL,
    contributor-list [UNTAGGED] SEQUENCE OF contributor PersonType,
    tagline          ContentType OPTIONAL,
    id               XSD.AnyURI OPTIONAL,
    generator        GeneratorType OPTIONAL,
    copyright        XSD.String OPTIONAL,
    info             ContentType OPTIONAL,
    modified         Iso8601dateTime,
    entry-list       [UNTAGGED] SEQUENCE OF entry EntryType
}

PersonType ::= [NAME AS UNCAPITALIZED] SET {
    name  XSD.String,
    url   XSD.AnyURI OPTIONAL,
    email EmailType OPTIONAL
}

LinkType ::= [NAME AS UNCAPITALIZED] SET {
    href  [NOT NAMESPACE] [ATTRIBUTE] XSD.AnyURI,
    rel   [NOT NAMESPACE] [ATTRIBUTE] [WHITESPACE COLLAPSE] ENUMERATED
{
      alternate,
      next,
      prev,
      service-edit,
      service-feed,
      service-post,
      start
    },
    title [NOT NAMESPACE] [ATTRIBUTE] XSD.String OPTIONAL,
    type  [NOT NAMESPACE] [ATTRIBUTE] XSD.String
}

GeneratorType ::= [NAME AS UNCAPITALIZED] SET {
    url     [NOT NAMESPACE] [ATTRIBUTE] XSD.AnyURI OPTIONAL,
    version [NOT NAMESPACE] [ATTRIBUTE] XSD.String OPTIONAL,
    base    [UNTAGGED] XSD.String
}

EntryType ::= [NAME AS UNCAPITALIZED] SET {
    lang             [ATTRIBUTE] Lang OPTIONAL,
    title            XSD.String,
    link-list        [UNTAGGED] SEQUENCE (SIZE(1..MAX)) OF link
LinkType,
    author           PersonType OPTIONAL,
    contributor-list [UNTAGGED] SEQUENCE OF contributor PersonType,
    id               XSD.String,
    modified         Iso8601dateTime,
    issued           Iso8601dateTime,
    created          Iso8601dateTime OPTIONAL,
    summary          ContentType OPTIONAL,
    generator        GeneratorType OPTIONAL,
    content-list     [UNTAGGED] SEQUENCE OF content ContentType
}

ContentType ::= [NAME AS UNCAPITALIZED] [EMBED-VALUES] SEQUENCE {
    embed-values SEQUENCE OF UTF8String,
    mode         [NOT NAMESPACE] [ATTRIBUTE] ENUMERATED {
     base64,
     escaped,
     xml
    } DEFAULT xml,
    type         [NOT NAMESPACE] [ATTRIBUTE] XSD.AnySimpleType 
                 DEFAULT  "text/plain",
    lang         [ATTRIBUTE] Lang OPTIONAL,
    elem-list    [UNTAGGED] SEQUENCE OF elem [ANY-ELEMENT EXCEPT
ABSENT
       "http://purl.org/atom/ns#";] UTF8String (CONSTRAINED BY
       {/* Shall conform to the "AnyElementFormat" specified
        in ITU-T Rec. X.693 | ISO/IEC 8825-4. */})
} (CONSTRAINED BY
    {/* Shall conform to ITU-T Rec. X.693 | ISO/IEC 8825-4, 25.2.5
*/})

Iso8601dateTime ::= [NAME AS UNCAPITALIZED] [USE-UNION] CHOICE {
    dateTime XSD.DateTime,
    date     XSD.Date
}

VersionType ::= [NAME AS UNCAPITALIZED] XSD.NormalizedString
(CONSTRAINED BY
    {/* XML representation of the XSD pattern "\d+\.\d+" */})

EmailType ::= [NAME AS UNCAPITALIZED] XSD.NormalizedString
(CONSTRAINED BY
    {/* XML representation of the XSD pattern "\w+@(\w+\.)+\w+" */})

ENCODING-CONTROL XER
    GLOBAL-DEFAULTS MODIFIED-ENCODINGS
    GLOBAL-DEFAULTS CONTROL-NAMESPACE
 "http://www.w3.org/2001/XMLSchema-instance"; PREFIX "xsi"
    NAMESPACE ALL, ALL IN ALL AS "http://purl.org/atom/ns#"; PREFIX
"atom"
    NAMESPACE FeedType.lang, EntryType.lang, ContentType.lang
       AS "http://www.w3.org/XML/1998/namespace";
    NAMESPACE Iso8601dateTime.dateTime, Iso8601dateTime.date
       AS "http://www.w3.org/2001/XMLSchema"; PREFIX "xsd"
    TEXT LinkType.rel:alternate, LinkType.rel:next, LinkType.rel:prev,

          LinkType.rel:start
    TEXT LinkType.rel:service-edit AS "service.edit"
    TEXT LinkType.rel:service-feed AS "service.feed"
    TEXT LinkType.rel:service-post AS "service.post"
END

===================================
File: XML.asn
===================================
XML
DEFINITIONS XER INSTRUCTIONS AUTOMATIC TAGS ::=
BEGIN
IMPORTS 
    Language
    FROM XSD;

Lang ::= [NAME AS UNCAPITALIZED] [ATTRIBUTE] XSD.Language

ENCODING-CONTROL XER
    GLOBAL-DEFAULTS MODIFIED-ENCODINGS
    GLOBAL-DEFAULTS CONTROL-NAMESPACE
	"http://www.w3.org/2001/XMLSchema-instance"; PREFIX "xsi"
    NAMESPACE ALL, ALL IN ALL AS
"http://www.w3.org/XML/1998/namespace";
END

===================================
File: XSD.asn
===================================
XSD {joint-iso-itu-t asn1(1) specification(0) modules(0)
xsd-module(1)}
DEFINITIONS XER INSTRUCTIONS AUTOMATIC TAGS ::=
BEGIN

XMLCompatibleString ::= UTF8String (FROM (
    {0, 0, 0, 9} | {0, 0, 0, 10} | {0, 0, 0, 13} |
    {0, 0, 0, 32}  .. {0, 0, 215, 255} |
    {0, 0, 224, 0} .. {0, 0, 255, 253} |
    {0, 1, 0, 0}   .. {0, 16, 255, 253}))

XMLStringWithNoCRLFHT ::= UTF8String (FROM (
    {0, 0, 0, 32}  .. {0, 0, 215, 255} | 
    {0, 0, 224, 0} .. {0, 0, 255, 253} | 
    {0, 1, 0, 0}   .. {0, 16, 255, 253}))

DATE-TIME ::= VisibleString (FROM ("0".."9" | "DHMPSTYZ:.+-"))
   (CONSTRAINED BY {/* XSD clause 3.2.7 */})

Language::= VisibleString (FROM ("a".."z" | "A".."Z" |
    "-" | "0".."9")) (PATTERN "[a-zA-Z]#(1,8)(-[a-zA-Z0-9]#(1,8))*")
    -- The semantics of Language is specified in IETF RFC 3066

String ::= XMLCompatibleString

AnyURI ::= XMLStringWithNoCRLFHT (CONSTRAINED BY
    {/* The XMLCompatibleString shall be a valid URI - see IETF RFC
2396 */})

AnySimpleType ::= XMLCompatibleString

DateTime ::= DATE-TIME

DateOnly  ::= DATE-TIME (FROM ("0".."9" | "Z:+-")) (CONSTRAINED BY
    {/* XSD clause 3.2.9 */})

Date ::= DATE-TIME (DateOnly)

NormalizedString ::= String (XMLStringWithNoCRLFHT) (CONSTRAINED BY
    {/* The String shall be a normalizedString - see W3C XML Schema
	Part. 2 - clause 3.3.1 */})

ENCODING-CONTROL XER
    GLOBAL-DEFAULTS MODIFIED-ENCODINGS
    GLOBAL-DEFAULTS CONTROL-NAMESPACE
	"http://www.w3.org/2001/XMLSchema-instance"; PREFIX "xsi"
    NAMESPACE ALL, ALL IN ALL AS "http://www.w3.org/2001/XMLSchema";
	PREFIX "xsd"
    NAME Language, String, AnyURI, AnySimpleType, DateTime, Date, 
	NormalizedString AS CAPITALIZED
    WHITESPACE NormalizedString REPLACE
    WHITESPACE Language, AnyURI, DATE-TIME COLLAPSE
END