How to Declare XML Namespace in Root SMIL?
Declaring an XML namespace within a root Synchronized Multimedia
Integration Language (SMIL) document establishes the vocabulary and
schema rules that XML parsers use to interpret multimedia elements and
timing structures. This article covers the syntax for declaring default
and prefixed namespaces on the root <smil> element,
the standard Uniform Resource Identifiers (URIs) across SMIL versions,
and best practices for avoiding XML parsing errors.
The Role of the Root XML Namespace
A SMIL document is an XML-compliant file used to define the layout,
synchronization, and presentation of audio, video, text, and images.
Because it adheres to XML standards, the document requires a declared
namespace to avoid element collision and to allow parsers to validate
tags like <seq>, <par>,
<video>, and <layout>. The
declaration is placed directly within the opening
<smil> tag at the top of the file hierarchy.
Basic Syntax for Default Namespace Declaration
The most common method to declare an XML namespace in SMIL is via the
xmlns attribute applied directly to the root
<smil> tag without a prefix. This sets the default
namespace for the root and all child elements within the document.
<smil xmlns="http://www.w3.org/ns/SMIL">
<head>
<layout>
<root-layout width="640" height="480" />
<region id="main" top="0" left="0" width="640" height="480" />
</layout>
</head>
<body>
<seq>
<video src="intro.mp4" region="main" />
<video src="feature.mp4" region="main" />
</seq>
</body>
</smil>In this syntax,
xmlns="[http://www.w3.org/ns/SMIL](http://www.w3.org/ns/SMIL)"
assigns the standard SMIL namespace to every element unless explicitly
overridden.
Standard SMIL Namespace URIs by Version
Different versions and profiles of the SMIL specification use distinct namespace URIs. Using the correct URI ensures compliance with the target media player or rendering engine:
- SMIL 3.0:
[http://www.w3.org/ns/SMIL](http://www.w3.org/ns/SMIL) - SMIL 2.1:
[http://www.w3.org/2005/SMIL21/Language](http://www.w3.org/2005/SMIL21/Language) - SMIL 2.0:
[http://www.w3.org/2001/SMIL20/Language](http://www.w3.org/2001/SMIL20/Language) - SMIL 1.0: SMIL 1.0 predated XML namespaces, so namespace declarations were not strictly part of the 1.0 recommendation, though modern implementations often reference the 2.0+ URIs when parsed by standard XML processors.
Using Prefixed Namespace Declarations
When integrating SMIL elements into other XML formats—such as SVG or composite XML documents—or when embedding foreign XML vocabularies inside a SMIL document, a prefixed namespace is used.
A prefixed declaration assigns a short identifier after
xmlns::
<smil:smil xmlns:smil="http://www.w3.org/ns/SMIL"
xmlns:custom="http://example.org/custom-metadata">
<smil:head>
<custom:meta name="author" content="Media Producer" />
</smil:head>
<smil:body>
<smil:seq>
<smil:video src="clip.mp4" />
</smil:seq>
</smil:body>
</smil:smil>In this scenario, every tag belonging to the SMIL specification must
use the smil: prefix, while extension elements use their
respective custom prefixes.
Combining Namespaces with XML Prolog and Schema Attributes
For full standards compliance, the namespace declaration is often accompanied by an XML declaration and schema location attributes:
<?xml version="1.0" encoding="UTF-8"?>
<smil xmlns="http://www.w3.org/ns/SMIL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/ns/SMIL http://www.w3.org/2008/SMIL30/SMIL30Language.xsd"
version="3.0"
baseProfile="Language">
<head>
</head>
<body>
</body>
</smil>Declaring the namespace accurately on the root
<smil> element ensures seamless compatibility across
media engines, digital signage software, and standard XML validation
tools.