<!--
	MusicXML Container DTD

	Version 3.1
	
	Copyright © 2004-2017 the Contributors to the MusicXML 
	Specification, published by the W3C Music Notation Community
	Group under the W3C Community Final Specification Agreement 
	(FSA): 
	
	   https://www.w3.org/community/about/agreements/final/
	
	A human-readable summary is available:
	
	   https://www.w3.org/community/about/agreements/fsa-deed/
-->

<!--
	Starting with Version 2.0, the MusicXML format includes a
	standard zip compressed version. These zip files can contain
	multiple MusicXML files as well as other media files for
	images and sound. The container DTD describes the contents
	of the META-INF/container.xml file. The container describes
	the starting point for the MusicXML version of the file, as
	well as alternate renditions such as PDF and audio versions
	of the musical score.

	The MusicXML zip file format is compatible with the zip format
	used by the java.util.zip package and Java JAR files. It is 
	based on the Info-ZIP format described at:

	http://www.info-zip.org/doc/appnote-19970311-iz.zip

	The JAR file format is specified at:

	http://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html

	Note that, compatible with JAR files, file names should be
	encoded in UTF-8 format. 

	Files with the zip container are compressed the DEFLATE 
	algorithm. The DEFLATE Compressed Data Format (RFC 1951)
	is specified at:

	http://www.ietf.org/rfc/rfc1951.txt

	The recommended media type for a compressed MusicXML file is:

		application/vnd.recordare.musicxml

	The recommended media type for an uncompressed MusicXML
	file is:

		application/vnd.recordare.musicxml+xml

	The first file in the zip container should be a file named
	mimetype. The contents of this file should be the MIME media
	type string 
	
		application/vnd.recordare.musicxml
	
	encoded in US-ASCII. The mimetype file must not be compressed
	or encrypted, and there must not be an extra field in its zip
	header. The contents of the mimetype file must not contain any
	leading padding or white space and must not begin with a byte
	order mark. Older versions of MusicXML did not specify this
	mimetype file, so applications may see containers without a
	mimetype file.

	The recommended file extension for compressed MusicXML files
	is .mxl. The recommended file extension for uncompressed
	MusicXML files is .musicxml. Older versions of MusicXML use
	.xml as the extension for uncompressed MusicXML files, so it
	is recommended that applications be prepared to read files
	with the .xml extension as well.

	It is recommended that applications that run on macOS and iOS
	use the following Uniform Type Identifier for MusicXML files:

		<array>
			<dict>
				<key>UTTypeIdentifier</key>
				<string>com.recordare.musicxml.uncompressed</string>
				<key>UTTypeReferenceURL</key>
				<string>http://www.musicxml.org/</string>
				<key>UTTypeDescription</key>
				<string>MusicXML File</string>
				<key>UTTypeTagSpecification</key>
				<dict>
					<key>public.filename-extension</key>
					<array>
						<string>musicxml</string>
					</array>
					<key>public.mime-type</key>
					<array>
						<string>application/vnd.recordare.musicxml+xml</string>
					</array>
				</dict>
				<key>UTTypeConformsTo</key>
				<array>
					<string>public.xml</string>
				</array>
			</dict>
			<dict>
				<key>UTTypeIdentifier</key>
				<string>com.recordare.musicxml</string>
				<key>UTTypeReferenceURL</key>
				<string>http://www.musicxml.org/</string>
				<key>UTTypeDescription</key>
				<string>MusicXML File</string>
				<key>UTTypeTagSpecification</key>
				<dict>
					<key>public.filename-extension</key>
					<array>
						<string>mxl</string>
					</array>
					<key>public.mime-type</key>
					<array>
						<string>application/vnd.recordare.musicxml</string>
					</array>
				</dict>
				<key>UTTypeConformsTo</key>
				<array>
					<string>public.zip-archive</string>
				</array>
			</dict>
		</array>

	Suggested use:
	
	<!DOCTYPE container PUBLIC
		"-//Recordare//DTD MusicXML 3.1 Container//EN"
		"http://www.musicxml.org/dtds/container.dtd">
-->

<!-- Elements -->

<!--
	Container is the document element.
-->
<!ELEMENT container (rootfiles)>

<!--
	Rootfiles include the starting points for the different
	representations of a MusicXML score. The MusicXML root
	must be described in the first rootfile element. Additional
	rootfile elements can describe alternate versions such as
	PDF and audio files.
-->
<!ELEMENT rootfiles (rootfile+)>

<!--
	The rootfile element describes each top-level file in
	the MusicXML container. The full-path attribute provides
	the path relative to the root folder of the zip file. The
	media-type identifies the type of different top-level
	root files. It is an error to have a non-MusicXML
	media-type value in the first rootfile in a rootfiles
	element. If no media-type value is present, a MusicXML
	file is assumed. A MusicXML file used as a rootfile may
	have score-partwise, score-timewise, or opus as its
	document element.
-->
<!ELEMENT rootfile EMPTY>
<!ATTLIST rootfile
    full-path CDATA #REQUIRED
    media-type CDATA #IMPLIED
>
