2009-06-05 13 views
2

L'outil xsd.exe fourni avec Visual Studio génère-t-il l'attribut SchemaLocation (dans xs: import) lors de la génération de XSD à partir d'objets C# simples?L'outil de définition de schéma XML ne génère pas SchemaLocation

Je trouve que mes XSD qui ont été générés ne sont pas valables parce que les xs: import importera un espace de noms et ne pas fournir la valeur schemaLocation par rapport invite le dessous

schéma importé pour l'espace de noms « urn: Company- event-namespace 'n'a pas été résolu.

Répondre

0

Comme vous l'avez constaté, il ne génère pas cet attribut. Cela peut avoir à voir avec le fait qu'il n'utiliserait pas cet attribut si l'attribut était présent dans un schéma qu'il lisait.

1

Comme indiqué dans this anwser, vous pouvez ajouter manuellement un attribut. Étant donné que l'outil xsd génère une classe partielle, vous pouvez ajouter cet attribut dans un fichier séparé, vous n'avez donc pas besoin de modifier un fichier généré.

public partial class Gpx 
{ 
    [XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)] 
    public string xsiSchemaLocation = "http://www.topografix.com/GPX/1/1 " + 
           "http://www.topografix.com/GPX/1/1/gpx.xsd"; 
}