Internationalization Tag Set

The Internationalization Tag Set (ITS) is a set of attributes and elements designed to provide internationalization and localization support in XML documents.
The ITS specification identifies concepts (called "ITS data categories") which are important for internationalization and localization. It also defines implementations of these concepts through a set of elements and attributes grouped in the ITS namespace. XML developers can use this namespace to integrate internationalization features directly into their own XML schemas and documents.
Overview.
ITS v1.0 includes seven data categories:
The vocabulary is designed to work on two different fronts: First by providing markup usable directly in the XML documents. Secondly, by offering a way to indicate if there are parts of a given markup that correspond to some of the ITS data categories and should be treated as such by ITS processors.
ITS applies to both new document types as well as existing ones. It also applies to both markups without any internationalization features as well as the class of documents already supporting some internationalization or localization-related functions.
ITS can be specified using global rules and local rules.
Examples.
Translate data category.
In the following ITS markup example, the elements and attributes with the codice_2 prefix are part of the ITS namespace. The codice_1 element lists the different rules to apply to this file. There is one codice_4 rule that indicates that any content inside the codice_5 element should not be translated.
The codice_6 attributes used in some elements are utilised to override the global rule. Here, to make translatable the content of codice_7 and to make non-translatable the text "faux pas".
<text xmlns:its="http://www.w3.org/2005/11/its">
 <head>
 <revision>Sep-10-2006 v5</revision>
 <author>Gerson Chicareli</author>
 <contact>gersonchicareli@gmail.com</contact>
 <title
 its:translate="yes">The Origins of Modern Novel</title>
 <its:rules version="1.0">
 <its:translateRule translate="no" selector="/text/head"/>
 </its:rules>
 </head>
 <body>
 <div xml:id="intro">
 <head>Introduction</head>
 <p>It would certainly be quite a <span its:translate="no">faux
pas</span> to start a dissertation on the origin of modern novel without 
mentioning the <tl>HKLM of GFDL</tl>...</p>
 </div>
 </body>
</text>
Localization Note data category.
In the following ITS markup example, the codice_8 element specifies that any node corresponding to the XPath expression codice_9 has an associated note. The location of that note is expressed by the codice_10 attribute, which holds a relative XPath expression pointing to the node where the note is, here codice_11.
Note also the use of the codice_6 attribute to mark the codice_13 elements as non-translatable.
<Res xmlns:its="http://www.w3.org/2005/11/its">
 <prolog>
 <its:rules version="1.0">
 <its:translateRule selector="//msg/notes" translate="no"/>
 <its:locNoteRule locNoteType="description" selector="//msg/data" locNotePointer="../notes"/>
 </its:rules>
 </prolog>
 <body>
 <msg id="FileNotFound">
 <notes>Indicates that the resource file {0} could not be loaded.</notes>
 <data>Cannot find the file {0}.</data>
 </msg>
 <msg id="DivByZero">
 <notes>A division by 0 was going to be computed.</notes>
 <data>Invalid parameter.</data>
 </msg>
 </body>
</Res>
ITS limitations.
ITS does not have a solution to all XML internationalization and localization issues.
One reason is that version 1.0 does not have data categories for everything. For example, there is currently no way to indicate a relation source/target in bilingual files where some parts of a document store the source text and some other parts the corresponding translation.
The other reason is that many aspects of internationalization cannot be resolved with a markup. They have to do with the design of the DTD or the schema itself. There are best practices, design and authoring guidelines that are necessary to follow to make sure documents are correctly internationalized and easy to localize. For example, using attributes to store translatable text is a bad idea for many different reasons, but ITS cannot prevent an XML developer from making such choice.
Some of the ITS 1.0 limitations are being addressed in the version 2.0: See http://www.w3.org/TR/its20/ for more details.