我正在尝试将alko.xsd文件中的key元素和keyref用于piwowarzy.xml中的id和idref属性,但是出现以下错误:
src-resolve.4.1:解决组件'idKey'时出错。检测到'idKey'没有命名空间,但是没有目标命名空间的组件无法从架构文档'file:/ C:/ Marcin / Studia / Semestr%203 / Technologie%20XML / test%202%20zapasowy / Zad%中引用202%20Mucha%20Miko%C5%82ajczyk / alko.xsd'。如果“ idKey”打算具有名称空间,则可能需要提供前缀。如果希望'idKey'没有命名空间,则应将没有“ namespace”属性的'import'添加到'file:/ C:/ Marcin / Studia / Semestr%203 / Technologie%20XML / test%202% 20zapasowy / Zad%202%20Mucha%20Miko%C5%82ajczyk / alko.xsd'。 [89]
src-resolve:无法将名称'idKey'解析为一个(n)'身份约束'组件。 [89]
有代码示例:
pwiowarzy.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet typek="text/css" href="astyle.css" ?>
<p:projekt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://piwowarzy.pl/projekt main.xsd"
xmlns:p="http://piwowarzy.pl/projekt"
xmlns:o="http://piwowarzy.pl/alko"
xmlns:c="http://piwowarzy.pl/info"
xmlns:cmn="http://piwowarzy.pl/tytul">
<p:tytul> Piwa europejskie </p:tytul>
<c:info>
<c:autorzy>Bartłomiej Mikołajczyk, Marcin Mucha</c:autorzy>
<c:opis2>Arkusz ten zawiera dane o różnych rodzajach piw, informacje o nich oraz krótkie opisy.</c:opis2>
<c:data>Ostatnia data modyfikacji: 25.10.2018</c:data>
</c:info>
<p:piwa_i_alkohole>
<o:piwo id="p01" from="polskie">
<o:nazwa>Żywiec</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Lubelszczyzna</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Żywiec</o:name>
<o:rozlewnia>Żywiec</o:rozlewnia>
<o:rok_założenia>1856</o:rok_założenia>
<o:alkohol>5,6%</o:alkohol>
</o:browar>
<o:opis>Piwo Żywiec od momentu powstania w 1856 r. jest warzone stale i niezmiennie w tym samym miejscu – browarze w Żywcu.
Najsłynniejsze polskie piwo typu pilzneńskiego. Absolutna klasyka gatunku i idealne połączenie tradycji z nowoczesnością.</o:opis>
</o:piwo>
<o:piwo id="p02" from="polskie">
<o:nazwa>Namysłów Pils</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Opolszczyzna</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Namysłów</o:name>
<o:rozlewnia>Namysłów</o:rozlewnia>
<o:rok_założenia>1321</o:rok_założenia>
<o:alkohol>6,0%</o:alkohol>
</o:browar>
<o:opis>Namysłów Pils to piwo jasne pełne. Piwo to powstaje w oparciu o tradycyjne metody produkcji takie jak otwarte kadzie fermentacyjne, które browar utrzymuje i pielęgnuje aby było ono wyjątkowe w swoim smaku.
Również opakowanie Pilsa nawiązuje do tradycji browaru Namysłów, jego regionalnego charakteru oraz autentyczności pochodzenia.</o:opis>
</o:piwo>
<o:piwo id="p03" from="polskie">
<o:nazwa>Harnaś Jasne Pełne</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Małopolska</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Okocim</o:name>
<o:rozlewnia>Okocim</o:rozlewnia>
<o:rok_założenia>1845</o:rok_założenia>
<o:alkohol>6,0%</o:alkohol>
</o:browar>
<o:opis>Szlachetne męskie piwo pełne siły, humoru i pogody ducha. Orzeźwia i cieszy swoim wyjątkowym smakiem i aromatem. Idealne do pracy.</o:opis>
</o:piwo>
<o:piwo id="p04" from="polskie">
<o:nazwa>Lech Premium</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Wielkopolska</o:region>
</o:chmiel>
<o:browar typek="ciemne">
<o:name>Lech Browary Wielkopolski</o:name>
<o:rozlewnia>Poznań</o:rozlewnia>
<o:rok_założenia>1975</o:rok_założenia>
<o:alkohol>5,2%</o:alkohol>
</o:browar>
<o:opis>Lech Premium to jedna z czołowych marek Kompanii Piwowarskiej, która istnieje na rynku już od początku lat osiemdziesiątych. Doprowadzony do perfekcji proces produkcji Lecha w poznańskim browarze, jednym z najnowocześniejszych browarów w Europie, jest gwarancją najwyższej jakości piwa Lech.
Piwo Lech Premium to harmonia smaku i odpowiedniego nagazowania, które nadają mu doskonałych właściwości orzeźwiających, idealne połączenie mocy ze szlachetną goryczą dojrzałego chmielu. Piwo warzone z naturalnych składników.</o:opis>
</o:piwo>
<o:piwo id="p12" from="zagraniczne">
<o:nazwa>Heineken</o:nazwa>
<o:chmiel>
<o:kraj idref="p102">Holandia</o:kraj>
<o:region>Holandia Południowa</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Heineken</o:name>
<o:rozlewnia>Zoeterwoude</o:rozlewnia>
<o:rok_założenia>1864</o:rok_założenia>
<o:alkohol>5,0%</o:alkohol>
</o:browar>
<o:opis>Heineken, w charakterystycznej zielonej butelce, jest jedną z najsilniejszych międzynarodowych marek piwa. Jest sprzedawany na każdym kontynencie w ponad 180 krajach świata. W Polsce Heineken jest największą marką w segmencie International Premium, cenioną przez osoby szukające piwa najwyższej jakości.
Na polskim rynku Heineken pojawił się oficjalnie w 1994. Od stycznia 2000 stał się częścią oferty handlowej Grupy Żywiec. Od czerwca 2001 wedle tradycyjnej receptury, przy zachowaniu najwyższych standardów browarniczych, Heineken warzony jest w browarze w Żywcu.</o:opis>
</o:piwo>
<o:piwo id="p13" from="polskie">
<o:nazwa>Kasztelan Niepasteryzowane</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Mazowieckie</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Kasztelan</o:name>
<o:rozlewnia>Sierpc</o:rozlewnia>
<o:rok_założenia>1972</o:rok_założenia>
<o:alkohol>5,7%</o:alkohol>
</o:browar>
<o:opis>Naturalne składniki, tradycyjna receptura, brak pasteryzacji to sekrety wyjątkowego smaku piwa Kasztelan Niepasteryzowane.</o:opis>
</o:piwo>
<o:piwo id="p14" from="zagraniczne">
<o:nazwa>Budweiser Budvar Original</o:nazwa>
<o:chmiel>
<o:kraj idref="p101">Czechy</o:kraj>
<o:region>Kotlina Czeskobudziejowicka</o:region>
</o:chmiel>
<o:browar typek="ciemne">
<o:name>Budějovický Budvar</o:name>
<o:rozlewnia>Czeskie Budziejowice</o:rozlewnia>
<o:rok_założenia>1265</o:rok_założenia>
<o:alkohol>5,0%</o:alkohol>
</o:browar>
<o:opis>Budweiser to piwo wręcz legendarne, jedno z najbardziej znanych czeskich piw. Powstaje tylko i wyłącznie w Czeskich Budziejowicach, dzięki czemu ma każdym kontynencie smakuje dokładnie tak samo.
Tradycja warzenia piwa Budweiser według niezmiennej od lat, oryginalnej receptury liczy 700 lat. Rewelacyjny smak, łagodny, a jednocześnie z wyraźnym posmakiem lekkiej goryczki. Głęboki kolor i idealne nasycenie to jego dodatkowe atuty.</o:opis>
</o:piwo>
<o:piwo id="p15" from="zagraniczne">
<o:nazwa>Carlsberg</o:nazwa>
<o:chmiel>
<o:kraj idref="p103">Dania</o:kraj>
<o:region>Hillerod</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Carlsberg</o:name>
<o:rozlewnia>Kopenhaga</o:rozlewnia>
<o:rok_założenia>1847</o:rok_założenia>
<o:alkohol>5,0%</o:alkohol>
</o:browar>
<o:opis>"Prawdopodobnie najlepsze piwo na świecie".
Charakterystyczne zielone butelki "Vichy" z tłoczonym znakiem firmowym Carlsberga i znak firmy podkreślony od dołu wstęgą każdemu piwoszowi kojarzy się ze znakomitym trunkiem.</o:opis>
</o:piwo>
<o:piwo id="p16" from="zagraniczne">
<o:nazwa>Desperados</o:nazwa>
<o:chmiel>
<o:kraj idref="p104">Francja</o:kraj>
<o:region>Grand Est</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Fischer</o:name>
<o:rozlewnia>Schiltigheim</o:rozlewnia>
<o:rok_założenia>1995</o:rok_założenia>
<o:alkohol>6,0%</o:alkohol>
</o:browar>
<o:opis>Desperados to najszybciej rosnąca marka Premium na polskim rynku. Unikalna formuła piwa z aromatem tequili znalazła w bardzo krótkim czasie liczne grono wielbicieli.
Desperados towarzyszy młodym konsumentom w trakcie zabawy zarówno w domu jak i klubach, dyskotekach. Polska to jedyny obok Francji kraj, w którym Desperados jest produkowany. Unikalna przezroczysta butelka i styl komunikacji to znaki szczególne tej marki.</o:opis>
</o:piwo>
<o:piwo id="p17" from="polskie">
<o:nazwa>Książęce Czerwony Lager</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Śląsk</o:region>
</o:chmiel>
<o:browar typek="pełne">
<o:name>Tyskie Browary Książęce</o:name>
<o:rozlewnia>Tychy</o:rozlewnia>
<o:rok_założenia>1613</o:rok_założenia>
<o:alkohol>4,9%</o:alkohol>
</o:browar>
<o:opis>Czerwony Lager o idealnie zbalansowanym smaku, swój wyjątkowy miedzianym kolor i kremową pianę zawdzięcza kompozycji słodów pilzneńskich i karmelowych. Przyjemny, naturalny zapach, wytrawna chmielowa goryczka oraz ciepłe karmelowe nuty podkreślają szlachetny charakter piwa.</o:opis>
</o:piwo>
<o:piwo id="p18" from="polskie">
<o:nazwa>Warka Radler</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Mazowieckie</o:region>
</o:chmiel>
<o:browar typek="jasne">
<o:name>Warka</o:name>
<o:rozlewnia>Warka</o:rozlewnia>
<o:rok_założenia>1968</o:rok_założenia>
<o:alkohol>2,0%</o:alkohol>
</o:browar>
<o:opis>Radler to jeden z najpopularniejszych w Europie mixów piwa z lemoniadą. Receptura oparta jest na połączeniu 40% jasnego piwa Warka z 60% lemoniady sporządzonej na bazie koncentratu soków cytrynowego i pomarańczowego.
Naturalnie mętny, lekki i pozbawiony nutki goryczy. Mętna konsystencja jest gwarantem obecności naturalnych składników. W smaku łączy walory jasnego piwa Warka oraz nutę cytrynowo-pomarańczowej lemoniady.</o:opis>
</o:piwo>
<o:piwo id="p19" from="polskie">
<o:nazwa>Łebskie Original</o:nazwa>
<o:chmiel>
<o:kraj idref="p100">Polska</o:kraj>
<o:region>Kaszuby</o:region>
</o:chmiel>
<o:browar typek="pełne">
<o:name>Łebski Browar</o:name>
<o:rozlewnia>Łeba</o:rozlewnia>
<o:rok_założenia>1977</o:rok_założenia>
<o:alkohol>5,6%</o:alkohol>
</o:browar>
<o:opis>o:piwo lekko pasteryzowane tzn. przez jedną minutę w 70°C, zachowuje wartościowe witaminy i minerały, a także jest źródłem tak korzystnie na nas działających przeciwutleniaczy. Doskonale gasi pragnienie.
Tradycyjnie warzone, z dodatkiem chmielu, coraz rzadziej występującego w tym szlachetnym trunku, dzięki czemu zawdzięcza ono swój wyśmienity smak.</o:opis>
</o:piwo>
<o:piwo id="p20" from="zagraniczne">
<o:nazwa>Beck’s</o:nazwa>
<o:chmiel>
<o:kraj idref="p105">Niemcy</o:kraj>
<o:region>Brema</o:region>
</o:chmiel>
<o:browar typek="ciemne">
<o:name>Beck’s Brewery</o:name>
<o:rozlewnia>Bremen</o:rozlewnia>
<o:rok_założenia>1873</o:rok_założenia>
<o:alkohol>5,0%</o:alkohol>
</o:browar>
<o:opis>Beck’s jest wspaniałym przedstawicielem grupy pilznerów. W swojej klasie należy z pewnością do liderów. Beck’s to piwo znane i cieszące się uznaniem niemal na całym świecie. Jest warzone od lat zgodnie z „niemieckim prawem czystości składu piwa”.</o:opis>
</o:piwo>
<o:lista_producentów>
<o:producent id="p100" short_name="PL">
<o:nazwa_2>Polska</o:nazwa_2>
</o:producent>
<o:producent id="p101" short_name="CZ">
<o:nazwa_2>Czechy</o:nazwa_2>
</o:producent>
<o:producent id="p102" short_name="NL">
<o:nazwa_2>Holandia</o:nazwa_2>
</o:producent>
<o:producent id="p103" short_name="DK">
<o:nazwa_2>Dania</o:nazwa_2>
</o:producent>
<o:producent id="p104" short_name="FR">
<o:nazwa_2>Francja</o:nazwa_2>
</o:producent>
<o:producent id="p105" short_name="GER">
<o:nazwa_2>Niemcy</o:nazwa_2>
</o:producent>
</o:lista_producentów>
</p:piwa_i_alkohole>
</p:projekt>
main.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:o="http://piwowarzy.pl/alko"
xmlns:p="http://piwowarzy.pl/projekt"
xmlns:cmn="http://piwowarzy.pl/tytul"
xmlns:c="http://piwowarzy.pl/info"
targetNamespace="http://piwowarzy.pl/projekt"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:import schemaLocation="tytul.xsd"
namespace="http://piwowarzy.pl/tytul" />
<xs:import schemaLocation="info.xsd"
namespace="http://piwowarzy.pl/info" />
<xs:import schemaLocation="alko.xsd"
namespace="http://piwowarzy.pl/alko" />
<xs:element name="projekt">
<xs:complexType>
<xs:sequence>
<xs:element name="tytul" type="cmn:tytul" />
<xs:element ref="c:info" />
<xs:element name="piwa_i_alkohole" type="o:alko" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
alko.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:cmn="http://piwowarzy.pl/tytul"
targetNamespace="http://piwowarzy.pl/alko"
xmlns:o="http://piwowarzy.pl/alko"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:import schemaLocation="tytuł.xsd"
namespace="http://piwowarzy.pl/tytul" />
<xs:complexType name="alko" >
<xs:sequence>
<xs:element name="piwo" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="nazwa" type="xs:string" />
<xs:element name="chmiel" >
<xs:complexType>
<xs:sequence>
<xs:element name="kraj">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="idref" type="xs:IDREF"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="region" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="browar" >
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="rozlewnia" type="xs:string" />
<xs:element name="rok_założenia" >
<xs:simpleType>
<xs:restriction base="xs:integer" >
<xs:minInclusive value="1" />
<xs:maxInclusive value="2018" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="alkohol">
<xs:simpleType>
<xs:restriction base="xs:string" >
<xs:pattern value="[0-9][,][0-9][%]" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="typek" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string" >
<xs:enumeration value="jasne" />
<xs:enumeration value="ciemne" />
<xs:enumeration value="pełne" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="opis" type="xs:string"/>
</xs:sequence>
<xs:attribute name="id" >
<xs:simpleType>
<xs:restriction base="xs:ID" >
<xs:pattern value="[p][0-2][0-9]" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="from" >
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN" >
<xs:enumeration value="polskie" />
<xs:enumeration value="zagraniczne" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:key name="idKey">
<xs:selector xpath="o:piwo/o:chmiel/o:kraj"/>
<xs:field xpath="@o:idref"/>
</xs:key>
<xs:keyref name="idKeyRef" refer="idKey">
<xs:selector xpath="o:lista_producentów/o:producent"/>
<xs:field xpath="@o:id"/>
</xs:keyref>
</xs:element>
<xs:element name="lista_producentów" >
<xs:complexType>
<xs:sequence>
<xs:element name="producent" maxOccurs="unbounded" >
<xs:complexType>
<xs:sequence>
<xs:element name="nazwa_2" type="xs:string" />
</xs:sequence>
<xs:attribute name="id" >
<xs:simpleType>
<xs:restriction base="xs:ID" >
<xs:pattern value="[p][1][0][0-5]" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="short_name" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>