Each <Type> tag has now a unique name, e.g. <DateType>. Modified the DTD accordingly. Figured out how libexpat likes the <!DOCTYPE...> tag.

This commit is contained in:
Moritz Bunkus 2003-07-31 10:33:36 +00:00
parent 22275411ab
commit 63a9509a71
5 changed files with 110 additions and 106 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!--<!doctype Tags system "matroskatags.dtd">--> <!DOCTYPE Tags SYSTEM "matroskatags.dtd">
<Tags> <Tags>
<Tag> <Tag>
@ -71,7 +71,7 @@
<MultiCommercial> <MultiCommercial>
<Commercial> <Commercial>
<Type>1</Type> <CommercialType>1</CommercialType>
<Address>Address</Address> <Address>Address</Address>
<URL>URL</URL> <URL>URL</URL>
<Email>Email</Email> <Email>Email</Email>
@ -86,7 +86,7 @@
<MultiDate> <MultiDate>
<Date> <Date>
<Type>2</Type> <DateType>2</DateType>
<Begin>2003-07-18T20:00:00+0100</Begin> <Begin>2003-07-18T20:00:00+0100</Begin>
<End>2003-07-18T20:00:00+0000</End> <End>2003-07-18T20:00:00+0000</End>
</Date> </Date>
@ -94,7 +94,7 @@
<MultiEntity> <MultiEntity>
<Entity> <Entity>
<Type>3</Type> <EntityType>3</EntityType>
<Name>Name</Name> <Name>Name</Name>
<URL>URL</URL> <URL>URL</URL>
<Email>Email</Email> <Email>Email</Email>
@ -104,7 +104,7 @@
<MultiIdentifier> <MultiIdentifier>
<Identifier> <Identifier>
<Type>4</Type> <IdentifierType>4</IdentifierType>
<!-- Binary data can also be read from a file. This is indicated <!-- Binary data can also be read from a file. This is indicated
by the @ as the first character. The rest is the file name. by the @ as the first character. The rest is the file name.
The file itself is read as-is and NOT assumed to be Base64 The file itself is read as-is and NOT assumed to be Base64
@ -116,7 +116,7 @@
<MultiLegal> <MultiLegal>
<Legal> <Legal>
<Type>3</Type> <LegalType>3</LegalType>
<URL>URL</URL> <URL>URL</URL>
<Address>Address</Address> <Address>Address</Address>
<Content>(C) Content</Content> <Content>(C) Content</Content>
@ -125,7 +125,7 @@
<MultiTitle> <MultiTitle>
<Title> <Title>
<Type>2</Type> <TitleType>2</TitleType>
<Name>Name</Name> <Name>Name</Name>
<SubTitle>SubTitle</SubTitle> <SubTitle>SubTitle</SubTitle>
<Edition>Edition</Edition> <Edition>Edition</Edition>
@ -136,7 +136,7 @@
</Title> </Title>
<!-- Let's test whether a complete second Title entry works. --> <!-- Let's test whether a complete second Title entry works. -->
<Title> <Title>
<Type>3</Type> <TitleType>3</TitleType>
<Name>Name2</Name> <Name>Name2</Name>
<SubTitle>SubTitle2</SubTitle> <SubTitle>SubTitle2</SubTitle>
<Edition>Edition2</Edition> <Edition>Edition2</Edition>

View File

