Jedyną rzeczą, którą musisz zrobić, to usunąć xmlns="http://www.w3.org/XML/1998/namespace"
z FictionBookLang.xsd, jako że jest jedynym winowajcą:
Autor zbioru najprawdopodobniej chciał upewnić się, że Atrybut xml: lang jest dostępny dla ludzi. To nie jest właściwa droga, ale mimo to może działać w pewnych sytuacjach.
Zazwyczaj robi się to inaczej. Jeśli procesor XML XSD świadomy jest „inteligentny”, taki import należy zrobić jak tak, to znaczy zamiast
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="FictionBookLang.xsd"/>
powinno być:
<xs:import namespace="http://www.w3.org/XML/1998/namespace"/>
To się nazywa zwisające odniesienia zewnętrzne; "inteligentne" procesory XSD wiedzą, jak rozdzielić lokalizacje na dobrze znane przestrzenie nazw (z pewnością jeden z nich to http://www.w3.org/XML/1998/namespace).
Tak właśnie powinien wyglądać zestaw po użyciu zwisającego importu; plik xml.xsd został automatycznie dodany przez procesor, a kopia powinna być wymieniona na liście here.
Innymi słowy, normalnie FictionBookLand.xsd NIE POWINNA być nawet częścią kompilacji. W szczególności, jeśli otrzymasz te XSD w połączeniu z innymi, które odnoszą się poprawnie do atrybutu xml: lang, otrzymasz błąd deklaracji duplikatu atrybutu.
W każdym razie, jeśli usuniesz tylko atrybut zgodny z opisem, wszystko staje się ważne; stamtąd można zbudować przykładowy XML - w przeciwieństwie do XSDs są w porządku. Próbka mam generowany jest ogromny, jestem delegowania tylko pierwsze kilka linii ...
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<FictionBook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:genre="http://www.gribuser.ru/xml/fictionbook/2.0/genres" xmlns="http://www.gribuser.ru/xml/fictionbook/2.0">
<stylesheet type="type1">stylesheet1</stylesheet>
<description>
<title-info>
<genre match="100">architecture</genre>
<author>
<first-name xml:lang="en">first-name1</first-name>
<middle-name xml:lang="en">middle-name1</middle-name>
<last-name xml:lang="en">last-name1</last-name>
<nickname xml:lang="en">nickname1</nickname>
<home-page>home-page1</home-page>
<home-page>home-page1</home-page>
<email>email1</email>
<email>email1</email>
</author>
<book-title xml:lang="en">book-title1</book-title>
<annotation id="ID1" xml:lang="en">
Problem rzeczywiście z http://gribuser.ru/xml/fictionbook/2.0/xsd/FictionBookLang. xsd.Pojawi się problem po prostu próba wyświetlenia go w przeglądarce. –
I FYI Znalazłem to, próbując replikować swój problem przy użyciu klas .NET Framework. 'Xml.Schema.XmlSchema.Read (XmlReader.Create (" http://gribuser.ru/xml/fictionbook/2.0/xsd/FictionBookLang.xsd "), Nic)' odtwarza błąd. –
Rozumiem, że to z powodu FictionBookLang.xsd, ale nadal nie mogę wymyślić, jak to naprawić. – thorn