<!-- 
                   ===========================================
                   NewsML Document Type Definition Version 1.0
                   ===========================================
                 International Press Telecommunications Council
                                6 October 2000
                            Copyright (c) IPTC, 2000
                              All rights reserved
                         NewsML is a trademark of IPTC

                     ======================================
                     DO NOT REMOVE THESE LICENCE CONDITIONS
                     ======================================
         LICENCE OF THE IPTC NewsML TRADEMARK TO NON-MEMBERS OF THE IPTC

Use of the IPTC trademark shall be licensed by the IPTC ("the Licensor") to a
Non-Member ("the Licensee") in consideration of the following obligations
undertaken by the Licensee under the terms of this contract.

 1. The Licensee recognises the Licensor as the sole owner of the intellectual
    property protected by the trademark.

 2. The Licensee recognises that the Licensor has the right to grant licenses
    of the intellectual property protected by the trademark and has agreed to
    grant such a licence to the Licensee in the terms set out in this contract.

 3. The Licensee shall not during the subsistence of this contract or at any
    future time register to use in its own name as proprietor any of the
    intellectual property protected by the trademark. 

 4. The Licensee shall not claim any right title or interest in the
    intellectual property or any part of it save as is granted by this contract.

 5. The Licensee shall immediately call to the attention of the Licensor the use
    of any part of the intellectual property by any third party or any activity
    of any third party which might in the opinion of the Licensee amount to
    infringement of the rights protected by the trademark.

 6. The Licensee shall not assign the benefit of this contract or grant any
    sub-licence without the prior written consent of the Licensor.

 7. Use of the IPTC trademark is licensed only to those Licensees who comply
    with the requirements of the official published description of NewsML.

 8. The Licensee promises to respect the integrity and quality standard of the
    trademark and shall refrain from all acts and omissions which threaten the
    integrity of the trademark as a mark of quality.

 9. The Licensee shall communicate immediately to the IPTC any instances of
    actual or suspected misuse or non-compliance with the official published
    description of NewsML which come to the attention of the Licensee.

10. The Licensee shall, at the request of the IPTC Management Committee acting
    unanimously, accede to any reasonable request of the IPTC to inspect the
    address of the Licensee to verify compliance and each Licensee shall afford
    to the IPTC such assistance as is requested by the IPTC in response to the
    latter's reasonable enquiries in instances of suspected non-compliance with
    the official published description of NewsML requirements.

The Licensee shall from time to time provide the IPTC with the full address of
its place of business and that place will be deemed the Licensee's address.

The IPTC reserves the right to terminate the use of the trademark by the
Licensee at any time without notice or without the need to give reasons to the
Licensee for such termination.

This contract shall be governed and construed in accordance with the laws of
England and Wales whose courts shall be courts of competent jurisdiction.
-->
<!-- 
                                ================
                                NOTE ON SPELLING
                                ================
NewsML element and attribute names use US-English spellings. With this
exception, this DTD and its accompanying specification use British English
spellings.
-->
<!-- 
                         =============================
                         PARAMETER ENTITY DECLARATIONS 
                         =============================
-->
<!-- 
================================================================================
                                 Attribute sets 
================================================================================
-->
<!-- 
================================== assignment ==================================
AssignedBy
==========
An identifier for the party assigning a piece of metadata. This can be a
string that designates the party informally (for example, a person's name),
or a pointer in the form a fragment identifier consisting of a # character
followed by the Duid of a Topic corresponding to the party.

Importance
==========
An indication of the importance the party assigning a piece of metadata
attaches to it. The value of the Importance attribute is a formal name for a
level of importance. Its meaning and permitted values are determined by a
controlled vocabulary.

Confidence
==========
An indication of the confidence with which a piece of metadata has been
assigned. The value of the Confidence attribute is a formal name for a
degree of confidence. Its meaning and permitted values are determined by a
controlled vocabulary.

HowPresent
==========
An indication of the way in which a piece of metadata applies. The value of
the HowPresent attribute is a formal name for the way the metadata applies.
Its meaning and permitted values are determined by a controlled vocabulary.

DateAndTime
===========
The date and (optionally) time at which a piece of metadata was assigned. 

Uses the format CCYYMMDDTHHMMSS{+or-}HHMM (century, year, month, day, time
separator, hours, minutes, seconds, timezone separator, hours, minutes). If
only the Date is needed, then the substring from T onwards may be omitted.

This is the Basic Format defined by ISO 8601. CCYY is a 4-digit year number.
MM is a 2-digit month number. DD is a 2-digit day number. T is the letter 'T'.
HH is a 2-digit hour number (using a 24-hour clock). MM is a 2 digit minute
number. (Note that midnight may be represented as 2400 or 240000 on the date
of the day that is ending, or as 0000 or 000000 on the date of the day that is
beginning.)

{+or-} is the '+' character or the '-' character, and the following HHMM are
hours and minutes of offset from Universal Co-ordinated Time (UTC) as defined
by ISO 8601. If the time is being expressed in UTC, then the timezone offset
may be '+0000' or '-0000'. If the time is behind UTC, the timezone separator
is '-'. If the time is ahead of UTC the timezone separator is '+'.

Example: 10:27 p.m. in New York on 31 December 2000 would be expressed as 
"20001231T222700-0500" as New York is five hours behind UTC in winter.
At the same moment in London, the date and time would be expressed as 
time would be expressed as "20010101T032700+0000" or as , "20010101T00+0000", as
in London, it is now 3:27 a.m.  on 1 January 2001. At the same moment in Paris,
the date and time would be expressed as "20010101T042700+0100", as Paris is one
hour ahead of UTC in winter, and it is now 4:27 a.m. on 1 January 2001.
================================================================================

-->
<!ENTITY % assignment " AssignedBy  CDATA  #IMPLIED
                     Importance  CDATA  #IMPLIED
                     Confidence  CDATA  #IMPLIED
                     HowPresent  CDATA  #IMPLIED
                     DateAndTime CDATA  #IMPLIED">

<!-- 
================================= formalname ===================================

FormalName
==========
A string of characters whose meaning is determined by a controlled vocabulary.

Vocabulary
==========
The Vocabulary attribute, if present, provides a pointer to a TopicSet which is
the controlled vocabulary that can be used to resolve the meaning of the
FormalName. The value of the Vocabulary attribute is an http URL or a NewsML
URN, or the # character followed by the value of the Duid attribute of the a
TopicSet in the current document.

If there is no Vocabulary attribute, then the controlled vocabulary to be used
is located by the following algorithm:
- Proceed to the parent of the current element.
- If it has a Catalog element as its immediate child, see whether that Catalog
  contains a Resource element whose DefaultVocabularyFor child contains an XPath
  pattern that is matched by the current element. If so, then the controlled
  vocabulary is the resource identified by that Resource element.
- If the parent does not meet the above condition, proceed to its parent and
  check the same condition.
- Continue until a vocabulary is found, or no further parent elements are
  available because the root element has been reached and it too fails to meet
  the condition.

If there is no Vocabulary attribute and the above algorithm fails to identify
a resource that serves as the controlled vocabulary, there is an error, which
the NewsML system may signal to the user.

The NewsML system may also signal an error if a vocabulary is successfully
identified, but it contains no item that matches the value of the FormalName
whose meaning is sought.

Scheme
======
The Scheme attribute, if present, serves to distinguish which of possibly
multiple naming schemes in the controlled vocabulary is the one that governs
this FormalName. For a match to be obtained within the controlled vocabulary,
the rule is that the FormalName and the Scheme must both match. If there is
no Scheme attribute on the current element, the match will be to an item in
the vocabulary that has the current formal name and no scheme. If there is a
Scheme attribute on the current element, then both the formal name and the
scheme in the controlled vocabulary must match.
================================================================================
-->
<!ENTITY % formalname " FormalName CDATA  #REQUIRED
                     Vocabulary CDATA  #IMPLIED
                     Scheme     CDATA  #IMPLIED">

<!-- 
=================================== localid ====================================

Duid
====
Duid is a "Document-unique Identifier". It must satisfy the rules for XML ID
attributes: it must only contain name characters, and it must start with a 
name-start character (not a digit). Its value must be unique within any NewsML
document.

Every NewsML element type has Duid as an optional attribute. Combined with the
Identifier element, providing a value for the Duid of any element in a NewsML
document makes the element globally identifiable. The Identifier element gives
global identification to the document, and the Duid provides local
identification for the element within the document.

Euid
====
Euid is an "Element-unique Identifier". Its value must be unique among elements
of the same element-type and having the same parent element.

Use of Euid attribute makes it possible to identify any NewsML element within
the context of its local branch of the NewsML document tree. This makes it
possible to copy, or include by reference, subtrees into new combinations in
ways that would break the uniqueness of Duids (thereby forcing new Duids to be
allocated), but still being able to retain the identity of each element. If
Euids are maintained at every level, it is possible to identify, for example
"The ContentItem whose Euid is abc within the NewsComponent whose Euid is def".
Such identification patterns would be preserved even after "pruning and
grafting" of subtrees.
================================================================================
-->
<!ENTITY % localid " Duid ID     #IMPLIED
                     Euid CDATA  #IMPLIED">

<!-- 
================================================================================
                                 Content Models 
================================================================================
-->
<!-- 
===================================== data =====================================
Where data is included, it may be directly in the form of a DataContent element,
or in the form of DataContent wrapped in an Encoding element, or by reference
through an Href attribute, in which case neither a DataContent nor an Encoding
element will be present.
================================================================================
-->
<!ENTITY % data " (Encoding
                 | DataContent )?">

