Y compris / importation locale des schémas qui ont des espaces de noms
Ici est un fichier de schéma, midi.xsd
qui définit un type, note
, utilisé pour stocker des notes MIDI valeurs:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="note">
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="127"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Voici un autre fichier de schéma, octaves.xsd
qui utilise midi.xsd
pour aider à définir la mise en page doit être exécutée sur un fichier XML contenant des données sur les octaves:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="midi.xsd"/>
<xs:element name="octaves">
<xs:complexType>
<xs:sequence>
<xs:element name="octave">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="midi">
<xs:complexType>
<xs:sequence>
<xs:element name="value" type="xs:integer" />
<xs:element name="from" type="note" />
<xs:element name="to" type="note" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="index" type="xs:integer" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Ce qui est bien, et fonctionne exactement comme vous le voulez, sauf que j'ai une autre exigence: je veux note
être dans son propre espace de noms, midi
, de sorte que
<xs:element name="from" type="note" />
devient
<xs:element name="from" type="midi:note" />
Essayez comme je pourrais, je ne peux pas obtenir que cela fonctionne. Mes tentatives ont inclus l'utilisation de la targetNamespace
attribut dans divers endroits, les import
élément, et l'utilisation libérale de xmlns:midi="..."
, mais en vain. J'avais post un de ces tentatives ici, ce n'était pas si grincer des dents dignes.
Pourrait une sorte d'âme de me pointer dans la bonne direction? Je suis sûr que le problème est à voir avec le fait que midi.xsd
est un fichier local; il n'a jamais été et ne le sera jamais, hébergé sur un serveur web.
OriginalL'auteur JimmidyJoo | 2012-03-18
Vous devez vous connecter pour publier un commentaire.
Changement
midi.xsd
:Et puis changer
octaves.xsd
- à-dire:Notez l'utilisation de
xs:import
plutôt que<xs:include>
Les deux sont très différents, vous utilisezimport
pour amener dans d'autres espaces de noms, etinclude
en ligne l'inclusion d'autres fichiers de schéma dans la actuel espace de noms.Note également que
/my/midi/namespace
peut être tout ce que vous voulez, c'est l'arbitraire d'un identificateur.Non, pas pertinente.
OriginalL'auteur skaffman