¿Cómo vincular XML a XSD usando schemaLocation o noNamespaceSchemaLocation?
xsd-validation xml-validation (1)
Cómo vincular un XSD a un documento XML depende de si el documento XML está usando espacios de nombres o no ...
Sin espacios de nombres
Use
xsi:noNamespaceSchemaLocation
para proporcionar una pista sobre el XSD que se utilizará:
-
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>
Con espacios de nombres
Use
xsi:schemaLocation
para proporcionar una pista sobre el XSD que se utilizará:
-
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>
Encontré algunos consejos para este problema, pero aún así no me ayudó.
Aquí está mi 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>
Aquí está mi archivo XSD:
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns = "http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
(some checks)
</schema>
Mi archivo XSD está ubicado en la misma carpeta que el XML.
¿Cómo vincular estos 2 archivos?