What exactly is the difference between XML Schema Document and XML Schema Instance ?
xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Please elaborate.
xsd and xsi Similarities
- Both are XML namespace prefixes, abbreviations for an XML namespace.
- Both are, as are all namespace prefixes, arbitrarily named; other namespace prefix abbreviations
could equally well be used. However, both prefixes are conventional and therefore
recommended. (An also-conventional alternative to
xsdisxs.)
xsd and xsi Differences
- The
xsd(orxs) prefix referring to the Schema Namespace (http://www.w3.org/2001/XMLSchema) is used in XML Schemas (XSDs) for the elements, attributes, and types of the W3C XML Schema Recommendation itself. (This is possible because XML Schema is itself XML.) The
xsiprefix referring to the The Schema Instance Namespacehttp://www.w3.org/2001/XMLSchema-instanceis used in XML document instances for several special attributes defined by the XML Schema Recommendation:xsi:typeallows an XML instance to associate element type information directly rather than through an XSD. See How to restrict the value of an XML element using xsi:type in XSD?xsi:nilallows an empty element to be considered to be valid when the XSD might not otherwise have allowed it.xsi:schemaLocationandxsi:noNamespaceSchemaLocationprovide hints to the XML processor as to how to associate an XSD with an XML document. Usexsi:schemaLocationwhen there is a namespace; usexsi:noNamespaceSchemaLocationwhen there is no namespace.
See Also
http://www.w3.org/2001/XMLSchema
The Simple Version : This is the namespace used within an XML Schema (XSD). An XML schema is used to describe what's valid within an XML instance document.
The Less Simple Version : This is the namespace of an XML Schema that describes the structure of an XML Schema. In other words a schema that describes itself.
An XML Schema (XSD) must be written using the types defined within this schema.
For Example.
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MyElement" type="xs:string" />
</xs:schema>
http://www.w3.org/2001/XMLSchema-instance
This is a namespace used within XML Instance documents to provide additional data to the XML Parser that is processing it. It describes the attributes xsi:schemalocation, xsi:noSchemalocation, xsi:type and xsi:nil which the XML parser can use to assist it with validation.
For Example.
<MyElement xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="MySchema.xsd">
string
</MyElement>
来源:https://stackoverflow.com/questions/41035128/what-is-the-difference-between-xsd-and-xsi