[0]
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:root="http://www.xmlValidation.com/root"
xsi:schemaLocation="./schema_strict.xsd">
Cette ligne est en elle-m�me d�j� non valide. xsi est un namespace qu'on nomme parfois un namespace dit bien-connu. Et �a veut dire qu'on n'a pas besoin de fournir explicitement un sch�ma pour xsi et le moteur de validation pourrait valider des infos relat�s � ce namespace. Mais, ce n'est pas forc�, et pour certaines impl�mentataions, le moteur peut ne pas le faire: donc, un peu de d�pendant d'impl�mentation s'introduit par l�.
La syntaxe en question est ceci
xsi:schemaLocation="./schema_strict.xsd"
ce qui est fausse. La syntaxe propre est ceci
xsi:schemaLocation="http://www/xmlValidation.com/root ./schema_strict.xsd"
si on pense il s'agit que le seul namespace explicitement montr� soit en question.
msxml2 version 6.0 ou d'autres intervient pro-activement en validant aussi le namespace bien-connu; par cons�quence, il refuse de valider totalement la combinaison xml et xsd, d�j� � ce niveaux.
libxml2, non: il va laisser passer, il me semble.
[1]
Il faut absolument mettre le facet ? dans le pattern. Ce qui est fourni est faux.
1 2
| <!-- xs:pattern value="\d\p{Lu}\p{Lu}\p{Lu}\d\d\d\p{Lu}\p{Lu}(\p{Lu}|\d|)"/ -->
<xs:pattern value="\d\p{Lu}\p{Lu}\p{Lu}\d\d\d\p{Lu}\p{Lu}(\p{Lu}|\d)?"/> |
msxml2 v6 et libxml2 ont tout deux raison.
[2]
Juste une remarque suppl�mentaire pour ceux qui se sentissent confus si l'�l�ment root est dans un namespace ou dans un namespace dit nul. La ligne peut sentir royalement confus. L'�l�ment root est sans namespace (ou dans un namespace nul) et c'est pour �a, dans le sch�ma, on ne met pas un @targetNamespace et c'est correctement fait.
Pourtant, on a la main libre aussi de d�clarer un pr�fixe root par xmlns:root. On peut le servit un jour ou dans un xml plus complet mais dans le cas montr� il n'intervient aucunement nul part - et c'est permit aussi, si on veut.
Voil� !
Partager