我想在“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有同样的问题,但我想这是同样的问题。
答案 0 :(得分:0)
所有元素都在命名空间中,因此XPath表达式中的所有元素名称都需要加前缀:
<xsd:selector xpath="m:listaPracownikow/m:pracownik"/>
<xsd:field xpath="m:imie"/>
<xsd:field xpath="m:nazwisko"/>