layout | group | subgroup | title | menu_title | menu_order | version | github_link | redirect_from |
---|---|---|---|---|---|---|---|---|
default |
extension-dev-guide |
03_Build |
URN schema validation |
URN schema validation |
5000 |
2.0 |
extension-dev-guide/build/XSD-XML-validation.md |
/guides/v2.0/extension-dev-guide/XSD-XML-validation.html |
Each Magento module can contain XSD files for XML validation.
Magento uses Uniform Resource Names (URNs) to reference XML schema declarations.
Magento supported URNs begin with urn:magento
. Magento supports two XSD reference types:
- Module XSD
- Framework XSD
You cannot change the XSD for any XML files provided with the Magento application.
The syntax for the module XSD is a colon separated declaration. An example follows:
urn:magento:module:Magento_Flow:flows/content.xsd
where
urn:magento
is the URN identifiermodule
is the reference type identifierMagento_Flow
is the name of the module. This must be exactly the same as the module specified by ComponentRegistrar in the registration.php file.flows/content.xsd
is the relative path to the module’s directory.
The syntax for the framework XSD is a colon separated declaration. An example follows:
urn:magento:framework:Api/etc/extension_attributes.xsd
where
urn:magento
is the URN identifierframework
is the reference type identifier. You can also add additional framework libraries as separate components withframework-<sub-name>
Api/etc/extension_attributes.xsd
is the relative path to the framework’s directory.
Use URN notation to reference schema from inside a XSD document:
{% highlight XML %}
<xs:redefine schemaLocation="urn:magento:framework:Config/etc/view.xsd">
{% endhighlight %}
The URN resolution is invoked automatically by the libxml engine. Register the URN resolver by using libxml_set_external_entity_loader
:
{% highlight XML %} libxml_set_external_entity_loader(['Magento\Framework\Config\Dom\UrnResolver', 'registerEntityLoader']); {% endhighlight %}
The relative path to other XSDs cannot be used from inside the XSD file, because the entity loader fails to resolve the relative path.