web-dev-qa-db-fra.com

Comment utiliser le schéma sur la machine locale dans le document XML

J'ai une connaissance limitée des fichiers XML/schéma.

Cela devrait donc être une question assez simple. Comment spécifiez-vous un fichier local pour la schémax?

<?xml version="1.0"?>

<note
  xmlns="http://www.w3schools.com"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.w3schools.com note.xsd">
  ...
</note>

Il s'agit d'un échantillon de www.w3.org et la partie qui spécifie le schéma est en schéma. J'ai essayé de regarder la documentation, mais comment pouvez-vous spécifier un fichier local?

Quelque chose comme

xsi:schemaLocation="../relativepath/schemafolder not.xsd">

Merci

24
grobartn

schemaLocation doit contenir deux valeurs séparées par WhitSpace: l'URI de l'espace de noms (cela ne change pas) et l'URL de schéma.

Donc, dans votre cas

 xsi:schemaLocation="http://www.w3schools.com ../relativepath/schemafolder/note.xsd">

Ne vous laissez pas berner par l'espace de noms URI étant une URL HTTP apparemment valide, ce n'est qu'une des petites folies XML XML inventées. :)

En fait, vous pouvez spécifier des schémas pour plusieurs espaces de noms dans un schemaLocation:

xsi:schemaLocation="namespace1 schemaurl1 namespace2 schemaurl2 ..."

(Je vous conseille également d'utiliser des chemins relatifs avec soin: Bien qu'ils soient extrêmement utiles lorsque vous déplacez vos fichiers, tout en validant le même code (ou outil), lorsque vous déployez votre code de validation dans une application, le "répertoire de travail "Ce n'est peut-être pas ce que vous attendez. Cela ne veut pas dire que vous ne devriez pas utiliser des chemins relatifs, juste pour être conscient de cela lorsque vous obtenez une exception étrange à la recherche du schéma introuvable.)

25
biziclop