After the release of our Azure Function to Apply XML Validation (Basic), it is now time for another Azure Function under the same context: an Azure Function to Apply XML Validation (Intermedium).
You may be wondering why a new Azure Function is required to archive the same? And why not only one with all capabilities?
Both are good questions that I will be happy to respond to. First of all, in my last blog post, I mentioned that, in the next few days, we will be releasing two additional versions of this function with more functionalities/capabilities. And to answer the second question, the main reason why I decided to do 3 different versions is performance. The basic function has fewer capabilities, but it will have better performance. Of course, the advanced function will have all the capabilities, but it will have a small overhead in the overall performance.
The previous Azure Function is great for basic validations, similar to what we can archive using the default out-of-the-box capabilities inside:
- Logic Apps Standard;
- Logic Apps Consumption using the Integration Account;
- Or in API Management
Of course, the basic XML Validation Function it is a good approach to replace the dependency of the Integration Account in Logic App Consumption.
But all of them have a huge limitation! None of those services allow a chain of XML Schemas!
What do you mean by a chain of XML Schemas?
XML Schema provides mechanisms to include or import other XML Schema documents, enabling the reuse and extension of schema definitions across multiple files. This capability is essential for managing complex schemas in a modular and maintainable manner.
- Include: The
includeelement is used when you want to incorporate definitions from another schema that is in the same target namespace. By using
include, you can split your schema definitions into separate, smaller files for better manageability and readability while treating them as part of a single schema during validation. The included schema essentially becomes a subset of the including schema, allowing for the extension or redefinition of elements and types within the same namespace.
- Import: The
importelement is used to incorporate definitions from another schema that is in a different target namespace or from no namespace into the current schema. This allows you to reference and use types and elements defined in an external schema within your current schema document. Importing is crucial when you need to integrate or reference types defined in a completely separate schema, possibly managed by a different organization or standard body.
import mechanisms facilitate the construction of complex XML schemas from modular components, promoting reuse and simplifying the management of schema definitions. They enable schema designers to build upon existing standards and to organize their schema definitions logically and efficiently.
This a common feature present in many Enterprise XML Schemas definitions. EDI or RosettaNet Schemas may have 2 or more schemas that define the overall structures of the messages.
Apply XML Validation (Intermedium)
What does this Azure Function do?
This Azure Function allows you to perform XML validations against an XML Schema, including first-level chain support for XML Schemas. That means that it will take into consideration all the import schemas of the main XML Schema
To trigger this function, you need to:
- In the Body, the XML payload that you want to be validated.
- You should specify the following mandatory headers:
- Content-Type as text/xml (or application/xml).
- SchemaFileName with the name of the XML Schema (XSD) file present in the storage account.
The response will be a:
- 200 OK – Validation successful. If it’s a valid message.
- Or 400 Bad Request with a list of errors if there is something invalid.
Notice that by default, if you send a message to be validated against a schema that doesn’t have the same target namespace and root node, the response will be an OK. This function also validates that type of message, so if you send a message that doesn’t correspond to that schema, you will get a 400 Bad Request.
Where can I download it?
You can download the complete Azure Functions source code here:
Hope you find this helpful! So, if you liked the content or found it useful and want to help me write more, you can buy (or help me buy) my son a Star Wars Lego!
Thanks to my team member Luís Rigueira for helping me realize and implement this idea.