¿Cómo vincular XML a XSD usando SchemaLocation o noNamespaceSchemaLocation?
Encontré algunos consejos para este problema, pero todavía no me ayudaron.
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 se encuentra en la misma carpeta que el XML.
¿Cómo vincular estos 2 archivos?
Aceptado
Cómo vincular un XSD a un documento XML depende de si el documento XML utiliza espacios de nombres o no...
Sin espacios de nombres
Úselo xsi:noNamespaceSchemaLocation
para proporcionar una pista sobre el XSD que se utilizará:
documento.xml :
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="example.xsd"> <!-- ... --> </root>
ejemplo.xsd :
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema>
Con espacios de nombres
Úselo xsi:schemaLocation
para proporcionar una pista sobre el XSD que se utilizará:
documento.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>
ejemplo-ns.xsd :
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/ns"> <xsd:element name="root"> <!-- ... --> </xsd:element> </xsd:schema>