「pracownik」の「imie」と「surname」に一意のキーを追加したかったのですが、何が間違っているのかわかりません。私はユニークについての20のトピックのように読んだ。「xmlns:m」の追加など、いくつかの回答を試しました。また、xpathテスターを使用し、「imie」を取得するには、xpath = "firma / listaPracownikow / pracownik / imie"に合格する必要があります。
それは私のスキーマファイルの一部です:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://moja_przestrzen"
xmlns:m="http://moja_przestrzen"
xmlns:mp="http://moja_przestrzen/inc"
targetNamespace="http://moja_przestrzen"
elementFormDefault="qualified"
>
<xsd:element name="firma">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="listaPracownikow">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="pracownik" type="pracownik" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element ref="mp:listaDoWydania"/>
<xsd:element name="dzial" type="typDzial" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:unique name="kluczImieNazwisko">
<xsd:selector xpath="m:listaPracownikow/pracownik"/>
<xsd:field xpath="imie"/>
<xsd:field xpath="nazwisko"/>
</xsd:unique>
<xsd:key name="kluczDzial">
<xsd:selector xpath="dzial"/>
<xsd:field xpath="@num"/>
</xsd:key>
<xsd:keyref name="dzialPracownikRef" refer="kluczDzial">
<xsd:selector xpath="listaPracownikow/pracownik"/>
<xsd:field xpath="nrDzialu"/>
</xsd:keyref>
</xsd:element>
</xsd:schema>
xmlの一部:
<?xml version="1.0" encoding="UTF-8"?>
<firma xmlns="http://moja_przestrzen" xmlns:i="http://moja_przestrzen/inc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://moja_przestrzen schema.xsd">
<listaPracownikow>
<pracownik kraj="Polska" urlop="false">
<stanowisko>Dyrektor</stanowisko>
<nrDzialu>1</nrDzialu>
<imie>Jan</imie>
<nazwisko>Kowalski</nazwisko>
<wiek>Utajone</wiek>
<data_zatrudnienia>2016-08-12</data_zatrudnienia>
<rozpoczecie_pracy>08:00:00</rozpoczecie_pracy>
<pensja>5300.0</pensja>
<plec_osoby>
<mezczyzna />
</plec_osoby>
<nr_telefonu>332-112-333</nr_telefonu>
<adres>
<miasto>Gdansk</miasto>
<ulica>Kopeckiego</ulica>
<nr_domu>3C</nr_domu>
</adres>
</pracownik>
<pracownik kraj="Polska" urlop="false">
<stanowisko>Wicedyrektor</stanowisko>
<nrDzialu>1</nrDzialu>
<imie>Jan</imie>
<nazwisko>Kowalski</nazwisko>
<wiek>43</wiek>
<data_zatrudnienia>2016-09-22</data_zatrudnienia>
<rozpoczecie_pracy>08:00:00</rozpoczecie_pracy>
<pensja>5000.0</pensja>
<plec_osoby>
<kobieta />
</plec_osoby>
<nr_telefonu>332-112-333</nr_telefonu>
<adres>
<miasto>Gdansk</miasto>
<ulica>Gawrowicza</ulica>
<nr_domu>11A</nr_domu>
</adres>
</pracownik>
<i:listaDoWydania>1300 1500 6200</i:listaDoWydania>
<dzial num="1">
<nazwa>Kierownictwo</nazwa>
</dzial>
<dzial num="2">
<nazwa>Administracja</nazwa>
</dzial>
<dzial num="3">
<nazwa>Ksiegowosc</nazwa>
</dzial>
keyとkeyrefで同じ問題がありますが、同じ問題だと思います。
すべての要素は名前空間にあるため、XPath式のすべての要素名に接頭辞を付ける必要があります。
<xsd:selector xpath="m:listaPracownikow/m:pracownik"/>
<xsd:field xpath="m:imie"/>
<xsd:field xpath="m:nazwisko"/>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加