DTD for TVProgramML, Commented
<?xml version="1.0" encoding="UTF-8"?>
<!--
From: http://www.newsml.jp/radiotv/site/DTD/TVProgram-no-comments.dtd 2002-04-17
=======================================================
DTD for TVProgramML
=======================================================
-->
<!ELEMENT tv.program (program.information, program.content, settlement.information?)>
<!ATTLIST tv.program
xml:lang CDATA #IMPLIED
>
<!ENTITY % newsml_code " newsml_formalname CDATA #IMPLIED
newsml_urn CDATA #IMPLIED
newsml_scheme CDATA #IMPLIED">
<!ELEMENT program.information (language?, administrative.information, rights.information, descriptive.information)>
<!ATTLIST program.information
program.id ID #REQUIRED
xml:lang CDATA #IMPLIED
>
<!ELEMENT language (#PCDATA)>
<!ATTLIST language
%newsml_code;
>
<!ELEMENT administrative.information (station, startdate, enddate, length?, media+, mode, charge?, payperview?, belongings*, url*)>
<!ATTLIST administrative.information
parentalrate (00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17) #REQUIRED
>
<!ELEMENT station (#PCDATA)>
<!ATTLIST station
%newsml_code;
>
<!ELEMENT startdate (#PCDATA)>
<!ELEMENT enddate (#PCDATA)>
<!ELEMENT length (#PCDATA)>
<!ATTLIST length
units (seconds | minutes | hours) #REQUIRED
>
<!ELEMENT media (#PCDATA)>
<!ELEMENT mode (audio.mode?, broadcast.mode?, additional.mode?, data.mode?)>
<!ELEMENT audio.mode (bilingual?)>
<!ATTLIST audio.mode
soundtype (monaural | stereo | B-mode | surround) #REQUIRED
explanation (yes | no) "no"
multiple (yes | no) "no"
>
<!ELEMENT bilingual (#PCDATA)>
<!ATTLIST bilingual
%newsml_code;
>
<!ELEMENT broadcast.mode EMPTY>
<!ATTLIST broadcast.mode
SDTV (yes | no) "no"
HDTV (yes | no) "no"
progressive (yes | no) "no"
wide (yes | no) "no"
multiview (yes | no) "no"
>
<!ELEMENT additional.mode EMPTY>
<!ATTLIST additional.mode
multiple (yes | no) "no"
sign-language (yes | no) "no"
subtitles (yes | no) "no"
>
<!ELEMENT data.mode EMPTY>
<!ATTLIST data.mode
coupling (yes | no) "no"
interactive (yes | no) "no"
>
<!ELEMENT charge (#PCDATA)>
<!ATTLIST charge
monthly CDATA #IMPLIED
unit CDATA #IMPLIED
>
<!ELEMENT payperview (#PCDATA)>
<!ATTLIST payperview
amountofmoney CDATA #IMPLIED
unit CDATA #IMPLIED
>
<!ELEMENT belongings EMPTY>
<!ATTLIST belongings
%newsml_code;
>
<!ELEMENT url (#PCDATA)>
<!ELEMENT rights.information (copyright*, usagerights?)>
<!ELEMENT copyright (copyright.holder, copyright.date, copyright.description*)>
<!ELEMENT copyright.holder (#PCDATA)>
<!ATTLIST copyright.holder
%newsml_code;
>
<!ELEMENT copyright.date (#PCDATA)>
<!ELEMENT copyright.description (#PCDATA)>
<!ATTLIST copyright.description
xml:lang CDATA #IMPLIED
variant CDATA #IMPLIED
>
<!ELEMENT usagerights (analogcopy?, digitalcopy?, telerecording?, ondemand?, accumulation?, singleview?)>
<!ELEMENT analogcopy (#PCDATA)>
<!ATTLIST analogcopy
frequency (0 | 1 | 2) #REQUIRED
>
<!ELEMENT digitalcopy (#PCDATA)>
<!ATTLIST digitalcopy
frequency (0 | 1 | 2) #REQUIRED
>
<!ELEMENT telerecording (#PCDATA)>
<!ATTLIST telerecording
frequency (0 | 1 | 2) #REQUIRED
>
<!ELEMENT ondemand (#PCDATA)>
<!ATTLIST ondemand
permission (0 | 1) #REQUIRED
>
<!ELEMENT accumulation (#PCDATA)>
<!ATTLIST accumulation
permission (0 | 1) #REQUIRED
>
<!ELEMENT singleview (#PCDATA)>
<!ATTLIST singleview
permission (0 | 1) #REQUIRED
>
<!ELEMENT descriptive.information (genre+, number?, firstdate?, particularity*, keyword*)>
<!ATTLIST descriptive.information
newprogram (yes | no) #IMPLIED
final (yes | no) #IMPLIED
rebroadcast (yes | no) #IMPLIED
>
<!ELEMENT genre (genrecode, genrematter?)>
<!ELEMENT genrecode (#PCDATA)>
<!ELEMENT genrematter (#PCDATA)>
<!ELEMENT number (#PCDATA)>
<!ATTLIST number
totalnumber CDATA #IMPLIED
>
<!ELEMENT firstdate (#PCDATA)>
<!ELEMENT particularity (location?, player*)>
<!ATTLIST particularity
classification CDATA #REQUIRED
>
<!ELEMENT player (#PCDATA)>
<!ATTLIST player
id CDATA #IMPLIED
>
<!ELEMENT location (#PCDATA)>
<!ATTLIST location
%newsml_code;
>
<!ELEMENT keyword (#PCDATA)>
<!ELEMENT program.content (title, subtitle*, extendedtitle?, body?, explanation*, programimage*, performer*, cinema?, g-code?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT extendedtitle (#PCDATA)>
<!ELEMENT body (#PCDATA)>
<!ELEMENT explanation (#PCDATA)>
<!ATTLIST explanation
href CDATA #IMPLIED
>
<!ELEMENT programimage (comment*)>
<!ATTLIST programimage
href CDATA #IMPLIED
>
<!ELEMENT comment (#PCDATA)>
<!ELEMENT performer (name, part?)>
<!ATTLIST performer
id CDATA #IMPLIED
>
<!ELEMENT name (#PCDATA)>
<!ELEMENT part (#PCDATA)>
<!ELEMENT cinema (country+, creator*)>
<!ATTLIST cinema
year CDATA #REQUIRED
classification (1 | 2) #REQUIRED
>
<!ELEMENT country (#PCDATA)>
<!ATTLIST country
%newsml_code;
>
<!ELEMENT creator (#PCDATA)>
<!ELEMENT g-code (#PCDATA)>
<!ELEMENT settlement.information (modification*, recommendable?, settlement.program*)>
<!ELEMENT modification (#PCDATA)>
<!ATTLIST modification
code CDATA #REQUIRED
>
<!ELEMENT recommendable EMPTY>
<!ATTLIST recommendable
value NMTOKEN #REQUIRED
>
<!ELEMENT settlement.program (content.format?, char-count, char-data, history*)>
<!ELEMENT content.format EMPTY>
<!ATTLIST content.format
class CDATA #REQUIRED
>
<!ELEMENT char-count (#PCDATA)>
<!ATTLIST char-count
rwidth (0 | 9 | 10) #REQUIRED
lines NMTOKEN #IMPLIED
>
<!ELEMENT char-data (p*)>
<!ELEMENT p (#PCDATA | Space | Bilingual | Stereophonic | Nonscramble | Weather | Signlanguage | Voice | News | Teletext)*>
<!ELEMENT Space EMPTY>
<!ATTLIST Space
count (1 | 2) #REQUIRED
>
<!ELEMENT Bilingual EMPTY>
<!ELEMENT Stereophonic EMPTY>
<!ELEMENT Nonscramble EMPTY>
<!ELEMENT Weather EMPTY>
<!ELEMENT Signlanguage EMPTY>
<!ELEMENT Voice EMPTY>
<!ELEMENT News EMPTY>
<!ELEMENT Teletext EMPTY>
<!ELEMENT history (#PCDATA)>
<!ATTLIST history
date CDATA #IMPLIED
>
Prepared by Robin Cover for The XML Cover Pages archive. See the 2002-04-17 news item "IPTC Develops RadioTV-NewsML Standard for Radio/TV Program Information."

