Warning, /multimedia/k3b/libk3b/k3bimage.xsd is written in an unsupported language. File is not indexed.

0001 <!--
0002  This document describes the layout of the toc.xml file in a K3b image archive.
0003  A K3b image archive is a TAR archive with a simple layout as follows.
0004 
0005  Every K3b image archive contains the toc.xml file as described in this document
0006  which describes the layout of the CD or DVD saved in the K3b image archive.
0007  Additionally the K3b image archive contains an arbitrary number of files which
0008  contain the CD/DVD sector data. These files are referenced in the elements of
0009  type "file".
0010 
0011  The most simple K3b image archive may look as follows:
0012  Archive
0013    |- toc.xml
0014    |- image.iso
0015  and the toc.xml may look as follows:
0016    <image>
0017      <numsessions>1</numsessions>
0018      <numtracks>1</numtracks>
0019      <session number="1">
0020        <numtracks>1</numtracks>
0021        <track number="1" type="Data Mode1">
0022          <data sectorsize="2048">
0023            <file>image.iso</file>
0024          </data>
0025        </track>
0026      </session>
0027    </image>
0028 
0029 
0030  We used tar as a backend because K3b image archives tend to get really big when it
0031  comes to DVD images and ZIP does not support archives bigger than 2 GB.
0032  Although tar supports files bigger than 2 GB (inside the archive) K3b splits every
0033  track bigger than 1 GB into chunks of 1 GB to avoid any problems with big filesizes.
0034 -->
0035 
0036    
0037 <!-- FIXME: introduce a version field! -->
0038 
0039 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
0040            targetNamespace="http://www.k3b.org"
0041            xmlns="http://www.k3b.org"
0042            elementFormDefault="qualified">
0043 
0044 <!-- THE TYPES -->
0045         <xs:simpleType name="tracktype">
0046                 <xs:restriction base="xs:string">
0047                         <xs:enumeration value="Audio" />
0048                         <xs:enumeration value="Data Mode1" />
0049                         <xs:enumeration value="Data Mode2" />
0050                         <xs:enumeration value="Data XA Form1" />
0051                         <xs:enumeration value="Data XA Form2" />
0052                 </xs:restriction>
0053         </xs:simpleType>
0054 
0055         <xs:simpleType name="sector_size">
0056                 <xs:restriction base="xs:integer">
0057                         <xs:enumeration value="2048" /> <!-- Mode1/Mode2 Form1/DVD: plain user data -->
0058                         <xs:enumeration value="2056" /> <!-- Mode2 Form1: 2048 bytes user data + 8 bytes sub header FIXME: or does this include 4 bytes crc? -->
0059                         <xs:enumeration value="2324" /> <!-- Mode2 Form2: plain user data -->
0060                         <xs:enumeration value="2332" /> <!-- Mode2 Form2: 2324 bytes user data + 8 bytes sub header FIXME: or does this include 4 bytes crc? -->
0061                         <xs:enumeration value="2352" /> <!-- Audio: 16bit, stereo, 44100Hz, big endian -->
0062                         <xs:enumeration value="2448" /> <!-- Raw data -->
0063                 </xs:restriction>
0064         </xs:simpleType>
0065 
0066         <xs:complexType name="filecontents">
0067                 <xs:simpleContent>
0068                         <!-- Filename in the image archive. -->
0069                         <xs:extension base="xs:string">
0070                                 <!-- The start_sector allows for multiple tracks including the CD-TEXT to be defined in one file. Default: 0 -->
0071                                 <xs:attribute name="start_offset" type="xs:nonNegativeInteger" use="optional" />
0072                                 
0073                                 <!-- The number of bytes to be used. Default: up to end of the file -->
0074                                 <xs:attribute name="length" type="xs:positiveInteger" use="optional" />         
0075                         </xs:extension>
0076                 </xs:simpleContent>
0077         </xs:complexType>
0078 
0079         <xs:simpleType name="catalogname">
0080                 <xs:restriction base="xs:string">
0081                         <xs:pattern value="[0-9]{13}" />
0082                 </xs:restriction>
0083         </xs:simpleType>
0084 
0085         <xs:simpleType name="isrcname">
0086                 <xs:restriction base="xs:string">
0087                         <xs:pattern value="[A-Z0-9]{5}[0-9]{7}" />
0088                 </xs:restriction>
0089         </xs:simpleType>
0090 
0091 
0092 
0093 <!-- THE IMAGE DEFINITION -->
0094 
0095         <xs:element name="image">
0096                 <xs:complexType>
0097                         <xs:sequence>
0098                                 <!-- Number of session for convinience -->
0099                                 <xs:element name="numsessions" type="xs:positiveInteger" />
0100 
0101                                 <!-- Number of tracks for convinience -->
0102                                 <xs:element name="numtracks" type="xs:positiveInteger" />
0103 
0104                                 <!-- CD-TEXT is always stored in binary form -->
0105                                 <xs:element name="cdtext" type="filecontents" minOccurs="0" />
0106 
0107                                 <!-- The optional catalog name. -->
0108                                 <xs:element name="catalog" type="catalogname" minOccurs="0" />
0109 
0110                                 <!-- The tracks are split into sessions. In most cases there will only be one session. -->
0111                                 <xs:element name="session" maxOccurs="99"> <!-- FIXME: what is the real max here? -->
0112                                         <xs:complexType>
0113                                                 <xs:sequence>
0114                                                         <!-- Number of tracks in this session for convinience -->
0115                                                         <xs:element name="numtracks" type="xs:positiveInteger" />
0116 
0117                                                         <!-- And here come the tracks. -->
0118                                                         <xs:element name="track" maxOccurs="99">
0119                                                                 <xs:complexType>
0120                                                                         <xs:sequence>
0121                                                                                 <!-- The data tag contains file elements specifying where to find the data for the track.
0122                                                                                      The data may span over multiple files but all need to have the same sector size. -->
0123                                                                                 <xs:element name="data" minOccurs="1" maxOccurs="1">
0124                                                                                         <xs:complexType>
0125                                                                                                 <xs:sequence>
0126                                                                                                         <xs:element name="file" type="filecontents" />
0127                                                                                                 </xs:sequence>
0128                                                                                                 <xs:attribute name="sectorsize" type="sector_size" />
0129                                                                                         </xs:complexType>
0130                                                                                 </xs:element>
0131                                                                                 
0132                                                                                 <!-- The index tag contains the start sector of the index relative to the start of the track. -->
0133                                                                                 <xs:element name="index" minOccurs="0" maxOccurs="100">
0134                                                                                         <xs:complexType>
0135                                                                                                 <xs:simpleContent>
0136                                                                                                         <xs:extension base="xs:nonNegativeInteger">
0137                                                                                                                 <xs:attribute name="number" type="xs:nonNegativeInteger" />
0138                                                                                                         </xs:extension>
0139                                                                                                 </xs:simpleContent>
0140                                                                                         </xs:complexType>
0141                                                                                 </xs:element>
0142                                                                                 
0143                                                                                 <!-- Pre emphasis. -->
0144                                                                                 <xs:element name="preemp" type="xs:boolean" minOccurs="0" default="false" />
0145                                                                                 
0146                                                                                 <!-- Copy permitted. -->
0147                                                                                 <xs:element name="copy" type="xs:boolean" minOccurs="0" default="true" />
0148                                                                                 
0149                                                                                 <!-- SCMS enabled (alternating copy control bit). Only useful in combination with
0150                                                                                      copy=true. -->
0151                                                                                 <xs:element name="scms" type="xs:boolean" minOccurs="0" default="false" />
0152                                                                                 
0153                                                                                 <xs:element name="isrc" type="isrcname" minOccurs="0" />
0154                                                                         </xs:sequence>
0155 
0156                                                                         <!-- The track number for convinience. -->
0157                                                                         <xs:attribute name="number" type="xs:positiveInteger" />
0158 
0159                                                                         <!-- Type of the track as defined above. -->
0160                                                                         <xs:attribute name="type" type="tracktype" />
0161                                                                 </xs:complexType>
0162                                                         </xs:element>
0163                                                 </xs:sequence>
0164 
0165                                                 <!-- The session number for convinience. There is one special case in which the first session's number may be
0166                                                      bigger than 1. It is used internally by K3b to indicate that the image contains a session to be appended
0167                                                      to a multisession CD or DVD. It cannot be used in another situation since the data does only fit for the
0168                                                      multisession CD or DVD it was created for. -->
0169                                                 <xs:attribute name="number" type="xs:positiveInteger" />
0170                                         </xs:complexType>
0171                                 </xs:element>
0172                         </xs:sequence>
0173                 </xs:complexType>
0174         </xs:element>
0175 </xs:schema>