src-resolve:无法将名称“ idKey”解析为一个(n)“身份约束”组件

时间:2018-11-02 18:59:22

标签: xml xsd key schema

我正在尝试将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>

0 个答案:

没有答案