Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Add schemaLocation attribute to an XML document

Tags:

c#

xml

xsd

Please view following XML namespace and schemaLocation.

<agr:ABWInvoice 
  xsi:schemaLocation = "
    http://services.agresso.com/schema/ABWInvoice/2011/11/14 
    http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:agrlib = "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14"
  xmlns:agr = "http://services.agresso.com/schema/ABWInvoice/2011/11/14"
>

</agr:ABWInvoice>

I have added namespaces in following way, which seems working fine:

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ns.Add("agrlib", "http://services.agresso.com/schema/ABWSchemaLib/2011/11/14");
ns.Add("agr", "http://services.agresso.com/schema/ABWInvoice/2011/11/14");

But, how to add following schemalocation? Any ideas?

xsi:schemaLocation="http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd"
like image 342
mrd Avatar asked Dec 08 '22 18:12

mrd


2 Answers

xsi:schemaLocation="..."

is not a namespace declaration: it's an attribute (whose value happens to be a namespace, but never mind that). So you would add it with a method that sets an attribute value. I'm not familiar with the C# XML API, but it's probably something like this:

XmlElement.SetAttributeValue (localname, prefix, namespace, value)

localname should be "schemaLocation"
prefix = "xsi"
namespace = "http://www.w3.org/2001/XMLSchema-instance"
value = "your schema location"

like image 157
Mike Sokolov Avatar answered Dec 11 '22 09:12

Mike Sokolov


The reply of Mike lead me to get following answer:

    [XmlAttributeAttribute("schemaLocation", AttributeName = "schemaLocation", 
    Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
    public string SchemaLocation = "http://services.agresso.com/schema/ABWInvoice/2011/11/14 http://services.agresso.com/schema/ABWInvoice/2011/11/14/ABWInvoice.xsd";
like image 27
mrd Avatar answered Dec 11 '22 07:12

mrd