diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-09-03 12:10:27 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-09-21 21:57:18 +0200 |
| commit | 549011d53fa302fde3dcb6df4d946dc569a8b03e (patch) | |
| tree | f85b0731b5acf20c2c560fd9f287380d5e1578c3 | |
| parent | fc205951d1fec50d59bfbed9cb03c07cc95205d9 (diff) | |
Add namespaces and tweak CPL namespace so Xerces checks CompositionMetadataAsset.
| -rw-r--r-- | src/verify.cc | 7 | ||||
| -rw-r--r-- | wscript | 4 | ||||
| -rw-r--r-- | xsd/Dolby-2012-AD.xsd | 14 | ||||
| -rw-r--r-- | xsd/SMPTE-429-16.xsd | 130 | ||||
| -rw-r--r-- | xsd/SMPTE-429-7-2006-CPL.xsd | 2 |
5 files changed, 155 insertions, 2 deletions
diff --git a/src/verify.cc b/src/verify.cc index 9a0895f6..ddf308ca 100644 --- a/src/verify.cc +++ b/src/verify.cc @@ -206,10 +206,15 @@ public: add("http://www.digicine.com/PROTO-ASDCP-CC-CPL-20070926#", "PROTO-ASDCP-CC-CPL-20070926.xsd"); add("interop-subs", "DCSubtitle.v1.mattsson.xsd"); add("http://www.smpte-ra.org/schemas/428-7/2010/DCST.xsd", "SMPTE-428-7-2010-DCST.xsd"); + add("http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata", "SMPTE-429-16.xsd"); + add("http://www.dolby.com/schemas/2012/AD", "Dolby-2012-AD.xsd"); } InputSource* resolveEntity(XMLCh const *, XMLCh const * system_id) { + if (!system_id) { + return 0; + } string system_id_str = xml_ch_to_string (system_id); boost::filesystem::path p = _xsd_dtd_directory; if (_files.find(system_id_str) == _files.end()) { @@ -278,6 +283,8 @@ validate_xml (T xml, boost::filesystem::path xsd_dtd_directory, list<Verificatio schema.push_back("DCSubtitle.v1.mattsson.xsd"); schema.push_back("DCDMSubtitle-2010.xsd"); schema.push_back("PROTO-ASDCP-CC-CPL-20070926.xsd"); + schema.push_back("SMPTE-429-16.xsd"); + schema.push_back("Dolby-2012-AD.xsd"); /* XXX: I'm not especially clear what this is for, but it seems to be necessary */ string locations; @@ -248,7 +248,9 @@ def build(bld): 'PROTO-ASDCP-CC-CPL-20070926.xsd', 'Main-Stereo-Picture-CPL.xsd', 'DCSubtitle.v1.mattsson.xsd', - 'DCDMSubtitle-2010.xsd' ]: + 'DCDMSubtitle-2010.xsd', + 'Dolby-2012-AD.xsd', + 'SMPTE-429-16.xsd' ]: bld.install_files('${PREFIX}/share/libdcp/xsd', os.path.join('xsd', i)) bld.add_post_fun(post) diff --git a/xsd/Dolby-2012-AD.xsd b/xsd/Dolby-2012-AD.xsd new file mode 100644 index 00000000..f1c22199 --- /dev/null +++ b/xsd/Dolby-2012-AD.xsd @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.dolby.com/schemas/2012/AD" xmlns:axd="http://www.dolby.com/schemas/2012/AD" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/> + <xs:element name="AuxData" type="axd:DataTrackFileAssetType"/> + <xs:complexType name="DataTrackFileAssetType"> + <xs:complexContent> + <xs:extension base="cpl:TrackFileAssetType"> + <xs:sequence> + <xs:element minOccurs="0" name="DataType" type="xs:string"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> +</xs:schema> diff --git a/xsd/SMPTE-429-16.xsd b/xsd/SMPTE-429-16.xsd new file mode 100644 index 00000000..0726f355 --- /dev/null +++ b/xsd/SMPTE-429-16.xsd @@ -0,0 +1,130 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata" xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/> + <xs:element name="CompositionMetadataAsset" type="meta:CompositionMetadataAssetType"/> + <xs:complexType name="CompositionMetadataAssetType"> + <xs:complexContent> + <xs:extension base="cpl:GenericAssetType"> + <xs:sequence> + <xs:element name="FullContentTitleText" type="cpl:UserText"/> + <xs:element minOccurs="0" name="ReleaseTerritory"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute default="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata#scope/release-territory/UNM49" name="scope" type="xs:anyURI"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element default="1" minOccurs="0" name="VersionNumber"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:nonNegativeInteger"> + <xs:attribute default="final" name="status" type="meta:StatusEnum"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" name="Chain" type="xs:string"/> + <xs:element minOccurs="0" name="Distributor" type="xs:string"/> + <xs:element minOccurs="0" name="Facility" type="xs:string"/> + <xs:element minOccurs="0" name="AlternateContentVersionList"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" minOccurs="1" name="ContentVersion" type="cpl:ContentVersionType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" name="Luminance"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="meta:PositiveDecimal"> + <xs:attribute name="units" type="meta:LuminanceUnitEnum" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" name="MainSoundConfiguration" type="xs:string"/> + <xs:element minOccurs="1" name="MainSoundSampleRate" type="cpl:Rational"/> + <xs:element minOccurs="1" name="MainPictureStoredArea"> + <xs:complexType> + <xs:sequence> + <xs:element name="Width" type="xs:positiveInteger"/> + <xs:element name="Height" type="xs:positiveInteger"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element minOccurs="1" name="MainPictureActiveArea"> + <xs:complexType> + <xs:sequence> + <xs:element name="Width" type="xs:positiveInteger"/> + <xs:element name="Height" type="xs:positiveInteger"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element minOccurs="0" name="MainSubtitleLanguageList"> + <xs:simpleType> + <xs:restriction base="meta:LanguageListType"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element minOccurs="0" name="ExtensionMetadataList"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" minOccurs="0" name="ExtensionMetadata" type="meta:ExtensionMetadataType"> </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="StatusEnum"> + <xs:restriction base="xs:token"> + <xs:enumeration value="final"/> + <xs:enumeration value="temp"/> + <xs:enumeration value="pre"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="LuminanceUnitEnum"> + <xs:restriction base="xs:token"> + <xs:enumeration value="foot-lambert"/> + <xs:enumeration value="candela-per-square-metre"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PositiveDecimal"> + <xs:restriction base="xs:decimal"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="LanguageListType"> + <xs:restriction> + <xs:simpleType> + <xs:list itemType="xs:language"/> + </xs:simpleType> + </xs:restriction> + </xs:simpleType> + <xs:complexType name="ExtensionMetadataType"> + <xs:sequence> + <xs:element name="Name" type="xs:string"/> + <xs:element minOccurs="0" name="PropertyList"> + <xs:complexType> + <xs:sequence> + <xs:element maxOccurs="unbounded" name="Property"> + <xs:complexType> + <xs:sequence> + <xs:element name="Name" type="xs:string"/> + <xs:element name="Value" type="xs:string"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/> + </xs:sequence> + <xs:attribute name="scope" type="xs:anyURI" use="required"/> + </xs:complexType> +</xs:schema> diff --git a/xsd/SMPTE-429-7-2006-CPL.xsd b/xsd/SMPTE-429-7-2006-CPL.xsd index 0d2c48df..1b36f5c6 100644 --- a/xsd/SMPTE-429-7-2006-CPL.xsd +++ b/xsd/SMPTE-429-7-2006-CPL.xsd @@ -96,7 +96,7 @@ <xs:element name="MainPicture" type="cpl:PictureTrackFileAssetType" minOccurs="0"/> <xs:element name="MainSound" type="cpl:SoundTrackFileAssetType" minOccurs="0"/> <xs:element name="MainSubtitle" type="cpl:SubtitleTrackFileAssetType" minOccurs="0"/> - <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> + <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict" /> </xs:sequence> </xs:complexType> </xs:element> |
