På grund af legacy systemer kan man være ramt af begrænsinger, når man forsøger at kommunikere indimellem systemerne. Manglende muligheder for at udstille funktionalitet gennem services, kan besværliggøre vedligeholdelse og sikring mod 'breaking changes'. Får man svar fra et andet system gennem almindelig xml uden kontrol af struktur og type, kan man sørge for xml strukturen har et konsistent udseende. Hvis man forestiller sig, man også kan få xml schema'et som en del af svaret, kan man med følgende kode validere xml response med det tilhørende xml schema. Forudsat at xml strukturen har følgende faste grundstruktur (i koden returnerer GetCompleteObjectData() denne struktur med data):
'<?xml version='1.0' encoding='utf-8'?><response><skema>...</skema><data>...</data></response>'
kan følgende validering benyttes.

/// <summary>
/// Validerer xml struktur mod et xml skema.
/// </summary>
/// <returns>Sand eller falsk.</returns>
public bool ValidateResponse() {
    try {
        var response = GetCompleteObjectData();
        using (XmlReader reader = XmlReader.Create(new StringReader(response))) {
            //Henter schema data.
            var xDoc = XDocument.Load(reader);
            var schema = xDoc.Descendants("response").Select(
                s => s.Element("skema").Nodes().Single().ToString());
 
            //Henter objekt data.
            var person = xDoc.Descendants("response").Select(
                p => p.Element("data").Nodes().Single().ToString());
 
            var settings = new XmlReaderSettings();
            settings.Schemas.Add(null, 
                    XmlReader.Create(new StringReader(schema.SingleOrDefault())));
            settings.ValidationType = ValidationType.Schema;
 
            var document = new XmlDocument();
            document.Load(XmlReader.Create(new StringReader(person.SingleOrDefault())));
            var rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
            while (rdr.Read()) { }
            return true;
        }
    } catch (Exception ex) {
        //Log error
        var errorMessage = ex.Message;
    }
    return false;
}


Dette eksempel forudsætter, at der bliver sendt et enkelt fuldstændigt skema med. Er der multiple skemaer inkluderet indimellem, kan nedenstående kode benyttes. Den er ligeledes kompatibelt med enkelt skema:

/// <summary>
/// Validerer xml struktur mod et xml skema.
/// </summary>
/// <returns>Sand eller falsk.</returns>
public bool ValidateResponse() {
    try {
        var response = GetCompleteObjectData();
        using (XmlReader reader = XmlReader.Create(new StringReader(response))) {
            //Henter schema data.
            var xDoc = XDocument.Load(reader);
            var schemaCollection = xDoc.Element("response").Element("skema").Elements()
                .Select(s => new { Schema = s.ToString()}).ToList();
            
            //Henter objekt data.
            var person = xDoc.Descendants("response").Select(
                p => p.Element("data").Nodes().Single().ToString());
 
            var settings = new XmlReaderSettings();
            foreach(var s in schemaCollection) {
                settings.Schemas.Add(null, 
                    XmlReader.Create(new StringReader(s.Schema)));
            }
            settings.ValidationType = ValidationType.Schema;
 
            var document = new XmlDocument();
            document.Load(XmlReader.Create(new StringReader(person.SingleOrDefault())));
            var rdr = XmlReader.Create(new StringReader(document.InnerXml), settings);
            while (rdr.Read()) { }
            return true;
        }
    } catch (Exception ex) {
        //Log error
        var errorMessage = ex.Message;
    }
    return false;
}


Dynamisk validering af schema mod eksisterende entitet under udarbejdelse...