XSD: Comment importer un type de données d'un autre XSD?
-
01-10-2019 - |
Question
J'ai le début suivant d'un XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:no="http://www.sychophants.com">
<xs:import namespace="http://www.sychophants.com" schemaLocation="current_obs.xsd"/>
... puis d'autres définitions ...
<xs:element name="noInDatPletd" ref="no:in_dat"/>
Où in_dat existe dans un schéma écrit par une autre organisation. Ce que je veux essentiellement à nous faire créer un schéma qui contiendra un élément du type in_dat qui est défini dans XSD de l'autre ogranization.
Suis-je même près d'avoir ce correct? Je suis assez nouveau pour XML.
Je continue à obtenir
http://location_of_my_xsd/temp.xsd:79:9: Invalid: Undefined element
no{http://www.sychophants.com}:in_dat referenced from content model
de http://www.w3.org/2001/03/webdata/ XSV , qui est un validateur de schéma.
Merci.
modifier: Merci à vous deux qui a répondu. Le problème semble être que l'autre organisation n'a pas défini un attribut targetNamespace dans leur schéma. Le résultat est que je ne peux pas importer l'espace de noms dans mon schéma, ce qui signifie que je ne peux pas utiliser le type fourni.
Je devais copier / coller le code, ce qui est ce que je voulais éviter ... mais vous ne pouvez pas avoir tout ce que vous voulez, je suppose.
La solution
Je ne vois qu'une erreur évidente: vous utilisez ref="no:in_dat"
pour le référencement d'un type. Vous devez utiliser il type="no:in_dat"
. ref
renverrait un élément global (et ne doit pas être utilisé en même temps que la
attribut name
).
En dehors de cela, avez-vous passé le schéma externe au validateur à côté de votre propre schéma? Il est bien sûr nécessaire pour valider votre schéma.
Autres conseils
En plus de changer ref = type = , votre définition de schéma semble correct. Du message d'erreur, je suppose que le schéma validateur ne peut pas charger le current_obs.xsd de la schemaLocation prévu, ce qui serait logique. Le validateur n'aurait aucun moyen de vérifier s'il y a un type appelé in_dat car il ne pouvait pas importer le schéma.