<!-- 
==================================== party =====================================
Person, organisation or company playing a specific role in the
news workflow. The role being played is determined by the parent element. More
information about it can be provided in the optional Comment subelements. 
================================================================================

-->
<!ENTITY % party " (Comment*
                  , Party+ )">

<!-- 
                           =========================
                           ELEMENT TYPE DECLARATIONS 
                           =========================
-->
<!-- 
============================ AdministrativeMetadata ============================
Information about the provenance of a NewsComponent. 
================================================================================
-->
<!ELEMENT AdministrativeMetadata  (Catalog? , FileName? , SystemIdentifier? , Provider? , Creator? , Source* , Contributor* , Property* )>
<!ATTLIST AdministrativeMetadata  %localid; >
<!-- 

================================ AssociatedWith ================================
A reference to a NewsItem with which this one is associated (for example, a
series of articles, or a collection of photos, of which it is a part). The 
NewsItem attribute identifies the relevant NewsItem. Its value can be an
http URL or a NewsML URN as described in the comment to PublicIdentifier. The
Comment can be used to indicate the nature of the association.
================================================================================

-->
<!ELEMENT AssociatedWith  (Comment* )>
<!ATTLIST AssociatedWith  %localid;
                          NewsItem CDATA  #IMPLIED >
<!-- 
================================ BasisForChoice ================================
The content of this element is an XPath statement or element-type name
identifying information within each NewsComponent or ContentItem that can be
used as a basis for choice between equivalent NewsComponents or ContentItems.
The root of the XPath corresponds to the NewsComponent or ContentItem itself.
The optional Rank attribute allows providers to place a numerical order on the
importance they think should be attached to the different bases for choice.
Smaller numbers represent higher importance.
================================================================================
-->
<!ELEMENT BasisForChoice  (#PCDATA )>
<!ATTLIST BasisForChoice  %localid;
                          Rank    CDATA  #IMPLIED >
<!-- 

==================================== ByLine ====================================
A natural-language statement of the author/creator information.
================================================================================
-->
<!ELEMENT ByLine  (#PCDATA | Origin )*>
<!ATTLIST ByLine  %localid;
                  xml:lang CDATA  #IMPLIED >
<!-- 
=================================== Catalog ====================================
A container for Resource and TopicUse elements. Resource elements map URNs to
URLs and indicate default vocabularies which apply to the formal names of
certain elements within the subtree that begins with the immediate parent of
the Catalog element. TopicUse elements indicate where in the NewsML document
certain Topics are used. The optional Href attribute provides a pointer to
a Catalog element elsewhere in this or another document. Its value consists of
a # character followed by the value of the Duid attribute of the referenced
Catalog element and preceded, if the referenced Catalog is not in the current
document, by an http URL or a NewsML URN identifying the document or NewsItem
in which the Catalog appears. If the Href attribute is present on a Catalog
element, then that element should be empty. If it contains subelements, the
NewsML system may signal an error.
================================================================================
-->
<!ELEMENT Catalog  (Resource* , TopicUse* )>
<!ATTLIST Catalog  %localid;
                   Href    CDATA  #IMPLIED >
<!-- 
=============================== Characteristics ================================
Information about the physical characteristics of a ContentItem.
================================================================================
-->
<!ELEMENT Characteristics  (SizeInBytes? , Property* )>
<!ATTLIST Characteristics  %localid; >
<!-- 
=================================== Comment ====================================
A natural-language description of, or statement about, the current element. The
optional TranslationOf attribute is a pointer to another Comment element, of
which this one is a direct translation.
================================================================================
-->
<!ELEMENT Comment  (#PCDATA )>
<!ATTLIST Comment  %localid;
                   xml:lang      CDATA  #IMPLIED
                   TranslationOf IDREF  #IMPLIED >
<!-- 
================================= ContentItem ==================================
A news object that carries or identifies content intended for presentation to
humans.
================================================================================
-->
<!ELEMENT ContentItem  (Comment* , Catalog? , MediaType? , Format? , MimeType? , Notation? , Characteristics? , %data; )>
<!ATTLIST ContentItem  %localid;
                       Href    CDATA  #IMPLIED >
<!-- 
================================= Contributor ==================================
An individual and/or company or organisation that modified or enhanced a news
object after its creation.
================================================================================
-->
<!ELEMENT Contributor  (%party; )>
<!ATTLIST Contributor  %localid; >
<!-- 
================================== Copyright ===================================
The copyright that pertains to a news object.
================================================================================
-->
<!ELEMENT Copyright  (Comment* , CopyrightHolder , CopyrightDate )>
<!ATTLIST Copyright  %localid;
                     %assignment; >
<!-- 
================================ CopyrightDate =================================
A natural-language statement of the copyright date.
================================================================================

-->
<!ELEMENT CopyrightDate  (#PCDATA | Origin )*>
<!ATTLIST CopyrightDate  %localid;
                         xml:lang CDATA  #IMPLIED >
<!-- 
=============================== CopyrightHolder ================================
A natural-language statement indicating who owns the copyright.
================================================================================
-->
<!ELEMENT CopyrightHolder  (#PCDATA | Origin )*>
<!ATTLIST CopyrightHolder  %localid;
                           xml:lang CDATA  #IMPLIED >
<!-- 
================================ CopyrightLine =================================
A natural-language statement of the copyright information.
================================================================================
-->
<!ELEMENT CopyrightLine  (#PCDATA | Origin )*>
<!ATTLIST CopyrightLine  %localid;
                         xml:lang CDATA  #IMPLIED >
<!-- 
=================================== Creator ====================================
An individual and/or company or organisation that created a news object.
================================================================================
-->
<!ELEMENT Creator  (%party; )>
<!ATTLIST Creator  %localid; >
<!-- 
================================== CreditLine ==================================
A natural-language statement of credit information.
================================================================================
-->
<!ELEMENT CreditLine  (#PCDATA | Origin )*>
<!ATTLIST CreditLine  %localid;
                      xml:lang CDATA  #IMPLIED >
<!-- 
================================= DataContent ==================================
The data that carries the content of a ContentItem.
================================================================================
-->
<!ELEMENT DataContent ANY>
<!ATTLIST DataContent  %localid; >
<!-- 
================================= DateAndTime ==================================
A formal representation of a date and, optionally, time, expressed in ISO 8601
Basic Format, as described in the comment to the DateAndTime attribute within
the assignment ENTITY declaration above.
================================================================================
-->
<!ELEMENT DateAndTime  (#PCDATA )>
<!ATTLIST DateAndTime  %localid; >
<!-- 
==================================== DateId ====================================
A date identifier of a NewsItem in short ISO 8601 Basic Format (CCYYMMDD), as
described in the comment to the DateAndTime attribute within the assignment
ENTITY declaration above. The DateId is part of the formal identification of the
NewsItem, and must remain the same through successive revisions of the same
NewsItem.
================================================================================
-->
<!ELEMENT DateId  (#PCDATA )>

<!-- 
================================== DateLabel ===================================
A string representation of a date or date and time, used by human users to help
identify a NewsItem.
================================================================================
-->
<!ELEMENT DateLabel  (#PCDATA )>
<!ATTLIST DateLabel  %localid; >
<!--
=================================== DateLine ===================================
A natural-language statement of the date and/or place of creation.
================================================================================
-->
<!ELEMENT DateLine  (#PCDATA | Origin )*>
<!ATTLIST DateLine  %localid;
                    xml:lang CDATA  #IMPLIED >
<!-- 
============================ DefaultVocabularyFor ==============================
An indication that the parent Resource provides the default vocabulary that
determines the meanings and permitted values of the data occurring in a
particular part of a NewsML document subtree. The Context attribute is an
XPath statement identifying the data to which the default vocabulary applies.
The optional Scheme attribute identifies the relevant naming scheme if the
Resource contains more than one naming scheme. If the Resource is a NewsML
TopicSet, then the meaning of the data identified by the Context is provided
by the Topic whose FormalName subelement matches that data. If the Resource is
not a NewsML TopicSet, then the way in which it is interpreted in order to
provide a meaning for the data is not defined by NewsML but by the authority
that governs whatever format the Resource uses.

Example:
<DescriptiveMetadata>
 <Catalog>
  <Resource Duid="resource1">
   <Urn>urn:newsml:iptc.org:20001006:Ranking:1</Urn>
   <Url>www.iptc.com/vocabularies/iptc-rank.xml</Url>
   <DefaultVocabularyFor Context="@Confidence"/>
   <DefaultVocabularyFor Context="@Importance"/>
  </Resource>
  <Resource Duid="resource2">
   <Urn>urn:newsml:iptc.org:20001006:TopicTypes:1</Urn>
   <Url>www.iptc.com/vocabularies/iptc-topictype.xml</Url>
   <DefaultVocabularyFor Context="TopicType@FormalName"/>
  </Resource>
 </Catalog>
 <TopicSet>
  <Topic Duid="topic1">
   <TopicType FormalName="Person">
   <Description Variant="Name">Bill Clinton</Description>
   <Description Variant="Position">President of the USA</Description>
  </Topic>
 </TopicSet>
 <TopicOccurrence
  AssignedBy="Desk Editor"
  Confidence="High"
  HowPresent="principal subject"
  Topic="#topic1"/>
</DescriptiveMetadata>
================================================================================
-->
<!ELEMENT DefaultVocabularyFor EMPTY>
<!ATTLIST DefaultVocabularyFor  %localid;
                                Context CDATA  #REQUIRED
                                Scheme  CDATA  #IMPLIED >
<!--
==================================== Delete ====================================
An instruction to delete an element within a NewsItem. The NewsItem is
the previous revision of the current one, and the element to be deleted is the
one whose Duid value is equal to the value of the Delete element's DuidRef
attribute.
================================================================================
-->
<!ELEMENT Delete EMPTY>
<!ATTLIST Delete  %localid;
                  DuidRef CDATA  #REQUIRED >
<!-- 
================================= DerivedFrom ==================================
A reference to an NewsItem from which this one is derived. The NewsItem attribute
identifies the relevant NewsItem. Its value can be an http URL or a NewsML URN
as described in the comment to PublicIdentifier.
================================================================================
-->
<!ELEMENT DerivedFrom  (Comment* )>
<!ATTLIST DerivedFrom  %localid;
                       NewsItem CDATA  #IMPLIED >
<!-- 
================================= Description ==================================
A description that identifies a Topic, thereby indicating the meaning of a
formal name associated with that Topic. The xml:lang attribute indicates what
language the description is in. The optional Variant attribute allows multiple
descriptions to be given in the same language, and meaningfully distinguished
from one another.
================================================================================
-->
<!ELEMENT Description  (#PCDATA )>
<!ATTLIST Description  %localid;
                       xml:lang CDATA  #IMPLIED
                       Variant  CDATA  #IMPLIED >
<!-- 
============================= DescriptiveMetadata ==============================
Information describing the content of a NewsComponent. 
================================================================================
-->
<!ELEMENT DescriptiveMetadata  (Catalog? , Language* , Genre? , SubjectCode* , OfInterestTo* , TopicOccurrence* , Property* )>
<!ATTLIST DescriptiveMetadata  %localid;
                               %assignment; >
<!-- 
=================================== Encoding ===================================
The encoding of the data comprising the content of a ContentItem. 
================================================================================
-->
<!ELEMENT Encoding %data;>
<!ATTLIST Encoding  %localid;
                    Notation CDATA  #REQUIRED >
<!-- 
=================================== EndDate ====================================
A natural-language statement of the date at which specified usage rights come
to an end.
================================================================================
-->
<!ELEMENT EndDate  (#PCDATA | Origin )*>
<!ATTLIST EndDate  %localid;
                   xml:lang   CDATA  #IMPLIED
                   %assignment; >
<!-- 
=================================== FileName ===================================
The suggested or actual storage file name for a NewsItem. 
================================================================================
-->
<!ELEMENT FileName  (#PCDATA )>
<!ATTLIST FileName  %localid; >
<!-- 
================================= FirstCreated =================================
The date and, optionally, time at which a NewsItem was first created, expressed
in ISO 8601 Basic Format, as described in the comment to the DateAndTime
attribute within the assignment ENTITY declaration above.
================================================================================
-->
<!ELEMENT FirstCreated  (#PCDATA )>
<!ATTLIST FirstCreated  %localid; >
<!-- 
================================= FormalName ===================================
A string of characters whose meaning is determined by a naming scheme within a
controlled vocabulary. The controlled vocabulary may (but is not required to)
take the form of a NewsML TopicSet. The optional Scheme attribute determines
which naming scheme applies, when several exist within the same controlled
vocabulary.
================================================================================
-->
<!ELEMENT FormalName  (#PCDATA )>
<!ATTLIST FormalName  %localid;
                      Scheme  CDATA  #IMPLIED >
<!-- 
==================================== Format ====================================
An indication of the format of a ContentItem. The value of the FormalName
attribute is a formal name for the Format. Its meaning and permitted values are
determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Format EMPTY>
<!ATTLIST Format  %localid;
                  %formalname; >
<!-- 
================================= FutureStatus =================================
An indication of the status a NewsItem will have at a specified future date. The
value of the FormalName attribute is a formal name for the FutureStatus. Its
meaning is determined by a controlled vocabulary as described in the comment
to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT FutureStatus EMPTY>
<!ATTLIST FutureStatus  %localid;
                        %formalname; >
<!-- 
==================================== Genre =====================================
An indication of the Genre of a NewsComponent. The value of the FormalName
attribute is a formal name for the Genre. Its meaning and permitted values are
determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Genre EMPTY>
<!ATTLIST Genre  %localid;
                 %formalname;
                 %assignment; >
<!-- 
================================== Geography ===================================
A natural-language statement of the geographical area or areas to which
specified usage rights apply.
================================================================================
-->
<!ELEMENT Geography  (#PCDATA | Origin )*>
<!ATTLIST Geography  %localid;
                     xml:lang   CDATA  #IMPLIED
                     %assignment; >
<!-- 
=================================== HeadLine ===================================
A displayable headline.
================================================================================
-->
<!ELEMENT HeadLine  (#PCDATA | Origin )*>
<!ATTLIST HeadLine  %localid;
                    xml:lang CDATA  #IMPLIED >
<!-- 
================================ Identification ================================
Identification information for the NewsItem.
================================================================================
-->
<!ELEMENT Identification  (NewsIdentifier , NameLabel? , DateLabel? , Label* )>
<!ATTLIST Identification  %localid; >
<!--
================================= InsertAfter ==================================
An instruction to insert content after a designated element within a NewsItem.
The content to be inserted is the content of the InsertAfter element. The
NewsItem into which it is to be inserted is the previous revision of the current
one, and the element after which it is to be inserted is the one whose Duid
value is equal to the value of the InsertAfter element's DuidRef attribute.
================================================================================
-->
<!ELEMENT InsertAfter ANY>
<!ATTLIST InsertAfter  %localid;
                       DuidRef CDATA  #REQUIRED >
<!--
================================= InsertBefore =================================
An instruction to insert content before a designated element within a NewsItem.
The content to be inserted is the content of the InsertBefore element. The
NewsItem into which it is to be inserted is the previous revision of the current
one, and the element before which it is to be inserted is the one whose Duid
value is equal to the value of the InsertBefore element's DuidRef attribute.
================================================================================
-->
<!ELEMENT InsertBefore ANY>
<!ATTLIST InsertBefore  %localid;
                        DuidRef CDATA  #REQUIRED >
<!--
================================= Instruction ==================================
An instruction from a news provider to the recipient of a NewsItem. A special
case of Instruction is an indication of the effect the current revision of a
NewsItem has on the status of any previous revisions of the NewsItem that may
still be on the recipient's system. In this case, it will contain one or more
RevisionStatus elements. Otherwise, the value of the FormalName attribute is a
formal name for the Instruction, and its meaning is determined by a controlled
vocabulary as described in the comment to the formalname ENTITY declaration
above.
================================================================================
-->
<!ELEMENT Instruction  (RevisionStatus* )>
<!ATTLIST Instruction  %localid;
                       %formalname; >
<!-- 
================================= KeywordLine ==================================
A displayable set of keywords relevant to a news object. This can be used by a
NewsML system to assist manual or automated searches.
================================================================================
-->
<!ELEMENT KeywordLine  (#PCDATA | Origin )*>
<!ATTLIST KeywordLine  %localid;
                       xml:lang CDATA  #IMPLIED >
<!-- 
==================================== Label =====================================
A human-readable label for a NewsItem.
================================================================================
-->
<!ELEMENT Label  (LabelType , LabelText )>
<!ATTLIST Label  %localid; >
<!-- 
=================================== LabelText ==================================
The text that constitutes a Label of a given LabelType.
================================================================================
-->
<!ELEMENT LabelText  (#PCDATA )>
<!ATTLIST LabelText  %localid; >
<!-- 
================================= LabelType ====================================
A user-defined type of label. The value of the FormalName attribute is a formal
name for the LabelType. Its meaning and permitted values are determined by a
controlled vocabulary as described in the comment to the formalname ENTITY
declaration above.
================================================================================
-->
<!ELEMENT LabelType EMPTY>
<!ATTLIST LabelType  %localid;
                     %formalname; >
<!-- 
=================================== Language ===================================
An indication of the, or a, language used in a content item. The value of the
FormalName attribute is a formal name for the Language. Its meaning and
permitted values are determined by a controlled vocabulary as described in the
comment to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Language EMPTY>
<!ATTLIST Language  %localid;
                    %formalname;
                    %assignment; >
<!-- 
================================= Limitations ==================================
A natural-language statement of the terms and conditions that apply to the
specified usage rights.
================================================================================
-->
<!ELEMENT Limitations  (#PCDATA | Origin )*>
<!ATTLIST Limitations  %localid;
                       xml:lang   CDATA  #IMPLIED
                       %assignment; >
<!-- 
================================== MediaType ===================================
An indication of the media type of a ContentItem. The value of the FormalName
attribute is a formal name for the MediaType. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT MediaType EMPTY>
<!ATTLIST MediaType  %localid;
                     %formalname; >
<!-- 
=================================== Metadata ===================================
An container for a user-defined type of metadata.
================================================================================
-->
<!ELEMENT Metadata  (Catalog? , MetadataType , Property+ )>
<!ATTLIST Metadata  %localid; >
<!-- 
=============================== MetadataType ===================================
An indication of the type of metadata that is represented by the Property
elements within this Metadata element. The value of the FormalName attribute is
a formal name for the MetadataType. Its meaning and permitted values are
determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT MetadataType EMPTY>
<!ATTLIST MetadataType  %localid;
                        %formalname; >
<!-- 
=================================== MimeType ===================================
An indication of the MIME-type of a ContentItem. The value of the FormalName
attribute is a formal name for the MimeType. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT MimeType EMPTY>
<!ATTLIST MimeType  %localid;
                    %formalname; >
<!-- 
================================== NameLabel ===================================
A string used by human users as a name to help identify a NewsItem. Its form is
determined by the provider. It might be identical to the textual content of
the SlugLine element, for example, but even if this is so, the system should not
process the NameLabel as a slugline. Nothing can be assumed about the nature of
the string within NameLabel beyond the fact that it can help to identify the
NewsItem to humans.
================================================================================
-->
<!ELEMENT NameLabel  (#PCDATA )>
<!ATTLIST NameLabel  %localid; >
<!-- 
================================ NewsComponent =================================
A container for news objects, used to identify the role of news objects in
relation to one another, and to ascribe metadata to them. The Essential
attribute indicates whether the provider considers that this NewsComponent
is essential to the meaning of the NewsComponent within which it is contained.
The EquivalentsList attribute indicates whether or not the NewsItems or
NewsItemRefs, NewsComponents or ContentItems contained within this one are
equivalent to one another in content and/or meaning
================================================================================
-->
<!ELEMENT NewsComponent  (Comment* , Catalog? , TopicSet* , Role? , BasisForChoice* , NewsLines? , AdministrativeMetadata? , RightsMetadata? , DescriptiveMetadata? , Metadata* ,  ( (NewsItem | NewsItemRef )+ | NewsComponent+ | ContentItem+ )? )>
<!ATTLIST NewsComponent  %localid;
                         Essential        (yes | no )  'no'
                         EquivalentsList  (yes | no )  'no'
                         xml:lang        CDATA  #IMPLIED >
<!-- 
================================= NewsEnvelope =================================
Information about the transmission of one or more NewsItems as a NewsML
document.
================================================================================
-->
<!ELEMENT NewsEnvelope  (TransmissionId? , SentFrom? , SentTo? , DateAndTime , NewsService* , NewsProduct* , Priority? )>
<!ATTLIST NewsEnvelope  %localid; >
<!-- 
================================ NewsIdentifier ================================
A globally unique identifier for a NewsItem. 
================================================================================
-->
<!ELEMENT NewsIdentifier  (ProviderId , DateId , NewsItemId , RevisionId , PublicIdentifier )>

<!-- 
=================================== NewsItem ===================================
A managed set of information representing a point of view, at a given time, on
some event or events. Its Identification and NewsManagement provide
manageability. It may contain either a NewsComponent, or one or more Updates
that modify aspects of a previous Revision of the same NewsItem, or a
TopicSet.
================================================================================
-->
<!ELEMENT NewsItem  (Comment* , Catalog? , Identification , NewsManagement ,  (NewsComponent | Update+ | TopicSet )? )>
<!ATTLIST NewsItem  %localid;
                    xml:lang CDATA  #IMPLIED >
<!-- 
================================== NewsItemId ==================================
An identifier for the NewsItem. The combination of NewsItemId and DateId must
be unique among NewsItems that emanate from the same provider. Within these
constraints, the NewsItemId can take any form the provider wishes. It may take
the form of a name for the NewsItem that will be meaningful to humans, but this
is not a requirement. The provider may optionally relate the values of
NewsItemId to a controlled vocabulary, which is invoked by the Vocabulary
attribute. The value ofthe Vocabulary attribute may be an http URL, a NewsML
URN, or the # character followed by the value of the Duid attribute of a
TopicSet in the current document. The Scheme attribute, if present, serves to
distinguish which of possibly multiple naming schemes in the controlled
vocabulary is the one that governs the NewsItemId.
================================================================================
-->
<!ELEMENT NewsItemId  (#PCDATA )>
<!ATTLIST NewsItemId  Vocabulary CDATA  #IMPLIED
                      Scheme     CDATA  #IMPLIED >
<!-- 
================================= NewsItemRef ==================================
A pointer to a NewsItem that is deemed to replace the NewsItemRef element. The
NewsItem attribute is a pointer to the relevant NewsItem. Its value can be an
http URL, or a NewsML URN as described in the comment to PublicIdentifier, or a
fragment identifier consisting of a # character followed by the Duid of a
NewsItem in the current document.
================================================================================
-->
<!ELEMENT NewsItemRef  (Comment* )>
<!ATTLIST NewsItemRef  %localid;
                       NewsItem CDATA  #IMPLIED >
<!--
================================= NewsItemType =================================
An indication of the type of a NewsItem. The value of the FormalName attribute
is a formal name for the NewsItemType. Its meaning and permitted values are
determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT NewsItemType EMPTY>
<!ATTLIST NewsItemType  %localid;
                        %formalname; >
<!-- 
=================================== NewsLine ===================================
A newsline of a type not included in the NewsML specification.
================================================================================
-->
<!ELEMENT NewsLine  (NewsLineType , NewsLineText+ )>
<!ATTLIST NewsLine  %localid; >
<!-- 
=================================== NewsLineText ===================================
The text of a NewsLine of user-defined type.
================================================================================
-->
<!ELEMENT NewsLineText  (#PCDATA | Origin )*>
<!ATTLIST NewsLineText  %localid;
                        xml:lang CDATA  #IMPLIED >
<!-- 
================================ NewsLineType ==================================
An indication of a user-defined NewsLine type. The value of the FormalName
attribute is a formal name for the NewsLineType. Its meaning and permitted
values are determined by a controlled vocabulary as described in the comment
to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT NewsLineType EMPTY>
<!ATTLIST NewsLineType  %localid;
                        %formalname; >
<!-- 
================================== NewsLines ===================================
A container for all the NewsLines that a NewsComponent has.
================================================================================
-->
<!ELEMENT NewsLines  ( (HeadLine , SubHeadLine? )* , ByLine* , DateLine* , CreditLine* , CopyrightLine* , RightsLine* , SeriesLine* , SlugLine* , KeywordLine* , NewsLine* )>
<!ATTLIST NewsLines  %localid; >
<!-- 
================================ NewsManagement ================================
Information relevant to the management of a NewsItem.
================================================================================
-->
<!ELEMENT NewsManagement  (NewsItemType , FirstCreated , ThisRevisionCreated , Status , StatusWillChange? , Urgency? , RevisionHistory? , DerivedFrom* , AssociatedWith* , Instruction* , Property* )>
<!ATTLIST NewsManagement  %localid; >
<!-- 
==================================== NewsML ====================================
A NewsML document, which must contain a NewsEnvelope and one or more NewsItems,
and may include a Catalog element and a TopicSet element.
================================================================================
-->
<!ELEMENT NewsML  (Catalog? , TopicSet* ,  (NewsEnvelope , NewsItem+ ) )>
<!ATTLIST NewsML  %localid; >
<!-- 
================================= NewsProduct ==================================
An identifier for a product to which all the NewsItems in a NewsML document
belong. The value of the FormalName attribute is a formal name for the
NewsProduct. Its meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY declaration
above.
================================================================================
-->
<!ELEMENT NewsProduct EMPTY>
<!ATTLIST NewsProduct  %localid;
                       %formalname; >
<!-- 
================================= NewsService ==================================
An identifier for a service to which all the NewsItems in a NewsML document
belong. The value of the FormalName attribute is a formal name for the
NewsService. Its meaning and permitted values are determined by a controlled
vocabulary as described in the comment to the formalname ENTITY declaration
above.
================================================================================
-->
<!ELEMENT NewsService EMPTY>
<!ATTLIST NewsService  %localid;
                       %formalname; >
<!-- 
=================================== Notation ===================================
An indication of the notation of a ContentItem. The value of the FormalName
attribute is a formal name for the Notation. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Notation EMPTY>
<!ATTLIST Notation  %localid;
                    %formalname; >
<!-- 
================================= OfInterestTo =================================
An indication of the target audience of a NewsItem. The value of the FormalName
attribute is a formal name for the target audience. Its meaning and permitted
values are determined by a controlled vocabulary as described in the comment to
the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT OfInterestTo  (Relevance? )>
<!ATTLIST OfInterestTo  %localid;
                        %formalname;
                        %assignment; >
<!-- 
==================================== Origin ====================================
A wrapper for all or part of the text of a piece of text, which provides a
pointer to an item of data corresponding formally to what is being described
here in natural language. The Href attribute identifies the relevant data, and
may be an http URL or a NewsML URN as described in the comment to
PublicIdentifier, optionally including a fragment identifier. Alternatively, it
can be a simple fragment identifier consisting of a # character followed by the
value of the Duid of an element in the current document.
================================================================================
-->
<!ELEMENT Origin  (#PCDATA | Origin )*>
<!ATTLIST Origin  %localid;
                  %assignment;
                  Href       CDATA  #IMPLIED >
<!-- 
=================================== Party ======================================
An indication of the person, company or organisation that has a particular
relationship to this NewsItem in the news workflow. The value of the FormalName
attribute is a formal name for the Party. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Party EMPTY>
<!ATTLIST Party  %localid;
                 %formalname;
                 Topic      CDATA  #IMPLIED >
<!-- 
=================================== Priority ===================================
An indication of the priority notation of a NewsItem. The value of the
FormalName attribute is a formal name for the Priority. Its meaning and
permitted values are determined by a controlled vocabulary as described in
the comment to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Priority EMPTY>
<!ATTLIST Priority  %localid;
                    %formalname; >
<!-- 
=================================== Property ===================================
A property of a NewsComponent or of a Topic. The property has a name and either
a simple Value or a complex value consisting of a set of further properties.

Value
=====
A string representation of the value of a Property.

ValueRef
========
A pointer to the value of the Property. This might be a Topic in a TopicSet, or
any other piece of data. If both Value and ValueRef are provided, then ValueRef
identifies the actual value of the property, with Value simply providing a
string representation or mnemonic for it.


Example:
<Catalog>
 <Resource Duid="resource1">
  <Urn>urn:newsml:reuters.com:20001001:Physical Characteristics:3</Urn>
  <Url>www.reuters.com/vocabs/physical.xml</Url>
  <Url>www.iptc.com/vocabularies/memberdefined/reuters/physical.xml</Url>
  <DefaultVocabularyFor Scheme="short" Context="Metadata/Property[@FormalName='Width']"/>
 </Resource>
</Catalog>
<Property FormalName="Width" Vocabulary="#resource1">
 <Property FormalName="Unit" ValueRef="urn:newsml:iptc.org:20001006:units:1#cm"/>
 <Property FormalName="Quantity" Value="7.5"/>
</Property>

AllowedValues
=============
The AllowedValues attribute, if present, is a pointer to a controlled vocabulary
that delimits the set of allowed values for the property. This may be an http
URL, or a NewsML URN, or a fragment identifier consisting of a # charactger
followed by the Duid of an element in the current document. The pointer must
reference either a Resource element that designates an external controlled
vocabulary, or a TopicSet element, that is itself the controlled vocabulary.
================================================================================
-->
<!ELEMENT Property  (Property* )>
<!ATTLIST Property  %localid;
                    %formalname;
                    %assignment;
                    Value         CDATA  #IMPLIED
                    ValueRef      CDATA  #IMPLIED
                    AllowedValues CDATA  #IMPLIED >
<!-- 
=================================== Provider ===================================
An individual and/or company or organisation that released a news object for
publication.
================================================================================
-->
<!ELEMENT Provider  (%party; )>
<!ATTLIST Provider  %localid; >
<!-- 
================================== ProviderId ==================================
An identifier for the news provider that produced the NewsItem. The
provider's ID is specified in the element content. This should be an Internet
domain name that is owned by the provider at the date identified by the DateId
subelement of the NewsIdentifier, or the name for the Provider drawn from a
controlled vocabulary identified by a URN specified in the Vocabulary attribute.
This will ensure that the identity of the provider can be inferred unambiguously
from the full NewsIdentifier.

Example: 
<NewsIdentifier>
 <ProviderId>iptc.org</ProviderId>
 <DateId>20001001</DateId>
 <NewsItemId>NewsML version 1.0</NewsItemId>
 <RevisionId>1</RevisionId
</NewsIdentifier>

Because the domain name "iptc.org" was owned on 1 October 2000 by the
International Press Telecommunications Council (IPTC) and no-one else, it is
certain that IPTC is the provider in this case.
================================================================================
-->
<!ELEMENT ProviderId  (#PCDATA )>
<!ATTLIST ProviderId  Vocabulary CDATA  #IMPLIED >
<!-- 
=============================== PublicIdentifier ===============================
A public identifier (in the sense defined by the XML 1,0 Specification) for a
NewsItem. This is the NewsML URN, and must be constructed as follows: 

If the ProviderId is a domain name

urn:newsml:{ProviderId}:{DateId}:{NewsItemId}:{RevisionId}{RevisionId@Update}

If the ProviderId is name drawn from a controlled vocabulary

urn:newsml:|{ProviderId@Vocabulary}|{ProviderId}|:{DateId}:{NewsItemId}:{RevisionId}{RevisionId@Update}

where {x} means "the content of the x subelement of the NewsIdentifier" and
{x@y} means "the value of the y attribute of the x subelement of the
NewsIdentifier", with the exception that if the Update attribute of the
RevisionId element has its default value of N, it is omitted from the URN, and
that the Vocabulary attribute of the ProviderId element is stripped of the
substring "urn:" with which it begins. The Vocabulary attribute of ProviderId
necessarily begins with the characters "urn:" because, as stated in the
comment to the ProviderId element above, it must take the form of a URN
identifying a controlled vocabulary.

Note that the existence of this URN enables the NewsItem to be referenced
unambiguously by pointers from other XML elements or resources. Within such
pointers, if  the RevisionId, its preceding : character and its following Update
qualifier are omitted, then the pointer designates the most recent revision at
the time it is resolved.
================================================================================
-->
<!ELEMENT PublicIdentifier  (#PCDATA )>

<!-- 
================================== Relevance ===================================
An indication of the relevance of a NewsItem to a given target audience. The
value of the FormalName attribute is a formal name for the Relevance. Its
meaning and permitted values are determined by a controlled vocabulary as
described in the comment to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Relevance EMPTY>
<!ATTLIST Relevance  %localid;
                     %formalname;
                     %assignment; >
<!--
=================================== Replace ====================================
An instruction to replace a designated element within a NewsItem. The element
that is to replace the designated element is the content of the Replace element.
The NewsItem within which the replacement takes place is the previous revision
of the current one, and the element to be replaced is the one whose Duid
value is equal to the value of the Replace element's DuidRef attribute.
================================================================================
-->
<!ELEMENT Replace ANY>
<!ATTLIST Replace  %localid;
                   DuidRef CDATA  #REQUIRED >
<!-- 
================================== Resource ====================================
An indication where a given resource can be found, and whether it is to be used
as the default vocabulary for certain formal names within the current subtree
of a NewsML document. The Urn attribute provides a NewsML URN for the resource.
THe Url attribute(s) provide(s) a location or locations where the resource may
be found. The DefaultVocabularyFor element contains an XPath pattern. The
identified resource acts as default vocabulary for any element within the
subtree whose root is the parent of the current Catalog, that matches this XPath
pattern.
================================================================================
-->
<!ELEMENT Resource  (Urn? , Url* , DefaultVocabularyFor* )>
<!ATTLIST Resource  %localid; >
<!-- 
=============================== RevisionHistory ================================
A pointer to a file containing the revision history of the NewsItem.
================================================================================
-->
<!ELEMENT RevisionHistory EMPTY>
<!ATTLIST RevisionHistory  %localid;
                           Href    CDATA  #REQUIRED >
<!-- 
================================== RevisionId ==================================
A positive integer indicating which Revision of a given NewsItem this is. Any
positive integer may be used, but it must always be the case that of two
instances of a NewsItem that have the same ProviderId, DateId and NewsItemId,
the one whose RevisionId has the larger value must be the more recent revision.
A RevisionId of 0 is not permitted. The PreviousRevision attribute must be
present, and its value must be equal to the content of the RevisionId element
of the NewsItem's previous revision, if there is one, and 0 if the NewsItem has
no previous revision. If the NewsItem contains an Update element or elements,
then the Update attribute must be set to U. If the NewsItem consists only of a
replacement set of NewsManagement data, then the Update attribute must be set
to A. If neither of these is the case, then the Update attribute must be set
to N.
================================================================================
-->
<!ELEMENT RevisionId  (#PCDATA )>
<!ATTLIST RevisionId  PreviousRevision CDATA  #REQUIRED
                      Update           CDATA  #REQUIRED >
<!-- 
================================ RevisionStatus ================================
Indicates the status that previous revisions now has as a result of the release
of the current revision. The optional Revision attribute is an integer, equal to
the RevisionId of the revision in question. If it is not present, then the
status applies to ALL previous revisions, without exception.
================================================================================
-->
<!ELEMENT RevisionStatus  (Status )>
<!ATTLIST RevisionStatus  %localid;
                          Revision CDATA  #IMPLIED >
<!-- 
================================= RightsHolder =================================
A string of text indicating who has the usage rights, optionally enriched with
pointers to further information about the relevant people, companies or
organisations.
================================================================================
-->
<!ELEMENT RightsHolder  (#PCDATA | Origin )*>
<!ATTLIST RightsHolder  %localid;
                        xml:lang   CDATA  #IMPLIED
                        %assignment; >
<!-- 
================================== RightsLine ==================================
A displayable version of rights information. Note that this is distinct from
copyright information. Copyright information is about who owns a news object;
rights information is about who is allowed to use it, in what way and under
what circumstances.
================================================================================
-->
<!ELEMENT RightsLine  (#PCDATA | Origin )*>
<!ATTLIST RightsLine  %localid;
                      xml:lang CDATA  #IMPLIED >
<!-- 
================================ RightsMetadata ================================
Information about the rights pertaining to a NewsComponent. 
================================================================================
-->
<!ELEMENT RightsMetadata  (Catalog? , Copyright* , UsageRights* , Property* )>
<!ATTLIST RightsMetadata  %localid;
                          %assignment; >
<!-- 
===================================== Role =====================================
An identifier of the role played by a NewsComponent within a NewsComponent
that contains it. The outermost NewsComponent within a NewsItem need not
specify a Role attribute value. The value of the FormalName attribute is a
formal name for the Role. Its meaning and permitted values are determined by
a controlled vocabulary as described in the comment to the formalname ENTITY
declaration above.
================================================================================
-->
<!ELEMENT Role EMPTY>
<!ATTLIST Role  %localid;
                %formalname; >
<!-- 
=================================== SentFrom ===================================
An individual and/or company or organisation from whom the NewsML document is
being sent.
================================================================================
-->
<!ELEMENT SentFrom  (%party; )>
<!ATTLIST SentFrom  %localid; >
<!-- 
==================================== SentTo ====================================
An individual and/or company or organisation to whom the NewsML document is
being sent.
================================================================================
-->
<!ELEMENT SentTo  (%party; )>
<!ATTLIST SentTo  %localid; >
<!-- 
================================== SeriesLine ==================================
A displayable version of information about a news object's place in a series.
================================================================================
-->
<!ELEMENT SeriesLine  (#PCDATA | Origin )*>
<!ATTLIST SeriesLine  %localid;
                      xml:lang CDATA  #IMPLIED >
<!-- 
================================== SizeInBytes =================================
The exact size in bytes of a ContentItem's inline or referenced data object. 
================================================================================
-->
<!ELEMENT SizeInBytes  (#PCDATA )>
<!ATTLIST SizeInBytes  %localid; >
<!-- 
=================================== SlugLine ===================================
A string of text, possibly embellished by hyperlinks and/or formatting, used to
display a NewsItem's slug line. (Note that the meaning of the term "slug line",
and the uses to which it is put, are a matter for individual providers to
define within their own workflow and business practice.) 
================================================================================
-->
<!ELEMENT SlugLine  (#PCDATA | Origin )*>
<!ATTLIST SlugLine  %localid;
                    xml:lang CDATA  #IMPLIED >
<!-- 
==================================== Source ====================================
An individual and/or company or organisation that provided source material for
a news object. The optional NewsItem attribute must be present in the case of
a syndicated NewsItem. It provides the URN of the NewsItem that is being
syndicated. Note that a sequence of Source elements can be used to indicate the
sequence of syndicators through which a NewsItem has passed.
================================================================================
-->
<!ELEMENT Source  (%party; )>
<!ATTLIST Source  %localid;
                  NewsItem CDATA  #IMPLIED >
<!-- 
================================== StartDate ===================================
A natural-language statement of the date at which specified usage rights come
into effect.
================================================================================
-->
<!ELEMENT StartDate  (#PCDATA | Origin )*>
<!ATTLIST StartDate  %localid;
                     xml:lang   CDATA  #IMPLIED
                     %assignment; >
<!-- 
==================================== Status ===================================
An indication of the Status of a NewsItem. The value of the FormalName
attribute is a formal name for the Status. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Status EMPTY>
<!ATTLIST Status  %localid;
                  %formalname; >
<!-- 
=============================== StatusWillChange ===============================
Advance notification of a status change that will automatically occur at the
specified date and time. For example, an item with a Status of "embargoed" might
have a StatusWillChange element stating that the status will become "usable" at
a specified time. This is equivalent to announcing in advance the time at which
the embargo will end and the item will be released.
================================================================================
-->
<!ELEMENT StatusWillChange  (FutureStatus , DateAndTime )>
<!ATTLIST StatusWillChange  %localid; >
<!-- 
================================= SubHeadLine ==================================
A displayable subsidiary headline.
================================================================================
-->
<!ELEMENT SubHeadLine  (#PCDATA | Origin )*>
<!ATTLIST SubHeadLine  %localid;
                       xml:lang CDATA  #IMPLIED >
<!-- 
=================================== Subject ====================================
An indication of the Subject of a NewsItem. The value of the FormalName
attribute is a formal name for the Subject. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Subject EMPTY>
<!ATTLIST Subject  %localid;
                   %formalname;
                   %assignment; >
<!-- 
================================= SubjectCode ==================================
A container for the IPTC Subject Codes that indicate the subject of a NewsItem,
as defined in the IPTC Information Interchange Model. It consists of one more
Subject, SubjectMatter and SubjectDetail elements, optionally amplified by one
or more SubjectQualifier elements.
================================================================================
-->
<!ELEMENT SubjectCode  ( (Subject | SubjectMatter | SubjectDetail ) , SubjectQualifier* )*>
<!ATTLIST SubjectCode  %localid;
                       %assignment; >
<!-- 
================================ SubjectDetail =================================
An indication of the SubjectDetail of a NewsItem. The value of the FormalName
attribute is a formal name for the SubjectDetail. Its meaning and permitted
values are determined by a controlled vocabulary as described in the comment
to the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT SubjectDetail EMPTY>
<!ATTLIST SubjectDetail  %localid;
                         %formalname;
                         %assignment; >
<!-- 
================================ SubjectMatter =================================
An indication of the SubjectMatter of a NewsItem. The value of the FormalName
attribute is a formal name for the SubjectMatter. Its meaning and permitted
values are determined by a controlled vocabulary as described in the comment to
the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT SubjectMatter EMPTY>
<!ATTLIST SubjectMatter  %localid;
                         %formalname;
                         %assignment; >
<!-- 
=============================== SubjectQualifier ===============================
An indication of the SubjectQualifier of a NewsItem. The value of the FormalName
attribute is a formal name for the SubjectQualifier. Its meaning and permitted
values are determined by a controlled vocabulary as described in the comment to
the formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT SubjectQualifier EMPTY>
<!ATTLIST SubjectQualifier  %localid;
                            %formalname;
                            %assignment; >
<!-- 
=============================== SystemIdentifier ===============================
A system identifier (in the sense defined by the XML 1,0 Specification) for a
NewsItem.
================================================================================
-->
<!ELEMENT SystemIdentifier  (#PCDATA )>
<!ATTLIST SystemIdentifier  %localid; >
<!-- 
============================= ThisRevisionCreated ==============================
The date and, optionally, time at which the current revision of a NewsItem was
created, expressed in ISO 8601 Basic Format, as described in the comment to the
DateAndTime attribute within the assignment ENTITY declaration above.
================================================================================
-->
<!ELEMENT ThisRevisionCreated  (#PCDATA )>
<!ATTLIST ThisRevisionCreated  %localid; >
<!--
==================================== Topic =====================================
This element provides information about a thing (Topic) named by a formal
name or occurring in a NewsComponent. A Topic must have one or more TopicType
subelements, which state what type of Topic it is. The optional Details
attribute provides a pointer, in the form of a URL or URN, to additional
information about the Topic.
================================================================================
-->
<!ELEMENT Topic  (Comment* , Catalog? , TopicType+ , FormalName* , Description* , Property* )>
<!ATTLIST Topic  %localid;
                 Details CDATA  #IMPLIED >
<!-- 
=============================== TopicOccurrence ================================
An indication that a particular topic occurs within the content of a
NewsComponent. The optional HowPresent attribute indicates the nature of that
topic's occurrence. The value of the Topic attribute must consist of a #
character followed by the value of the Duid attribute of a Topic in the current
document.
================================================================================
-->
<!ELEMENT TopicOccurrence EMPTY>
<!ATTLIST TopicOccurrence  %localid;
                           %assignment;
                           Topic      CDATA  #IMPLIED >
<!-- 
================================== TopicSet ====================================
A container for Topics. The value of the FormalName attribute is a formal name
for the TopicSet. Its meaning and permitted values are determined by a
controlled vocabulary as described in the comment to the formalname ENTITY
declaration above.
================================================================================
-->
<!ELEMENT TopicSet  (Comment* , Catalog? , TopicSetRef* , Topic* )>
<!ATTLIST TopicSet  %localid;
                    %formalname; >
<!-- 
================================= TopicSetRef ==================================
A pointer to a TopicSet that is to be merged with the current one. The TopicSet
attribute is a pointer to the relevant TopicSet. Its value can be an http URL,
or a NewsML URN as described in the comment to PublicIdentifier, or a fragment
identifier consisting of a # character followed by the Duid of a TopicSet in the
current document. The presence of a TopicSetRef child in a TopicSet has the
effect that all the Topics in the referenced TopicSet are included by reference
within the current TopicSet. When this merging results in there exising two
FormalName grandchildren of the same TopicSet that have the same content and
the same Scheme attribute value, then the Topics whose children are in fact the
same topic, and are deemed to be merged. The merging of Topics need not be
performed physically by the system, but the meaning of the data is
exactly the same as if the merging were actually performed. Merging two
Topcis consists of creating a single Topic that contains all the children of
both, and eliminating duplicates.
================================================================================
-->
<!ELEMENT TopicSetRef  (Comment* )>
<!ATTLIST TopicSetRef  %localid;
                       TopicSet CDATA  #IMPLIED >
<!-- 
================================== TopicType ===================================
An indication of the type of a Topic. The value of the FormalName attribute is
a formal name for the TopicType. Its meaning and permitted values are determined
by a controlled vocabulary as described in the comment to the formalname ENTITY
declaration above.
================================================================================
-->
<!ELEMENT TopicType EMPTY>
<!ATTLIST TopicType  %localid;
                     %formalname; >
<!-- 
================================== TopicUse ====================================
An indication of where a particular Topic is used in a NewsML document. The
value of the Topic attribute must consist of a # character followed by the
value of the Duid of a Topic in the current document. The value of the Context
attribute is an XPath pattern indicating the context where the referenced topic
is used within the subtree to which the current Catalog applies. If the Context
attribute is not present, the TopicUse element simply states that this topic is
present somewhere in the subtree.
================================================================================
-->
<!ELEMENT TopicUse EMPTY>
<!ATTLIST TopicUse  Topic   CDATA  #REQUIRED
                    Context CDATA  #IMPLIED >
<!-- 
================================ TransmissionId ================================
An identifier for the NewsML document transmission. This should be unique among
all distinct transmissions from the same publisher. If a transmission is
repeated (perhaps because the sender is not confident that it was successfully
received) then the same TransmissionId content may be used, but a Repeat
attribute should be provided to distinguish the second transmission from the
first. The form that the value of the Repeat attribute takes is determined by
the provider. Likewise, the format for the TransmissionId itself is for the
provider to decide. It could for example consist of a channel identifier
followed by a sequence number.
================================================================================
-->
<!ELEMENT TransmissionId  (#PCDATA )>
<!ATTLIST TransmissionId  %localid;
                          Repeat  CDATA  #IMPLIED >
<!-- 
==================================== Update ====================================
A modification to an existing NewsItem. This can be an insertion, replacement
or deletion. Note that the Update element cannot be used to modify the
NewsManagement or Identification element, or any of their descendants.
Modifications to these parts of the NewsItem can be made by issuing the
NewsItem under the current revision number, with only the Identification and
NewsManagement elements present. These will replace the previous Identification
and NewsManagement elements in their totality.
================================================================================
-->
<!ELEMENT Update  (InsertBefore | InsertAfter | Replace | Delete )*>
<!ATTLIST Update  %localid; >
<!-- 
=================================== Urgency ====================================
An indication of the urgency of a NewsItem. The value of the FormalName
attribute is a formal name for the Urgency. Its meaning and permitted values
are determined by a controlled vocabulary as described in the comment to the
formalname ENTITY declaration above.
================================================================================
-->
<!ELEMENT Urgency EMPTY>
<!ATTLIST Urgency  %localid;
                   %formalname; >
<!-- 
===================================== Url ======================================
A URL that can be used to locate a Resource.
================================================================================
-->
<!ELEMENT Url  (#PCDATA )>
<!ATTLIST Url  %localid; >
<!-- 
===================================== Urn ======================================
A URN that provides a global identifier for a resource. This will typically (but
not necessarily) be a NewsML URN as described in the comment to PublicIdentifier.
================================================================================
-->
<!ELEMENT Urn  (#PCDATA )>
<!ATTLIST Urn  %localid; >
<!--
================================= UsageRights ==================================
Information about the usage rights pertaining to a NewsComponent. 
================================================================================
-->
<!ELEMENT UsageRights  (UsageType? , Geography? , RightsHolder? , Limitations? , StartDate? , EndDate? )>
<!ATTLIST UsageRights  %localid;
                       %assignment; >
<!-- 
================================== UsageType ===================================
A natural-language indication of the type of usage to which the rights apply.
================================================================================
-->
<!ELEMENT UsageType  (#PCDATA | Origin )*>
<!ATTLIST UsageType  %localid;
                     xml:lang   CDATA  #IMPLIED
                     %assignment; >
