Я разделяю строки 2 и 12, которые ссылаются на "http://www.w3.org/2001/XMLSchema-instance", так что теперь он проверяет:
thufir@dur:~/xml/ship$
thufir@dur:~/xml/ship$ xmllint --noout --schema shiporder.xsd shiporder.xml
shiporder.xml validates
thufir@dur:~/xml/ship$
thufir@dur:~/xml/ship$ ls
shiporder.xml shiporder.xsd xsi.xsd
thufir@dur:~/xml/ship$
thufir@dur:~/xml/ship$ cat xsi.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:import schemaLocation="shiporder.xsd"/>
<xs:attribute name="noNamespaceSchemaLocation" type="xs:NCName"/>
</xs:schema>
thufir@dur:~/xml/ship$
thufir@dur:~/xml/ship$ cat shiporder.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element maxOccurs="unbounded" ref="item"/>
</xs:sequence>
<xs:attribute name="orderid" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:NCName"/>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element minOccurs="0" ref="note"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:integer"/>
<xs:element name="price" type="xs:decimal"/>
</xs:schema>
thufir@dur:~/xml/ship$
Но почему? И, разве я не мог сгенерировать xsd
, чтобы либо не было такой ссылки, либо чтобы ссылка была, ну, в общем, правильно ?