XSD avec les importations et les espaces de noms
Salut, je suis en train d'essayer d'obtenir mon esprit autour de XSDs, XML et les espaces de noms, mais je ne peux pas faire les choses à travailler comme je voudrais.
J'ai un XSD qui, pour le moment, commence comme ceci:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com">
<xs:import namespace="http://www.example.com" schemaLocation="Include.xsd" />
Comme vous pouvez le voir, il les importations d'un autre fichier xsd, qui commence comme ceci:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
targetNamespace="http://www.example.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com">
Puis j'ai quelques documents xml basé sur ce schéma:
<foobar>
<whatever>....
Fondamentalement, je n'aime pas ce que les espaces de noms, je veux juste la balle au travail. Auparavant, je n'étais pas à l'aide de tout espace, mais il semble que je dois utiliser pour importer un fichier XSD dans un autre. Ce que je ne veux pas faire est de fournir des préfixes de tous les éléments dans mes documents xml.
Afin de parvenir à cela, la combinaison de valeurs dont j'ai besoin pour les différents attributs (targetNamespace, espace de noms, xmlns, elementFormDefault etc) dans le fichier XSD et XML documents?
Actuellement, tous les éléments définis lors de l'importation du document XSD exiger la qualification d'espaces de nommage dans XML.
- Est-ce que votre document de réellement commencer avec <xml> meaninging vous avez un 'xml' élément défini dans l'un des schémas, ou voulez-vous dire le document commence par <?xml ... />?
- Je parlais de la racine a été xml - je l'ai fixée à éviter toute confusion.
Vous devez vous connecter pour publier un commentaire.
Si vous n'utilisez pas les espaces de noms ou des schémas de partager les mêmes espaces de noms, vous serait beaucoup mieux d'utiliser xs:include plutôt que xs:import. Un schéma peut inclure le schéma B si B a le même espace de noms que A ou n'a pas d'espace de noms déclarés (si ce dernier est le cas, B 'adopte' l'englobant de l'espace de noms lorsqu'ils sont inclus). Alors... quelque chose comme:
Je pense que vous devez définir votre elementFormDefault de "non qualifié", si vous voulez éviter les préfixes sur vos éléments XML. Le reste devrait être bon, je pense que - l'espace de noms est la même entre votre maître et votre importés XSD - c'est très bien. Vous spécifiez la xmlns= sans préfixe - c'est très bien. Vous devriez être bon d'aller.
Marc