我有一个XML文档:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE ONIXMessage SYSTEM "http://www.editeur.org/onix/2.1/reference/onix-international.dtd">
<ONIXMessage>
<Header>
<FromCompany>Companyy</FromCompany>
<SentDate>20101213</SentDate>
</Header>
<Product>
<RecordReference>153640</RecordReference>
<NotificationType>03</NotificationType>
<ProductIdentifier>
<ProductIDType>03</ProductIDType>
<IDValue>9785714009341</IDValue>
</ProductIdentifier>
<ProductForm>AC</ProductForm>
<NumberOfPieces>1</NumberOfPieces>
<ProductClassification>
<ProductClassificationType>02</ProductClassificationType>
<ProductClassificationCode>55101514</ProductClassificationCode>
</ProductClassification>
<Title>
<TitleType>01</TitleType>
<TitleText>Jazz Piano. Volume 3.</TitleText>
</Title>
<Contributor>
<SequenceNumber>1</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Waller Fats</PersonName>
<PersonNameInverted>Fats, Waller</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Waller</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Fats</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>2</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Peterson Oscar</PersonName>
<PersonNameInverted>Oscar, Peterson</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Peterson</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Oscar</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>3</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Kenton Stan</PersonName>
<PersonNameInverted>Stan, Kenton</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Kenton</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Stan</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>4</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Evans Bill</PersonName>
<PersonNameInverted>Bill, Evans</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Evans</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Bill</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>5</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Shearing George</PersonName>
<PersonNameInverted>George, Shearing</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Shearing</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>George</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>6</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>D. Ellington</PersonName>
<PersonNameInverted>Ellington, D.</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>D.</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Ellington</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Contributor>
<SequenceNumber>7</SequenceNumber>
<ContributorRole>A01</ContributorRole>
<PersonName>Corea Chic</PersonName>
<PersonNameInverted>Chic, Corea</PersonNameInverted>
<TitlesBeforeNames> </TitlesBeforeNames>
<NamesBeforeKey>Corea</NamesBeforeKey>
<PrefixToKey> </PrefixToKey>
<KeyNames>Chic</KeyNames>
<SuffixToKey> </SuffixToKey>
</Contributor>
<Language>
<LanguageRole>01</LanguageRole>
<LanguageCode>rus</LanguageCode>
</Language>
<NumberOfPages>0</NumberOfPages>
<MainSubject>
<MainSubjectSchemeIdentifier>20</MainSubjectSchemeIdentifier>
<SubjectHeadingText>Nuotit, Jazz pianolle</SubjectHeadingText>
</MainSubject>
<OtherText>
<TextTypeCode>01</TextTypeCode>
<Text>Contents<br>
Thomas «Fats» WALLER. Keepin' out of Mischief Now
Oscar PETERSON. Whisper Not
Stan KENTON. Painted Rhythm
Oscar PETERSON. The Nearness of You
Stan KENTON. Southern Scandal<br> Nat «King» COLE. Blues<br> Bill EVANS. Interplay (Blues F minor)
Bill EVANS. Very Early
George SHEARING. Changing with the Times
Duke ELLINGTON. Echoes of Harlem
Chick COREA. Gemini</Text>
</OtherText>
<MediaFile>
<MediaFileTypeCode>04</MediaFileTypeCode>
<MediaFileFormatCode>03</MediaFileFormatCode>
<MediaFileLinkTypeCode>01</MediaFileLinkTypeCode>
<MediaFileLink>9785714009341.jpg</MediaFileLink>
<MediaFileDate>20101220</MediaFileDate>
</MediaFile>
<ProductWebsite>
<ProductWebsiteLink>http://www.site.com/344.html</ProductWebsiteLink>
</ProductWebsite>
<Publisher>
<PublisherName>Muzyka</PublisherName>
</Publisher>
<CountryOfPublication>RU</CountryOfPublication>
<PublishingStatus>04</PublishingStatus>
<PublicationDate>2010</PublicationDate>
<SupplyDetail>
<SupplierName>Company</SupplierName>
<ProductAvailability>21</ProductAvailability>
<Price>
<PriceTypeCode>02</PriceTypeCode>
<PriceAmount>9.0000</PriceAmount>
<CurrencyCode>EUR</CurrencyCode>
<TaxRateCode1>S</TaxRateCode1>
<TaxRatePercent1>9</TaxRatePercent1>
</Price>
</SupplyDetail>
</Product>
</ONIXMessage>
验证码是:
xml = "this XML document above";
var r = new XmlTextReader(new StringReader(xml));
var settings = new XmlReaderSettings();
var sb = new StringBuilder();
settings.ProhibitDtd = false;
settings.ValidationType = ValidationType.DTD;
settings.ValidationEventHandler += (a, e) =>
{
sb.AppendLine(e.Message);
ret = false;
};
XmlReader validator = XmlReader.Create(r, settings);
while (validator.Read())
{
}
validator.Close();
我收到了验证错误:
元素'Product'无效 子元素'语言'。清单 可能的元素: '贡献者NumberWithinSeries YearOfAnnual ISBNOfSet EAN13OfSet ProductIdentifier TitleOfSet标题集 TextCaseFlag DistinctiveTitle TitlePrefix Title'。
但是当我将此XML发送给我的合作伙伴时,他说该文档不包含验证错误。 他们使用org.dom4j.io.SAXReader来验证它。 怎么可能?我做正确的诽谤吗?
答案 0 :(得分:1)
从我能阅读的内容我猜你的.dtd包含错误,而不是你的代码。您是否检查过.dtd是否包含<Language>
及其子项的定义?