1
xsd 스키마에서 고유 요소를 사용하는 방법을 보여주는 많은 예제를 보았지만 성공하지 못했습니다. http://www.freeformatter.com/xml-validator-xsd.html으로 테스트 한 오류 (테스트를위한 더 나은 도구를 알고있는 경우) : "스키마의 콘텐츠가 잘못되었습니다."고유 한 요소가 잘못되었거나 잘못 배치되었거나 너무 자주 발생합니다. "xsd unique constraint is Invalid
XSD :
<xsd:schema xmlns:inf="http://www.example.net/inflation" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:instrument="http://www.example.net/Instrument" targetNamespace="http://www.example.net/inflation" elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="http://www.example.net/Instrument" schemaLocation="instrument.xsd"/>
<xsd:element name="inflations" type="inf:Inflations"/>
<xsd:complexType name="Inflations">
<xsd:sequence>
<xsd:element name="historyTable" type="xsd:string" default="INFLATION_HISTORY"/>
<xsd:element name="inflationHistory" type="inf:InflationHistory" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="InflationHistory">
<xsd:sequence>
<xsd:element name="identifier" type="integer"/>
<xsd:element name="inflation" type="inf:Inflation" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<!-- Uniqueness -->
<xsd:unique name="CodeUniqueKey">
<xsd:selector xpath="inf:inflationHistory" />
<xsd:field xpath="inf:identifier" />
</xsd:unique>
</xsd:schema>
왜 고유 제한 조건이 요소 내부에 가야합니까? 나는 뒤에 논리를하지 않습니까? 요소가 중요합니까? 아니면 어떤 요소라도 괜찮습니까? – taktak004
@ taktak004는 포함 요소 선언을 고유성 제약 조건의 "범위", 즉 사물이 고유해야하는 그룹으로 생각합니다. 제약 조건은 "같은'inflations' 부모 내의 모든'inflationHistory' 엘리먼트는 다른 식별자 값을 가져야 만합니다. 이 경우 스키마는 하나의 전역 요소 만 선언하기 때문에 전역 적으로 고유해야한다는 것을 의미하지만 일반적으로 범위 지정은 의미가 있습니다. 고전 서점 예를 들어, 한 서가의 모든 서적이 다른 이름을 갖도록하고 다른 서가에서 같은 이름을 사용할 수 있도록 할 수 있습니다. –