<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://id.kb.dk/schemas/radio_tv_relations"
    vc:maxVersion="1.1"
    vc:minVersion="1.0"
    version="1.0"
    attributeFormDefault="unqualified" elementFormDefault="qualified"
    xmlns="http://id.kb.dk/schemas/radio_tv_relations"
    xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
    <xs:annotation>
        <xs:documentation xml:lang="da">
            Dette xml schema bruges til at beskrive relationer mellem et program og den eller de sendeflade filer der indeholder programmer. Schemaet bruges i KB's radio/tv samling.
            Der bruges enten 'hasFile' som beskriver en en-mange relation eller 'hasExactfile' der beskriver en en-en relation.
        </xs:documentation>
    </xs:annotation>
    
    
    <xs:element name="record">
        <xs:complexType>
            <xs:all minOccurs="1" maxOccurs="1">
                
                <xs:element name="source" minOccurs="1" maxOccurs="1">
                    <xs:complexType>
                        <xs:sequence>
                            
                            <xs:annotation>
                                <xs:documentation xml:lang="da">
                                    Source beskriver kilden på relationen, altså 'fra' delen af relationen. En source kan relatere til mange targets
                                </xs:documentation>
                            </xs:annotation>
                            <xs:element minOccurs="1" maxOccurs="1" name="source_file" type="sourceFile"/>
                            
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                
                
                
                <xs:element name="targets" minOccurs="1" maxOccurs="1">
                    <xs:annotation>
                        <xs:documentation xml:lang="da">
                            targets beskriver mål for relationen, altså 'til' delen af relationen.  
                        </xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence>

                            <xs:annotation>
                                <xs:documentation xml:lang="da">
                                    En super_file er automatisk sammenklippet af en til mange broadcast_files, fx. ved hjælp af overlapsanalyse eller lignende.
                                    Maksimal spiletid er ca. 24 timer
                                </xs:documentation>
                            </xs:annotation>
                            <xs:element minOccurs="0" maxOccurs="unbounded" name="super_file" type="targetFile"/>

                            <xs:sequence maxOccurs="unbounded">
                                
                                <xs:annotation>
                                    <xs:documentation xml:lang="da">
                                        En broadcast_file er sendeflade, som ikke er klippet sammen. Der er ingen kendt min eller maks spilletid
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="broadcast_file" type="targetFile"/>
                                
                            </xs:sequence>
                            
                            <xs:sequence maxOccurs="unbounded">
                                
                                <xs:annotation>
                                    <xs:documentation xml:lang="da">
                                        En vhs_file er et digitaliseret vhs bånd. Maks spilletid er ca. 15 timer
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="vhs_file" type="targetFile"/>
                                
                            </xs:sequence>
                            
                            <xs:sequence maxOccurs="unbounded">
                                
                                <xs:annotation>
                                    <xs:documentation xml:lang="da">
                                        En presentation_file indeholder et eller flere programmer, som er beskrevet i en tilhørende programpost, i en fil klippet ud af en til mange broadcast_files. Der er ingen kendt min eller maks spilletid
                                    </xs:documentation>
                                </xs:annotation>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="presentation_file" type="targetFile"/>
                                
                            </xs:sequence>

                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                </xs:all>
        </xs:complexType>
    </xs:element>
    

    
    <xs:complexType name="sourceFile">
        <xs:all>
            <xs:element minOccurs="1" name="file_name" type="xs:string" maxOccurs="1"/>
            <xs:element minOccurs="0" name="file_type" type="xs:string" maxOccurs="1" />
            <xs:element minOccurs="0"  name="origin" type="xs:string" maxOccurs="1"/>
            <xs:element minOccurs="0" name="checksum" type="xs:string" maxOccurs="1"/>
            <xs:element minOccurs="0" name="checksum_type" type="xs:string" maxOccurs="1"/>
            <xs:element minOccurs="0" name="relation" type="xs:string" maxOccurs="1"/>
        </xs:all>
        </xs:complexType>

        <xs:complexType name="targetFile">
            <xs:all>
                <xs:element minOccurs="1" name="file_name" type="xs:string"/>
                <xs:element minOccurs="0" name="checksum" type="xs:string" maxOccurs="1"/>
                <xs:element minOccurs="0" name="checksum_type" type="xs:string" maxOccurs="1"/>
                <xs:element minOccurs="0" name="relation" type="xs:string"/>
                <xs:element minOccurs="0" name="cut_in" type="xs:decimal" nillable="true"/>
                <xs:element minOccurs="0" name="cut_out" type="xs:decimal" nillable="true"/>
            </xs:all>
    </xs:complexType>

</xs:schema>