如何使用schemaLocation或noNamespaceSchemaLocation将XML链接到XSD?
我发现这个问题的一些提示,但仍然没有帮助我。
这是我的XML
<?xml version="1.0" encoding="UTF-8"?> <work xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.w3.org/2001/XMLSchema-instance" tns:schemaLocation="myXSDSchema.xsd"> <tns:Objects> <tns:Object Name=":" Location=":"> </tns:Object> </tns:Objects> </work>
这是我的XSD文件:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns = "http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> (some checks) </schema>
我的XSD文件与XML位于同一个文件夹中。
如何链接这两个文件?
如何将XSD链接到XML文档取决于XML文档是否使用名称空间…
没有名称空间
使用xsi:noNamespaceSchemaLocation
提供有关要使用的XSD的提示:
-
XML
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example.xsd"> <!-- ... --> </root>
-
XSD
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema>
用命名空间
使用xsi:schemaLocation
来提供有关要使用的XSD的提示:
-
XML
<ns:root xmlns:ns="http://example.com/ns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://example.com/ns example-ns.xsd"> <!-- ... --> </ns:root>
-
XSD
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ns"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema>