12
votes

XMLNS: XSI = "http://www.w3.org/2001/XMLSCHEMA-Instance" Un cas particulier dans XML?

Lorsque nous utilisons un espace de noms, nous devrions également indiquer où son XSD associé est situé à, comme on peut le voir dans l'exemple suivant: xxx pré>

ici, nous avons indiqué que Artist.xsd Devrait être utilisé pour valider le http://www.webucator.com/artist code> Espace de noms. Cependant, nous utilisons également le http://xmlschema-Instance code> Espace de noms, mais nous n'avons pas précisé où son XSD est situé à. Comment les analyseurs XML savent comment gérer cet espace de noms? P>

Mise à jour (en réponse au premier commentateur) strong> p>

donc, pouvons-nous au lieu d'utiliser:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:ehcache="http://www.springmodules.org/schema/ehcache">
...
</beans>


0 commentaires

4 Réponses :


2
votes

Il n'y a aucune obligation de dire où se trouve le schéma. Vous pouvez le faire si vous le souhaitez, mais vous n'êtes pas obligé.

Dans cet exemple, toutes les plates-formes sont susceptibles de comprendre où les schémas pour XSI , xml , xsd et savon sont tous situés.


Edit: Comme je l'ai dit, toutes les plates-formes sont susceptibles de savoir où sont les schémas pour ces espaces de noms bien connus. Très probablement, ils ont tous des copies des schémas. J'utilise Visual Studio et conserve des copies de ces schémas en ligne et les fait référence si nécessaire.


0 commentaires

2
votes

Il y a quatre déclarations intégrées pour les schémas XML; Type , NIL , SCHEMALOPOCATION et NONAMESPACESCHEMECOCATION AS quel que soit "présent dans tous les schémas par définition". Vous pouvez en lire à leur sujet dans le Recommandation de schéma XML .


4 commentaires

Où se trouve le fichier XSD pour le w3.org/2001/XMLSchema-Instance Espace de noms situé ? Comment les analyses XML savent-ils où se trouve-t-il? Où est-il précisé que les analyseurs XML doivent connaître cet emplacement par défaut?


Je ne sais pas où il se trouve. En ce qui concerne la manière dont divers analyseurs résolvent des schémas pour le schéma, je serais très surpris s'ils résolvent ceux lors de l'exécution en recherchant un XSD sur Internet comme je pense que vous envisagez.


Je sais que les analyseurs ne le localisent pas d'Internet. Cependant, je souhaite connaître une déclaration officielle et formelle sur la raison pour laquelle dans un document XML, il est correct d'omettre l'URL de l'espace de noms XMLSCHEMA-instance et probablement un avis de mise en œuvre que les analyseurs peuvent ou doivent utiliser une version locale mises en cache de son XSD pour valider les documents XML.


Il n'y a pas de vrai fichier XSD pour w3.org/2001/XMLSchema-Instance - Le fichier w3.org/2001/xmlschema-instance.xsd est juste un espace réservé. C'est juste connu automatiquement par les analyseurs XML.



13
votes

Comment les analyseurs XML savent comment gérer cet espace de noms?

Ils ne le font pas, sauf quand ils le font. L'idée de base est que la chaîne ' http://www.w3.org/2001/xmlschema-Instance 'fonctionne comme un cookie magique. Soit le logiciel de traitement a été programmé pour la reconnaître et agira donc sur la base de ce que cela signifie, ou cela n'a pas.

Ainsi, avec le simple fait de reconnaître vient également la "connaissance" de ce qu'elle représente: Un" espace de noms "qui définit quatre attributs (" Type "," NIL "," SCHEMALOCATION "et" NONAMESPACESCHEMÉXOCATION ") avec Signification prédéfinie .

En d'autres termes, si vous "connaissez" ce que la chaîne ' http: //www.w3 .org / 2001 / xmlschema-instance '"signifie", alors vous savez également automatiquement ce que Un attribut nommé XSI: Schemalocation " signifie ": que cela pointe vers des documents de schéma codés dans le formalisme" W3C XML Schema ".

Cela va au-delà de ce que le espaces de noms XML Rec assure réellement (qui est seulement un peu de handwaving sur les "noms universels" ou de ce que rien). Une convention est au travail ici, que la syntaxe de la noms de noms (en utilisant des noms colonifiés) a été déployée sur une compréhension sémantique: "Où trouver le schéma, dans le formalisme des schémas XML de W3C XML, pour cette instance de document. " Tout se charge de la compréhension antérieure de cette chaîne de cookie magique.

Vous pouvez avoir l'impression qu'un espace de noms doit avoir un schéma et une machine traitée une à cela, et uniquement dans le formalisme de schémas XML W3C XML à démarrer. Aucun de ceux-ci n'est nécessairement vrai. Les autres formalismes de schéma existent (SGML / XML DTDS, Relax-NG, qui, contrairement aux schemas de W3C XML, sont normes internationales ); Une définition d'espace de noms ne doit pas nécessairement être lisible par la machine (elle pourrait être la prose, comme en fait, c'est pour le ' http://www.w3.org/2001/xmlschema-Instance '' '' '' '' '' '' '' '' '' ''); et un espace de noms ne doit pas nécessairement être défini formellement du tout, car toute chaîne d'espace de noms est garantie est de fonctionner comme un marqueur de désambiguement.


0 commentaires

0
votes

Si vous regardez au contenu de: http://www.w3.org/2001/ Xmlschema-instance Vous avez constaté qu'il y avait du texte: xxx

parce que xmlns = "http://www.w3.org/1999/xhtml" Vous voyez ci-dessus lien sous forme de document HTML.

Selon http://www.w3.org/tr/xmlschema-1/#schema-loc (contrainte de représentation du schéma: Schéma STRÊT STRATUITE STRATUITÉ) Les processeurs de schéma peuvent mettre en œuvre une combinaison des stratégies suivantes, Dans n'importe quel ordre :

  • tentative de résoudre le nom du pas de noms pour localiser une telle ressource .

    donc http://www.w3.org/2001/xmlschema-Instance point à lui-même (oui, récursion !!).

    Voir similaire Réponse: Où est le XSD Fichier pour "http://www.w3.org/2001/xmlschema-Instance"?

    PS . Tout processeur XML spécialisé peut traiter http://www.w3.org/2001/xmlschema-Instance comme le cas connu sans télécharger cette définition (et la plupart du font).

    pps . Sémantique de http://www.w3.org/2001/xmlschema-Instance défini par SCHEMA XML standard http://www.w3.org/tr/xmlschema-1/


0 commentaires