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