[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