“La 'http://www.w3.org/XML/1998/namespace:lang' attribut n'est pas déclaré.”
Parfois, lors de la validation de certains documents XML à l'aide d'un XmlValidatingReader, je reçois l'erreur suivante:
System.Xml.Schema.XmlSchemaValidationException:
"The 'http://www.w3.org/XML/1998/namespace:lang' attribute is not declared."
Le même document parfois réussit. Je ne peux pas comprendre pourquoi.
Mon XSD importe le schéma comme suit:
<xs:schema id="myschemaId"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://mytargetnamespace.com"
xmlns="http://mytargetnamespace.com"
xmlns:mm="http://mytargetnamespace.com"
elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd" />
...
Et dans le document XML je avoir les attributs suivants:
<root xmlns="http://mytargetnamespace.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://mytargetnamespace.com myschema.xsd">
Enfin, la XmlReaderSettings:
const XmlSchemaValidationFlags validationFlags =
XmlSchemaValidationFlags.ProcessInlineSchema |
XmlSchemaValidationFlags.ProcessSchemaLocation |
XmlSchemaValidationFlags.ReportValidationWarnings |
XmlSchemaValidationFlags.AllowXmlAttributes;
//Set the validation settings.
var settings = new XmlReaderSettings
{
ValidationType = ValidationType.Schema,
ValidationFlags = validationFlags,
DtdProcessing = DtdProcessing.Parse
};
settings.ValidationEventHandler += OnValidationEventHandler;
//Create the XmlReader object.
var reader = XmlReader.Create(_xmlFilePath, settings);
//Parse the file.
while (reader.Read()) {}
C'est un exe autonome d'exécution .NET 4.0 sur Windows 2003.
J'ai remarqué qu'il y a un arrêt important lorsque l'on cherche à valider. Pourrait-il être lié? Est-il en essayant de télécharger le réel "xml.xsd schéma" et de ne pas réussir?
OriginalL'auteur roufamatic | 2011-05-24
Vous devez vous connecter pour publier un commentaire.
Parce que beaucoup de Dtd et de XSDs originaire de la W3C, ils ont le problème que beaucoup de gens essaient de les résoudre à partir de leurs serveurs, d'où leur inondé de demandes - des millions et des millions d'entre eux. Ils ont donc commencé blocage "excessive" des demandes.
Voir cette entrée de blog, qui s'applique également à XSDs.
La solution est d'utiliser une copie locale.
OriginalL'auteur lavinio
Je suis assez confiant, j'ai résolu ce problème. J'ai vérifié le Violoneux, et fait voir les demandes de sortir w3c.org pour le fichier xsd. Un peu plus de recherches sont ce lien; remarque n ° 3 semble se rapporter à ma situation. Donc, si, pour quelque raison que ce soit ma machine ne pouvais pas télécharger le fichier XSD, puis l'espace de noms xml est devenu indisponible. Malheureusement, la véritable erreur ("impossible de rejoindre w3c.org" ou ce que vous avez) n'a jamais été signalé.
Retrait de la
schemaLocation
de laxs:import
a fait le tour.OriginalL'auteur roufamatic