Extensions XSD

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Infomaker Scandinavia AB
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
    targetNamespace="http://www.infomaker.se/newsml/1.0"
    xmlns:object="http://www.infomaker.se/newsml/1.0">
    <xs:element name="metadata">
        <xs:annotation>
            <xs:documentation>Contains information considered to be ”metadata” for the document, e.g. news value.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="object:object"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="object">
        <xs:annotation>
            <xs:documentation>Contains data that lives inside the document only (compared to a link which points to an external entity and represents a relation). Typically a content-plugin will store its information in an object element.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="object:data"/>
                <xs:element minOccurs="0" ref="object:links"/>
            </xs:sequence>
            <xs:attribute name="id" use="required" type="xs:NMTOKEN">
                <xs:annotation>
                    <xs:documentation>This must be a unique id inside of the document in which the object is used</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="type" use="required" type="object:notEmptyString">
                <xs:annotation>
                    <xs:documentation>Identifies the type of the object, e.g. "x-im/newsvalue".</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="title" use="optional">
                <xs:annotation>
                    <xs:documentation>A human readable title or name of the object.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="uri" use="optional" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>An URI identifying the object. Cannot not be used in combination with attribute uuid.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="url" use="optional" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>An URL to the object.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="uuid" use="optional" type="object:notEmptyString">
                <xs:annotation>
                    <xs:documentation>An UUID identifying the object. Cannot not be used in combination with attribute uri.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:element name="data">
        <xs:annotation>
            <xs:documentation>Contains ”any” children. Used to store plugin specific data.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded">
                    <xs:annotation>
                        <xs:documentation>Any element is allowed in data section</xs:documentation>
                    </xs:annotation>
                </xs:any>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="links">
        <xs:annotation>
            <xs:documentation>Wraps all link:s used in the document/element.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="object:link"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="link">
        <xs:annotation>
            <xs:documentation>Represents a link to an external (from the documents perspective) entity. Make use of attributes to describe how the relation to the entity should be interpreted.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" ref="object:data"/>
                <xs:element minOccurs="0" ref="object:links"/>
            </xs:sequence>
            <xs:attribute name="rel" use="optional" type="xs:NMTOKEN">
                <xs:annotation>
                    <xs:documentation>Describes the relationship between the entity to which the link points to and the document containing the link.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="type" use="required" type="object:notEmptyString">
                <xs:annotation>
                    <xs:documentation>Identifies the type of the link, e.g. "x-im/author".</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="uri" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>An URI identifying the link. Cannot not be used in combination with attribute uuid.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="url" type="xs:anyURI">
                <xs:annotation>
                    <xs:documentation>The URL of the link.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="title" use="optional" type="xs:normalizedString">
                <xs:annotation>
                    <xs:documentation>A human readable title or name of the link.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="uuid" use="optional" type="object:notEmptyString">
                <xs:annotation>
                    <xs:documentation>An UUID identifying the link. Cannot not be used in combination with attribute uri.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="notEmptyString">
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:pattern value=".*[^\s].*"/>
        </xs:restriction>
    </xs:simpleType>
</xs:schema>