게시 된 XSD가 불완전하기 때문에 설정이 무엇인지 밝히기가 어렵습니다. 그래서 XML을 기반으로 두 가지 옵션을 설명 할 것입니다. 하나는 특정 사건을 설명해야합니다.
XSD1 :
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema xmlns:po="http://objectshop.com/ns/po" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://objectshop.com/ns/po" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:import schemaLocation="XSD2.xsd" />
<xsd:element name="purchaseOrder">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="shipTo" />
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
XSD2 :
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="shipTo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
<xsd:element name="city" type="xsd:string" />
<xsd:element name="state" type="xsd:string" />
<xsd:element name="postalcode" type="xsd:unsignedShort" />
</xsd:sequence>
<xsd:attribute name="country" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
나는 XML에서 시작하고에서 XSD가 발생하는 경우
, 이것은 당신이 일반적으로 얻을 것이 무엇인가
이 두 XSD는 게시 된 XML의 유효성을 검사합니다. 이들이 보여주는 것은 네임 스페이스에없는 콘텐츠를 참조하는 방법입니다. 이것이 내가 당신의 문제에 관한 것이라고 생각합니다.
그러나 이러한 XML을 하나의 XSD 파일로 기술 할 수도 있습니다. "말하기"는 문서 요소 만 자격이있는 경우입니다 (귀하의 경우 purchaseOrder
). 그 외 모든 것은 "부적합"입니다. 기본적으로 스키마를 설정하려면 elementFormDefault="unqualified"
을 사용하여 설정해야합니다.
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<xsd:schema xmlns:po="http://objectshop.com/ns/po" attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://objectshop.com/ns/po" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="purchaseOrder" type="po:PurchaseOrderType"/>
<xsd:complexType name="PurchaseOrderType">
<xsd:sequence>
<xsd:element name="shipTo" type="po:Address" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="orderDate" type="xsd:date" use="required"/>
</xsd:complexType>
<xsd:complexType name="Address">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="street" type="xsd:string"/>
<xsd:element name="city" type="xsd:string"/>
<xsd:element name="state" type="xsd:string"/>
<xsd:element name="postalcode" type="xsd:unsignedShort"/>
</xsd:sequence>
<xsd:attribute name="country" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:schema>
또는 각 요소/속성에 대해 양식 속성을 설정하여 스키마 수준 기본 설정을 무시할 수 있습니다. 아래에 예가 나와 있습니다 (설명을위한 것으로 XML과 일치하지는 않습니다).
<xsd:element name="name" type="xsd:string" form="qualified"/>
<xsd:attribute name="country" type="xsd:string" use="required" form="qualified"/>
이 경우, XML은 다음과 같아야합니다
당신은 로컬로 다스 려하기 전에 XSD 요소를 정의 할 필요가
<po:purchaseOrder orderDate="2001-01-01" xmlns:po="http://objectshop.com/ns/po" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://objectshop.com/ns/po po.xsd ">
<shipTo po:country="USA">
<po:name>Alice Smith</po:name>
<street>123 Maple Street</street>
<city>Cambridge</city>
<state>MA</state>
<postalcode>12345</postalcode>
</shipTo>
</po:purchaseOrder>
. 나는 당신이 고심하고있는 것을 이해하지 못합니다. – IndoKnight