This is a beta release of documentation for Magento 2.4, published for previewing soon-to-be-released functionality. Content in this version is subject to change. Links to the v2.4 code base may not properly resolve until the code is officially released.

URN schema validation

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.

Module XSD

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 identifier
  • module is the reference type identifier
  • Magento_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.

Framework XSD

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 identifier
  • framework is the reference type identifier. You can also add additional framework libraries as separate components with framework-<sub-name>
  • Api/etc/extension_attributes.xsd is the relative path to the framework’s directory.

Referencing a XSD from another XSD

Use URN notation to reference schema from inside a XSD document:

1
2
3
<xs:redefine schemaLocation="urn:magento:framework:Config/etc/view.xsd">

The URN resolution is invoked automatically by the libxml engine. Register the URN resolver by using libxml_set_external_entity_loader:

1
libxml_set_external_entity_loader(['Magento\Framework\Config\Dom\UrnResolver', 'registerEntityLoader']);

The relative path to other XSDs cannot be used from inside the XSD file, because the entity loader fails to resolve the relative path.

Next step

Name your component