@ -1,5 +1,5 @@
<!element Tags (Tag*)> <!ELEMENT Tags (Tag*)>
<!element Tag ( <!ELEMENT Tag (
Targets, Targets,
General?, General?,
Genres?, Genres?,
@ -13,14 +13,14 @@
MultiTitle?, MultiTitle?,
MultiComment*)> MultiComment*)>
<!element Targets ( <!ELEMENT Targets (
TrackUID*, TrackUID*,
ChapterUID*, ChapterUID*,
MultiComment*)> MultiComment*)>
<!element TrackUID (#PCDATA)> <!ELEMENT TrackUID (#PCDATA)>
<!element ChapterUID (#PCDATA)> <!ELEMENT ChapterUID (#PCDATA)>
<!element General ( <!ELEMENT General (
Subject?, Subject?,
Bibliography?, Bibliography?,
Language?, Language?,
@ -39,34 +39,34 @@
PlayCounter?, PlayCounter?,
Popularimeter?, Popularimeter?,
MultiComment*)> MultiComment*)>
<!element Subject (#PCDATA)> <!ELEMENT Subject (#PCDATA)>
<!element Biography (#PCDATA)> <!ELEMENT Biography (#PCDATA)>
<!element Language (#PCDATA)> <!ELEMENT Language (#PCDATA)>
<!element Rating (#PCDATA)> <!ELEMENT Rating (#PCDATA)>
<!element Encoder (#PCDATA)> <!ELEMENT Encoder (#PCDATA)>
<!element EncodeSettings (#PCDATA)> <!ELEMENT EncodeSettings (#PCDATA)>
<!element File (#PCDATA)> <!ELEMENT File (#PCDATA)>
<!element ArchivalLocation (#PCDATA)> <!ELEMENT ArchivalLocation (#PCDATA)>
<!element Keywords (#PCDATA)> <!ELEMENT Keywords (#PCDATA)>
<!element Mood (#PCDATA)> <!ELEMENT Mood (#PCDATA)>
<!element RecordLocation (#PCDATA)> <!ELEMENT RecordLocation (#PCDATA)>
<!element Source (#PCDATA)> <!ELEMENT Source (#PCDATA)>
<!element SourceForm (#PCDATA)> <!ELEMENT SourceForm (#PCDATA)>
<!element Product (#PCDATA)> <!ELEMENT Product (#PCDATA)>
<!element OriginalMediaType (#PCDATA)> <!ELEMENT OriginalMediaType (#PCDATA)>
<!element PlayCounter (#PCDATA)> <!ELEMENT PlayCounter (#PCDATA)>
<!element Popularimeter (#PCDATA)> <!ELEMENT Popularimeter (#PCDATA)>
<!element Genres ( <!ELEMENT Genres (
AudioGenre*, AudioGenre*,
VideoGenre*, VideoGenre*,
SubGenre?, SubGenre?,
MultiComment*)> MultiComment*)>
<!element AudioGenre (#PCDATA)> <!ELEMENT AudioGenre (#PCDATA)>
<!element VideoGenre (#PCDATA)> <!ELEMENT VideoGenre (#PCDATA)>
<!element SubGenre (#PCDATA)> <!ELEMENT SubGenre (#PCDATA)>
<!element AudioSpecific ( <!ELEMENT AudioSpecific (
AudioEncryption?, AudioEncryption?,
AudioGain?, AudioGain?,
AudioPeak?, AudioPeak?,
@ -78,18 +78,18 @@
OfficialAudioFileURL?, OfficialAudioFileURL?,
OfficialAudioSourceURL?, OfficialAudioSourceURL?,
MultiComment*)> MultiComment*)>
<!element AudioEncryption (#PCDATA)> <!ELEMENT AudioEncryption (#PCDATA)>
<!element AudioGain (#PCDATA)> <!ELEMENT AudioGain (#PCDATA)>
<!element AudioPeak (#PCDATA)> <!ELEMENT AudioPeak (#PCDATA)>
<!element BPM (#PCDATA)> <!ELEMENT BPM (#PCDATA)>
<!element Equalisation (#PCDATA)> <!ELEMENT Equalisation (#PCDATA)>
<!element DiscTrack (#PCDATA)> <!ELEMENT DiscTrack (#PCDATA)>
<!element SetPart (#PCDATA)> <!ELEMENT SetPart (#PCDATA)>
<!element InitialKey (#PCDATA)> <!ELEMENT InitialKey (#PCDATA)>
<!element OfficialAudioFileURL (#PCDATA)> <!ELEMENT OfficialAudioFileURL (#PCDATA)>
<!element OfficialAudioSourceURL (#PCDATA)> <!ELEMENT OfficialAudioSourceURL (#PCDATA)>
<!element ImageSpecific ( <!ELEMENT ImageSpecific (
CaptureDPI?, CaptureDPI?,
CaptureLightness?, CaptureLightness?,
CapturePaletteSetting?, CapturePaletteSetting?,
@ -97,74 +97,77 @@
Cropped?, Cropped?,
OriginalDimensions, OriginalDimensions,
MultiComment*)> MultiComment*)>
<!element CaptureDPI (#PCDATA)> <!ELEMENT CaptureDPI (#PCDATA)>
<!element CaptureLightness (#PCDATA)> <!ELEMENT CaptureLightness (#PCDATA)>
<!element CapturePaletteSetting (#PCDATA)> <!ELEMENT CapturePaletteSetting (#PCDATA)>
<!element CaptureSharpness (#PCDATA)> <!ELEMENT CaptureSharpness (#PCDATA)>
<!element Cropped (#PCDATA)> <!ELEMENT Cropped (#PCDATA)>
<!element OriginalDimensions (#PCDATA)> <!ELEMENT OriginalDimensions (#PCDATA)>
<!element MultiCommercial (Commercial+)> <!ELEMENT MultiCommercial (Commercial+)>
<!element Commercial( <!ELEMENT Commercial(
Type, CommercialType,
Address?, Address?,
URL*, URL*,
Email*, Email*,
MultiPrice*, MultiPrice*,
MultiComment*)> MultiComment*)>
<!element Type (#PCDATA)> <!ELEMENT CommercialType (#PCDATA)>
<!element Address (#PCDATA)> <!ELEMENT Address (#PCDATA)>
<!element URL (#PCDATA)> <!ELEMENT URL (#PCDATA)>
<!element Email (#PCDATA)> <!ELEMENT Email (#PCDATA)>
<!element MultiPrice ( <!ELEMENT MultiPrice (
Currency?, Currency?,
Amount?, Amount?,
PriceDate?, PriceDate?,
MultiComment*)> MultiComment*)>
<!element Currency (#PCDATA)> <!ELEMENT Currency (#PCDATA)>
<!element Amount (#PCDATA)> <!ELEMENT Amount (#PCDATA)>
<!element PriceDate (#PCDATA)> <!ELEMENT PriceDate (#PCDATA)>
<!element MultiDate (Date+)> <!ELEMENT MultiDate (Date+)>
<!element Date ( <!ELEMENT Date (
Type, DateType,
Begin?, Begin?,
End?, End?,
MultiComment*)> MultiComment*)>
<!element Begin (#PCDATA)> <!ELEMENT DateType (#PCDATA)>
<!element End (#PCDATA)> <!ELEMENT Begin (#PCDATA)>
<!ELEMENT End (#PCDATA)>
<!element MultiEntity (Entity+)> <!ELEMENT MultiEntity (Entity+)>
<!element Entity ( <!ELEMENT Entity (
EntityType, EntityType,
Name?, Name?,
URL*, URL*,
Email*, Email*,
Address?, Address?,
MultiComment*)> MultiComment*)>
<!element EntityType (#PCDATA)> <!ELEMENT EntityType (#PCDATA)>
<!element Name (#PCDATA)> <!ELEMENT Name (#PCDATA)>
<!element MultiIdentifier (Identifier+)> <!ELEMENT MultiIdentifier (Identifier+)>
<!element Identifier ( <!ELEMENT Identifier (
Type, IdentifierType,
Binary?, Binary?,
String?, String?,
MultiComment*)> MultiComment*)>
<!element Binary (#PCDATA)> <!ELEMENT IdentifierType (#PCDATA)>
<!element String (#PCDATA)> <!ELEMENT Binary (#PCDATA)>
<!ELEMENT String (#PCDATA)>
<!element MultiLegal (Legal+)> <!ELEMENT MultiLegal (Legal+)>
<!element Legal ( <!ELEMENT Legal (
Type, LegalType,
URL*, URL*,
Address?, Address?,
Content?, Content?,
MultiComment*)> MultiComment*)>
<!element Content (#PCDATA)> <!ELEMENT LegalType (#PCDATA)>
<!ELEMENT Content (#PCDATA)>
<!element MultiTitle (Title+)> <!ELEMENT MultiTitle (Title+)>
<!element Title ( <!ELEMENT Title (
TitleType, TitleType,
Name?, Name?,
SubTitle?, SubTitle?,
@ -174,11 +177,12 @@
Email*, Email*,
Language?, Language?,
MultiComment*)> MultiComment*)>
<!element SubTitle (#PCDATA)> <!ELEMENT TitleType (#PCDATA)>
<!element Edition (#PCDATA)> <!ELEMENT SubTitle (#PCDATA)>
<!ELEMENT Edition (#PCDATA)>
<!element MultiComment ( <!ELEMENT MultiComment (
Name?, Name?,
Comments, Comments,
Language?)> Language?)>
<!element Comments (#PCDATA)> <!ELEMENT Comments (#PCDATA)>

View File

@ -479,7 +479,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
parent = (*pdata->parents)[pdata->parents->size() - 2]; parent = (*pdata->parents)[pdata->parents->size() - 2];
if (parent == E_Commercial) { if (parent == E_Commercial) {
if (!strcmp(name, "Type")) if (!strcmp(name, "CommercialType"))
el_get_uint(pdata, &GetChild<KaxTagMultiCommercialType> el_get_uint(pdata, &GetChild<KaxTagMultiCommercialType>
(*pdata->commercial), 1); (*pdata->commercial), 1);
else if (!strcmp(name, "Address")) else if (!strcmp(name, "Address"))
@ -494,7 +494,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
} }
} else if (parent == E_Date) { } else if (parent == E_Date) {
if (!strcmp(name, "Type")) if (!strcmp(name, "DateType"))
el_get_uint(pdata, &GetChild<KaxTagMultiDateType> el_get_uint(pdata, &GetChild<KaxTagMultiDateType>
(*pdata->date), 1); (*pdata->date), 1);
else if (!strcmp(name, "Begin")) else if (!strcmp(name, "Begin"))
@ -505,7 +505,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
(*pdata->date)); (*pdata->date));
} else if (parent == E_Entity) { } else if (parent == E_Entity) {
if (!strcmp(name, "Type")) if (!strcmp(name, "EntityType"))
el_get_uint(pdata, &GetChild<KaxTagMultiEntityType> el_get_uint(pdata, &GetChild<KaxTagMultiEntityType>
(*pdata->entity), 1); (*pdata->entity), 1);
else if (!strcmp(name, "Name")) else if (!strcmp(name, "Name"))
@ -520,7 +520,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
(*pdata->entity)); (*pdata->entity));
} else if (parent == E_Identifier) { } else if (parent == E_Identifier) {
if (!strcmp(name, "Type")) if (!strcmp(name, "IdentifierType"))
el_get_uint(pdata, &GetChild<KaxTagMultiIdentifierType> el_get_uint(pdata, &GetChild<KaxTagMultiIdentifierType>
(*pdata->identifier), 1); (*pdata->identifier), 1);
else if (!strcmp(name, "Binary")) else if (!strcmp(name, "Binary"))
@ -531,7 +531,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
(*pdata->identifier)); (*pdata->identifier));
} else if (parent == E_Legal) { } else if (parent == E_Legal) {
if (!strcmp(name, "Type")) if (!strcmp(name, "LegalType"))
el_get_uint(pdata, &GetChild<KaxTagMultiLegalType> el_get_uint(pdata, &GetChild<KaxTagMultiLegalType>
(*pdata->legal), 1); (*pdata->legal), 1);
else if (!strcmp(name, "URL")) else if (!strcmp(name, "URL"))
@ -544,7 +544,7 @@ static void end_level4(parser_data_t *pdata, const char *name) {
(*pdata->legal)); (*pdata->legal));
} else if (parent == E_Title) { } else if (parent == E_Title) {
if (!strcmp(name, "Type")) if (!strcmp(name, "TitleType"))
el_get_uint(pdata, &GetChild<KaxTagMultiTitleType> el_get_uint(pdata, &GetChild<KaxTagMultiTitleType>
(*pdata->title), 1); (*pdata->title), 1);
else if (!strcmp(name, "Name")) else if (!strcmp(name, "Name"))

View File

@ -540,7 +540,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "CommercialType")) {
check_instances(pdata->commercial, KaxTagMultiCommercialType); check_instances(pdata->commercial, KaxTagMultiCommercialType);
pdata->parents->push_back(E_CommercialType); pdata->parents->push_back(E_CommercialType);
} else if (!strcmp(name, "Address")) { } else if (!strcmp(name, "Address")) {
@ -582,7 +582,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "DateType")) {
check_instances(pdata->date, KaxTagMultiDateType); check_instances(pdata->date, KaxTagMultiDateType);
pdata->parents->push_back(E_DateType); pdata->parents->push_back(E_DateType);
} else if (!strcmp(name, "Begin")) { } else if (!strcmp(name, "Begin")) {
@ -600,7 +600,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "EntityType")) {
check_instances(pdata->entity, KaxTagMultiEntityType); check_instances(pdata->entity, KaxTagMultiEntityType);
pdata->parents->push_back(E_EntityType); pdata->parents->push_back(E_EntityType);
} else if (!strcmp(name, "Name")) { } else if (!strcmp(name, "Name")) {
@ -635,7 +635,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "IdentifierType")) {
check_instances(pdata->identifier, KaxTagMultiIdentifierType); check_instances(pdata->identifier, KaxTagMultiIdentifierType);
pdata->parents->push_back(E_IdentifierType); pdata->parents->push_back(E_IdentifierType);
} else if (!strcmp(name, "Binary")) { } else if (!strcmp(name, "Binary")) {
@ -653,7 +653,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "LegalType")) {
check_instances(pdata->legal, KaxTagMultiLegalType); check_instances(pdata->legal, KaxTagMultiLegalType);
pdata->parents->push_back(E_LegalType); pdata->parents->push_back(E_LegalType);
} else if (!strcmp(name, "URL")) { } else if (!strcmp(name, "URL")) {
@ -679,7 +679,7 @@ static void start_level4(parser_data_t *pdata, const char *name) {
pdata->data_allowed = true; pdata->data_allowed = true;
if (!strcmp(name, "Type")) { if (!strcmp(name, "TitleType")) {
check_instances(pdata->title, KaxTagMultiTitleType); check_instances(pdata->title, KaxTagMultiTitleType);
pdata->parents->push_back(E_TitleType); pdata->parents->push_back(E_TitleType);
} else if (!strcmp(name, "Name")) { } else if (!strcmp(name, "Name")) {

View File

@ -156,7 +156,7 @@ static void handle_level4(EbmlElement *e) {
int i, level = 4; int i, level = 4;
if (is_id(KaxTagMultiCommercialType)) if (is_id(KaxTagMultiCommercialType))
pr_ui("Type"); pr_ui("CommercialType");
else if (is_id(KaxTagMultiCommercialAddress)) else if (is_id(KaxTagMultiCommercialAddress))
pr_us("Address"); pr_us("Address");
@ -174,7 +174,7 @@ static void handle_level4(EbmlElement *e) {
mxprint(o, " </MultiPrice>\n"); mxprint(o, " </MultiPrice>\n");
} else if (is_id(KaxTagMultiDateType)) } else if (is_id(KaxTagMultiDateType))
pr_ui("Type"); pr_ui("DateType");
else if (is_id(KaxTagMultiDateDateBegin)) else if (is_id(KaxTagMultiDateDateBegin))
pr_d("Begin"); pr_d("Begin");
@ -183,7 +183,7 @@ static void handle_level4(EbmlElement *e) {
pr_d("End"); pr_d("End");
else if (is_id(KaxTagMultiEntityType)) else if (is_id(KaxTagMultiEntityType))
pr_ui("Type"); pr_ui("EntityType");
else if (is_id(KaxTagMultiEntityName)) else if (is_id(KaxTagMultiEntityName))
pr_us("Name"); pr_us("Name");
@ -207,7 +207,7 @@ static void handle_level4(EbmlElement *e) {
pr_us("String"); pr_us("String");
else if (is_id(KaxTagMultiLegalType)) else if (is_id(KaxTagMultiLegalType))
pr_ui("Type"); pr_ui("LegalType");
else if (is_id(KaxTagMultiLegalURL)) else if (is_id(KaxTagMultiLegalURL))
pr_s("URL"); pr_s("URL");
@ -219,7 +219,7 @@ static void handle_level4(EbmlElement *e) {
pr_us("Content"); pr_us("Content");
else if (is_id(KaxTagMultiTitleType)) else if (is_id(KaxTagMultiTitleType))
pr_ui("Type"); pr_ui("TitleType");
else if (is_id(KaxTagMultiTitleName)) else if (is_id(KaxTagMultiTitleName))
pr_us("Name"); pr_us("Name");
@ -379,7 +379,7 @@ static void handle_level3(EbmlElement *e) {
mxprint(o, " <Entity>\n"); mxprint(o, " <Entity>\n");
for (i = 0; i < ((EbmlMaster *)e)->ListSize(); i++) for (i = 0; i < ((EbmlMaster *)e)->ListSize(); i++)
handle_level4((*(EbmlMaster *)e)[i]); handle_level4((*(EbmlMaster *)e)[i]);
mxprint(o, " </Enetity>\n"); mxprint(o, " </Entity>\n");
} else if (is_id(KaxTagIdentifier)) { } else if (is_id(KaxTagIdentifier)) {
mxprint(o, " <Identifier>\n"); mxprint(o, " <Identifier>\n");