열 id 특성을 통해 행 참조 열이있는 스키마를 만들려고합니다.XML 스키마의 ref 사용
이<?xml version="1.0" encoding="ISO-8859-1" ?>
<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<rows>
<row>
<column id="123" />
<column id="124" />
</row>
<row>
<column id="123" />
<column id="124" />
</row>
</rows>
<columns>
<column id="123">
<name>Apple</name>
</column>
<column id="124">
<name>Banana</name>
</column>
</columns>
</mapping>
내 XSD는 다음과 같습니다 열이 난 행 요소에서 열 ID를 참조 할 수 있도록 나는 다음과 같은 XML 스키마를 만들려면 어떻게해야합니까
을 찾을 수 없기 때문에 다음 XML 및 XSD 유효성을 검사하지 않습니다 이하지만 그것이 열 참조 찾을 수 없습니다 ... 작동하지 않습니다 당신의 스키마가 몇 가지 사소한 문제가<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="mapping">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="rows" type="Rows" minOccurs="0" maxOccurs="1"/>
<xsd:element name="columns" type="Columns" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="PKeyColumn">
<xsd:selector xpath="columns/column"/>
<xsd:field xpath="@id"/>
</xsd:key>
<xsd:keyref name="FKeyColumn" refer="PKeyColumn">
<xsd:selector xpath="rows/row/column"/>
<xsd:field xpath="@id"/>
</xsd:keyref>
</xsd:element>
<xsd:complexType name="Row">
<xsd:sequence>
<xsd:element ref="column">
<xsd:complexType>
<xsd:attribute name="id" use="required" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Rows">
<xsd:sequence>
<xsd:element name="row" type="Row" minOccurs="1" maxOccurs="unbounded">
<xsd:unique name="UKeyColumn">
<xsd:selector xpath="column"/>
<xsd:field xpath="@id"/>
</xsd:unique>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Columns">
<xsd:sequence>
<xsd:element name="column" type="Column" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="Column">
<xsd:sequence>
<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:integer" />
</xsd:complexType>
</xsd:schema>
지금까지 작성한 스키마를 표시 할 수 있습니까? –
원래 질문에 추가했습니다 – user3319681