OASIS logo

XLIFF Version 1.2

Committee Specification 02

24 July 2007

Specification URIs:

This Version:

http://docs.oasis-open.org/xliff/v1.2/cs02/xliff-core.html

http://docs.oasis-open.org/xliff/v1.2/cs02/xliff-core.pdf

Previous Version:

http://docs.oasis-open.org/xliff/v1.2/cs01/xliff-core.html

Latest Version:

http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html

http://docs.oasis-open.org/xliff/xliff-core/xliff-core.pdf

Latest Approved Version:

http://docs.oasis-open.org/xliff/xliff-core/xliff-core.html

http://docs.oasis-open.org/xliff/xliff-core/xliff-core.pdf

Technical Committee:

OASIS XML Localisation Interchange File Format (XLIFF) TC

Chair(s):

Bryan Schnabel < bryan.s.schnabel@exgate.tek.com >

Tony Jewtushenko < tony.jewtushenko@productinnovator.com>

Editor(s):

Yves Savourel < ysavourel@translate.com>

John Reid <jreid@novell.com>

Tony Jewtushenko < tony.jewtushenko@productinnovator.com>

Rodolfo M. Raya <rmraya@heartsome.net>

Related Work:

This specification replaces or supersedes:

XLIFF 1.1 Commitee Specification, 31 Oct 2003

Namespace:

urn:oasis:names:tc:xliff:document:1.2

Abstract:

This document defines the XML Localization Interchange File Format (XLIFF). The purpose of this vocabulary is to store localizable data and carry it from one step of the localization process to the other, while allowing interoperability between tools.

Status:

This document was last revised or approved by the XLIFF TC on the above date. The level of approval is also listed above. Check the current location noted above for possible later revisions of this document. This document is updated periodically on no particular schedule.

Technical Committee members should send comments on this specification to the Technical Committee's email list. Others should send comments to the Technical Committee by using the "Send A Comment" button on the Technical Committee' s web page at www.oasis-open.org/committees/xliff

For information on whether any patents have been disclosed that may be essential to implementing this specification, and any offers of patent licensing terms, please refer to the Intellectual Property Rights section of the Technical Committee web page ( http://www.oasis-open.org/committees/xliff/ipr.php).

The non-normative errata page for this specification is located at www.oasis-open.org/committees/xliff/documents/xliff-core-1.2-errata.htm

Notices

Copyright © OASIS® 1993 - 2007. All Rights Reserved.

All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

OASIS requests that any OASIS Party or any other party that believes it has patent claims that would necessarily be infringed by implementations of this OASIS Committee Specification or OASIS Standard, to notify OASIS TC Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification.

OASIS invites any party to contact the OASIS TC Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this specification by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the OASIS Technical Committee that produced this specification. OASIS may include such claims on its website, but disclaims any obligation to do so.

OASIS takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on OASIS' procedures with respect to rights in any document or deliverable produced by an OASIS Technical Committee can be found on the OASIS website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this OASIS Committee Specification or OASIS Standard, can be obtained from the OASIS TC Administrator. OASIS makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims.

The names "OASIS" and "XLIFF" are trademarks of OASIS, the owner and developer of this specification, and should be used only to refer to the organization and its official outputs. OASIS welcomes reference to, and implementation and use of, specifications, while reserving the right to enforce its marks against misleading uses. Please see http://www.oasis-open.org/who/trademark.php for above guidance.

Table of Contents

1. Introduction

1.1. Transitional and Strict

2. General Structure

2.1. Header

2.2. Body

2.3. Named Groups

2.4. Inline Elements

2.5. Extensibility

2.5.1. Adding Elements

2.5.2. Adding Attributes

2.5.3. Adding Attribute Values

2.5.4. Validating Documents with Extensions

2.6. Embedding XLIFF

2.7. Non equivalent translations

2.8. Grouping translations across <trans-unit> elements

2.9. Segmentation

3. Detailed Specifications

3.1. XML Declaration

3.2. Elements

3.2.1. Top-level and Header Elements

3.2.2. Named Group Elements

3.2.3. Structural Elements

3.2.4. Inline Elements

3.2.5. Delimiter Element

3.3. Attributes

3.3.1. XLIFF Attributes

3.3.2. XML Namespace Attributes

A. XLIFF Tree Structure

B. Schema

C. Changes Since Previous Version (Non-Normative)

D. Naming Guidelines (Non-Normative)

E. XLIFF Technical Committee (Non-Normative)

F. References


1. Introduction

XLIFF is the XML Localization Interchange File Format designed by a group of software providers, localization service providers, and localization tools providers. It is intended to give any software provider a single interchange file format that can be understood by any localization provider. It is loosely based on the OpenTag version 1.2 specification and borrows from the TMX 1.2 specification. However, it is different enough from either one to be its own format.

1.1 Transitional and Strict

XLIFF is specified in two "flavors". Indicate which of these variants you are using by selecting the appropriate schema. The schema may be specified in the XLIFF document itself or in an OASIS catalog. The namespace is the same for both variants. Thus, if you want to validate the document, the tool used knows which variant you are using. Each variant has its own schema that defines which elements and attributes are allowed in certain circumstances.

As newer versions of XLIFF are approved, sometimes changes are made that render some elements, attributes or constructs in older versions obsolete. Obsolete items are deprecated and should not be used even though they are allowed. The XLIFF specification details which items are deprecated and what new constructs to use.

2. General Structure

XLIFF is an XML application, as such it begins with an XML declaration. After the XML declaration comes the XLIFF document itself, enclosed within the <xliff> element. An XLIFF document is composed of one or more sections, each enclosed within a <file> element. The <file> element consists of a <header> element, which contains metadata about the <file> , and a <body> element, which contains the extracted translatable data from the <file>. The translatable data within <trans-unit> elements is organized into <source> and <target> paired elements. These <trans-unit> elements can be grouped recursively in <group> elements.

In addition, XLIFF provides the ability to maintain information about the processing of the file via the <phase> element. Possible translations for a specific <source> element can be generated from any number of MT (Machine Translation) and CAT (Computer Assisted Translation) systems and stored near the <source> in <alt-trans> elements. Context for a <source> that could be used by a translator or a TM (Translation Memory) system is provided by the <context> element. Binary data can be made available via the <bin-unit>, which may also be translated and contain an associated <trans-unit> .

It is strongly recommended that content within the <file> element be uniformly bilingual. In other words, each <source> and <target> element that is a child of <trans-unit> is of the same language as the source-language and target-language attributes of the <file> element, respectively. The xml:lang attribute should not be used in those elements. The exception is that <source> and <target> elements that are children of <alt-trans> may contain an xml:lang attribute of a different language than that of the source-language and target-language attributes of the <file> element.

<xliff version='1.2'
       xmlns='urn:oasis:names:tc:xliff:document:1.2'>
<file original='hello.txt' source-language='en' target-language='fr'
       datatype='plaintext'>
<body>
<trans-unit id='hi'>
<source>Hello world</source>
<target>Bonjour le monde</target>
<alt-trans>
<target xml:lang='es'>Hola mundo</target>
</alt-trans>
</trans-unit>
</body>
</file>
</xliff>

The complete tree structure is available in Appendix A.

2.1. Header

The XLIFF <header> contains metadata about the file and the localization process. It contains the <skl>, <phase-group>, <glossary>, <reference>, <count-group>, <tool>, <prop-group>, and <note> elements. The <skl> element contains either a skeleton file of the file submitted for localization or a hypertext link to that file.

The <phase-group> element contains information about each processing phase used in localizing the file; references to these phases are stored along with the translations. The <glossary> and <reference> elements may contain hypertext links to a glossary and reference file, respectively, or the actual glossary and reference data that can be used in the localization process.

The <count-group> element is a grouping element of count information of the entire file. The <prop-group> element (deprecated) contains tool-specific information used in combining the data with the skeleton file or storing the data in a repository. The <note> element contains instructions for the localization process. The <count-group>, <prop-group>, and <note> elements can also appear in the body of the file.

2.2. Body

The XLIFF <body> contains the structure and the localizable content from the file. It contains the <group>, <trans-unit> and <bin-unit> elements. The structure is described using the <group>, <trans-unit>, <bin-unit> elements. The <group> element is a general purpose structural element used in describing the hierarchy of the file; it can contain other <group> elements as children as well as <trans-unit> and <bin-unit> elements.

The <trans-unit> and <bin-unit> elements contain the translatable portions of the document. The <trans-unit> element contains the text to be translated, the translations, and other related information. The <bin-unit> contains binary data that may or may not need to be translated; it also can contain translated versions of the binary object as well as other related information.

In the <trans-unit> element the text to be translated is contained in a <source> element. This element may contain inline elements that either remove the codes from the source (<g>, <x/>, <bx/> , <ex/>) or that mask off codes left inline (<bpt>, <ept>, <sub> , <it>, <ph>). The translated text is contained in a <target> element that has the same inline codes available to it as does the <source> element. Translation matches generated by a TM or MT or entered by a translator may be provided in an <alt-trans> element, which also contains the <source> and <target> elements.

At every structural level contextual information for the localization process can be provided by the <context-group> named group element, count information by the <count-group> named group element, and tool-specific information by the <prop-group> named group element (deprecated).

2.3. Named Groups

XLIFF allows grouping of certain elements into named groups. A named group is simply a grouping element with a name attribute. These named groups can be interspersed throughout the file with information designed for specific purposes. Using XML processing instructions different actions can be performed with specific named groups. The named group elements are <context-group>, <count-group> and <prop-group> (deprecated).

The <count-group> element contains counts of words, translations, dialogs, or anything else that may need to be counted in the file. A different named group could be stored by the client, translator, reviewer, and localization engineer. Processing instructions could inform a system which of these <count-group> to update during the localization process.

The <prop-group> element contains tool specific data that can be used in creating the translated file, storing the translations, and any other specific task. Processing instructions can indicate to the tools which named <prop-group> to use when updating the repository or combining the localized data with the skeleton file to create a translated file. Note that the <prop-group> has been deprecated since version 1.1.

2.4. Inline Elements

The content of the <source> and the <target> elements can include one or more inline elements (also called "content markup"). Those elements are used to represent codes that reside within the source or target text, for example the formatting codes to mark a section of a sentence in bold.

There are three different types of inline elements:

  1. Elements that have a content, and for which this content is the actual native code of the original data (escaped for XML if necessary). These elements are: <bpt>, <ept>, <it>, and <ph> .
  2. Elements that are empty and act as placeholders for a native code that is either in the Skeleton file or generated automatically. These elements are: <g>, <bx/>, <ex/> , and <x/>.
  3. The <sub> element, which can be inside <bpt>, <ept>, <it>, and <ph> to delimit a translatable run of text within a native inline code, for example the value of an ALT attribute in a <IMG> element in HTML.

The first two types of inline elements can be classified into three main categories depending on their function, and regardless the method they use to hold the native codes:

A) Codes that either begin or end an instruction, and whose beginning and ending functions both appear within a translation unit. For example, an instruction to begin embolden for a range of words which is then followed in the same translation unit by an instruction to end bold formatting. The elements that can handle such cases are: <bpt>, <ept>, <g>, <bx/>, and <ex/> .

B) Codes that either begin or end an instruction, but whose beginning and ending functions are not both contained within a single translation unit. For example, an instruction to embolden text may apply to the first of three sentences in a paragraph contained within a single translation unit, but the instruction to turn off bolding may only appear at the end of the third sentence. Its beginning instruction is present in the first translation unit, while its closing tag is present in the third translation unit. The elements that can handle such cases are: <it> and <x/>.

C) Codes that represent self-contained functions that do not require explicit ending instructions. Images or cross-reference tokens are examples of these standalone codes. The elements that can handle such cases are: <ph> and <x/>.

The guidelines for using the inline elements are as follows:

As XLIFF inline elements are closely related to TMX inline elements, further examples of usage of these tags may be found in their specification's Content Markup section.

Inline elements are normally treated as being transparent with regard to lexical processing such as segmentation or word tokenisation. If the inline element also represents a lexical function, such as implying spacial characteristics or a string of characters or symbols, then the equiv-text attribute must be used to denote any such lexical characteristics.

For example:

<p>This HTML break element<br/>is not followed by a white space character</p>
    

is represented in an XLIFF document as:

<source>This HTML break element<x id="x1" ctype="x-html-br" equiv-text=" "/>is not followed
by a white space character.</source>
    

2.5. Extensibility

At times, it may be useful to extend the set of information available in an XLIFF document by inserting constructs defined in various other XML vocabularies. You can add non-XLIFF elements, as well as attributes and attribute values. Adding elements and attributes use the namespace mechanism [ XML Names]. Adding attribute values generally involves preceding the value by an "x-" (e.g. <context context-type='x-for-engineers'>).

Although XLIFF offers this extensibility mechanism, in order to avoid a nimiety of information and increase interoperability between tools, it is strongly recommended to use XLIFF capabilities whenever possible, rather than to create non-standard user-defined elements or attributes.

2.5.1. Adding Elements

XLIFF provides several extension points in the following elements: <alt-trans>, <bin-unit>, <group>, <header>, <tool>, <trans-unit>, and <xliff>.

Several non-XLIFF elements can be used at each extension point. The content of each element can be any valid XML content (empty content, PCDATA, mixed content, and so forth).

For example, the following XLIFF code shows how to add user-defined elements (in bold) within an XLIFF document:

<xliff version='1.2'
             xmlns='urn:oasis:names:tc:xliff:document:1.2'
             xmlns:sup='http://www.ChaucerState.ac.pg/Frm/XLFSup-v1'>
<file original='passus-1.doc' source-language='enm' datatype='plaintext'>
<group>
<sup:SourceInfo>
<sup:Book>Piers Plowman, Passus 1</sup:Book>
<sup:Author>William Langland</sup:Author>
</sup:SourceInfo>
<sup:WorkInfo Task='transcription' Context='Middle-English:1360'/> 
<trans-unit id='1'>
<source xml:lang='enm'>What this mountaigne bymeneth</source>
<target xml:lang='en'>What this mountain means</target>
<sup:Reference Type='strophe'>1-a</sup:Reference> 
</trans-unit>
<trans-unit id='2'>
<source xml:lang='enm'>and the merke dale</source>
<target xml:lang='en'>and the dark dale</target>
<sup:Reference Type='strophe'>1-b</sup:Reference> 
</trans-unit>
<trans-unit id='3'>
<source xml:lang='enm'>And the feld ful of folk</source>
<target xml:lang='en'>And the field full of folk</target>
<sup:Reference Type='strophe'>2-a</sup:Reference>
</trans-unit>
<trans-unit id='4'>
<source xml:lang='enm'>I shal yow faire shewe.</source>
<target xml:lang='en'>I fairly will show.</target>
<sup:Reference Type='strophe'>2-b</sup:Reference>
</trans-unit>
</group>
</file>
</xliff>

The non-XLIFF elements used in the example above would be defined as the following:

<xsd:schema targetNamespace="XLFSup-v1"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             xmlns:sup="http://www.ChaucerState.ac.pg/Frm/XLFSup-v1"
            elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="SourceInfo">
<xsd:complexType>
<xsd:sequence maxOccurs="unbounded"> <xsd:element name="Book" type="xsd:string"/> <xsd:element name="Author" type="xsd:string"/> </xsd:sequence>
</xsd:complexType> </xsd:element> <xsd:element name="WorkInfo"> <xsd:complexType> <xsd:attribute name="Task" type="xsd:string"/> <xsd:attribute name="Context" type="xsd:string"/> </xsd:complexType> </xsd:element> <xsd:element name="Reference"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string">Struct_InLine <xsd:attribute name="Type" type="xsd:string"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:schema>

It is not possible to add non-XLIFF elements in either the <source> or <target> elements. However, the <mrk> element can be used to markup sections of the text with user-defined values assigned to the mtype attribute. You can also add non-XLIFF attributes to most of the inline elements used in <source> and <target>.

2.5.2. Adding Attributes

Attributes of a namespace different than XLIFF can be included in several XLIFF elements.

The following elements allow non-XLIFF attributes: <alt-trans>, <bin-source>, <bin-target>, <bin-unit>, <bpt>, <bx/>, <ept> , <ex/>, <file>, <g> , <group>, <it>, <mrk> , <ph>, <seg-source>, <source>, <target>, <tool>, <trans-unit>, <x/>, and <xliff>.

For instance, the following XLIFF code illustrates how to use attributes from the XHTML vocabulary (in bold) in the <group> and <trans-unit> XLIFF elements. The example shows how to carry formatting information about an extracted table:

<xliff version='1.2'
            xmlns='urn:oasis:names:tc:xliff:document:1.2'
            xmlns:htm='http://www.w3.org/1999/xhtml'>
<file original='table.htm' source-language='en' datatype='html'>
<group restype='table' htm:border='1' htm:cellpadding='5'
htm:cellspacing='0' htm:width='100%'>
<group restype='row'>
<trans-unit id='1' htm:valign='top' htm:width='30%'>
<source>Text of row 1 column 1</source>
</trans-unit>
<trans-unit id='2' htm:valign='top' htm:width='30%'>
<source>Text of row 1 column 2</source>
</trans-unit>
</group> <group restype='row'> <trans-unit id='3' htm:valign='top' htm:width='30%'> <source>Text of row 2 column 1</source> </trans-unit> <trans-unit id='4' htm:valign='top' htm:width='30%'> <source>Text of row 2 column 2</source> </trans-unit> </group> </group> </file> </xliff>

In each of the XLIFF elements allowing non-XLIFF attributes: there is no specific location where to insert the non-XLIFF attributes, and there is no limit to the number of non-XLIFF attributes that can be used.

2.5.3. Adding Attribute Values

Many attributes in XLIFF offer a list of enumerated values. Some applications may find it necessary to add user-defined values to these lists. XLIFF allows for such extension.

The attributes where the list of values can be extended are the following: alttranstype, context-type, count-type, ctype, datatype, mtype, purpose, reformat, restype, size-unit, state, state-qualifier , and unit .

User-defined values must start with an "x-" prefix. There is no specified mechanism to validate individual user-defined values. The XLIFF schema will allow any value starting with "x-" in addition to the pre-defined values.

For example, the following excerpt shows how the user-defined value x-for-engineer can be utilized in a document:

...
<group>
<context-group name='EngineersData'>
<context context-type='x-for-engineers'>Data...</context>
...

2.5.4. Validating Documents with Extensions

In order to validate an XLIFF document that contains non-XLIFF parts, you can use the schema validation mechanism: In addition to the namespace declarations, add the schemaLocation attribute of the XML Schema-instance namespace to define what schemas to use to validate the document (XLIFF and the non-XLIFF namespaces).

Note: XLIFF 1.2 XML Schemas set the attribute processContents to value "skip", so the only validation requirement for non-XLIFF content is to ensure it is well-formed.

<xliff version='1.2'
        xmlns='urn:oasis:names:tc:xliff:document:1.2'
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:schemaLocation='
urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2.xsd http://www.ChaucerState.ac.pg/Frm/XLFSup-v1 XLFSup-v1.xsd'
> ... </xliff>

See http://www.w3.org/XML/Schema for more information on XML Schema and validation.

2.6. Embedding XLIFF

XML Namespace provides a convenient mechanism to use XLIFF constructs within another XML vocabulary.

If necessary an XLIFF document, or parts of a document, can be embedded within another XML document. The only requirement for this is on the side of the XML format that includes the XLIFF data. For the document to be valid, the schema of the given document type must include a definition for external elements.

If the including XML format uses XML Schema, it should include an <any> element in the definition of the element where the XLIFF data can be inserted. For example, the following XSD excerpt illustrates the case of an element type dataBlockType that can contain zero, one or more XLIFF constructs after a mandatory <type> element:

...
<xsd:complexType name="dataBlockType">
<xsd:sequence>
<xsd:element name="type" type="string" minOccurs="0"/>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
...

The ways of inserting different vocabulary in an XML document using XSD are described in section "Any Element, Any Attribute" in the document "XML Schema Part 0: Primer" available here: http://www.w3.org/TR/xmlschema-0/#any.

2.7 Non equivalent translations

Linguistically complete text may have to be broken into a number of <trans-unit> elements due to message size constraints or other reasons. In these instances the translator is not providing an equivalent translation for each <source>, but rather fitting in the target language text over a number of <trans-unit> <source> / <target> pair elements to meet the requirements of the target application.

Example:

<trans-unit id="t1">
<source>Constrained text for limited</source>
<target>Tekst angielski dla</target>
</trans-unit>
<trans-unit id="t2">
<source>display for English</source>
<target>ograniczonego pola</target>
</trans-unit>

In this circumstance the equiv-trans attribute for the <target> element is used to denote that the translation should not be regarded as a direct translation of the <source> element. The attribute is optional, and default value is "yes". The other possible value will be "no" to indicate that the translation in <target> for the given <source> is not a direct equivalent linguistically of the source language text. The following example demonstrates the use of the equiv-trans attribute:

<trans-unit id="t1"> 
<source>Constrained text for limited</source>
<target equiv-trans="no">Tekst angielski dla</target>
</trans-unit>
<trans-unit id="t2">
<source>display for English</source>
<target equiv-trans="no">ograniczonego pola</target>
</trans-unit>  

2.8 Grouping translations across <trans-unit> elements

It is inevitable that individual XLIFF <trans-unit> elements may not represent a piece of text that can be translated without reference to one or more following <trans-unit> elements. The causes for this may be incorrect segmentation or bad document design.

Example:

<trans-unit id="t1"> 
   <source>The German acronym v.</source>
   <target>Niemiecki skrót v. OT oznacza górną pozycję silnika.</target>
</trans-unit>
<trans-unit id="t2">
   <source> OT signifies the top dead center position for an engine.</source>
   <target/>
</trans-unit>

In these cases the merged-trans attribute for the <group> element can be used to denote that the individual <trans-unit> elements cannot be regarded as a direct translation, but rather need to be treated linguistically as a merged group. This attribute has two possible values: "yes" or "no". The default value is "no". A value of "yes" indicates that the <trans-unit> elements contained within this <group> element are to be treated together for linguistic purposes. All <trans-unit> elements that are encompassed by a <group> element that has its merged-trans attribute set to "yes" normally have their related <target> equiv-trans attribute set to the value of "no". The text of all of the <source> and <target> elements taken together form one linguistic whole. No requirements are made regarding the distribution of the translation in the <target> elements. This will be governed by the requirements of the individual applications. The translated text may be placed within the first <target> element leaving the following <target> elements blank, or distributed among the <target> elements contained within the merged-trans attribute of the <group> element. The following example demonstrates the use of the merged-trans attribute for the <group> element:

<group merged-trans="yes">
<trans-unit id="t1">
<source>The German acronym v.</source>
<target equiv-trans="no">Niemiecki skrót v. OT oznacza górną pozycję silnika.</target>
</trans-unit>
<trans-unit id="t2">
<source> OT signifies the top dead center position for an engine.</source>
<target equiv-trans="no"/>
</trans-unit>
</group>

2.9 Segmentation

During some operations, such as translation and leveraging, it may be important for the user agent to break down the content of the <source> into smaller runs of text (for example, sentences). These smaller parts of text are called segments. The process of breaking down a text into segments is known as segmentation. It is important to note that the manipulation / segmentation of trans-unit elements is owned by the "translator" domain, not at the extraction filter domain. This means that segmentation will be performed by the editing tool or possibly an automated segmentation process.

In order to avoid modifying the content of the original <source> element, during segmentation a new element <seg-source> is introduced. The content of the <seg-source> element is the same as the content of the <source> element, but with segmentation markup. The segmentation markup is also transferred to the <target> element as applicable during translation.

Each segment inside the <seg-source> and <target> content is represented using the <mrk> element with attribute mtype set to the value "seg". For example the following <source> element contains three segments. After segmentation the content may look as follows:

<source>Richard stepped out of the kitchen hut. He noticed a movement from the corner of his
eye. A monkey had climbed on top of one of the workshop sheds, trying to get in by the 
ventilation shaft.</source>
<seg-source><mrk mtype="seg">Richard stepped out of the kitchen hut.</mrk>
<mrk mtype="seg">He noticed a movement from the corner of his eye.</mrk>
<mrk mtype="seg">A monkey had climbed on top of one of the workshop sheds, trying to get in
 by the ventilation shaft.</mrk>
</seg-source>

Note that it may be advisable for XLIFF processing tools to add any missing opening or closing tags when exporting standalone segments outside the original XLIFF document.

Non-clonable <g> elements introduce a problem for localisation in general and segmentation in particular when the non-clonable <g> elements content spans more than single words or isolated expressions. In this form they represent localisation-unfriendly content and are very likely to cause difficulties during translation. Being able to break a segment inside such an element may be the smallest of the problems that tools would be faced with. A non-clonable <g> element clearly represents a piece of content that must be translated as one piece, and cannot be segmented.

Example: This example shows how content with clonable <g> may be localised:

<source>This is a <g>sentence. It has</g> markup.</source>

The translation into "Yoda-English" would be:

<target>A <g>sentence</g> this is. Markup <g>it has</g>.</target>

In this example the <g> element is clonable, and can be localised correctly. However, in the case where cloning is not possible, the resulting content cannot be correctly localised, and is in fact irrespective of whether segments are introduced here or not.

If matching segments need to be identified between <seg-source> and <target>, and/or between <seg-source> content and corresponding <alt-trans> units, the mid attribute should be used for this purpose.

Example: This example shows how corresponding segments are referenced between <seg-source> and <target> elements in a <trans-unit>.

<trans-unit id= "1">
<source>First sentence.Second sentence.</source>
<seg-source>
<mrk mtype="seg" mid="1">First sentence.</mrk>
<mrk mtype="seg" mid="2">Second sentence.</mrk>
</seg-source>
<target>
<mrk mtype="seg" mid="1">Translated first sentence.</mrk>
<mrk mtype="seg" mid="2">Translated second sentence.</mrk>
</target>
</trans-unit> 

Example: In the following <trans-unit> the <alt-trans> represents a 75% fuzzy match for the second segment in the <seg-source>. This is indicated by introducing the mid="2" attribute on the <alt-trans>.

<trans-unit id= "2">
<source>First sentence.Second sentence.</source>
<seg-source>
<mrk mtype="seg" mid="1">First sentence.</mrk>
<mrk mtype="seg" mid="2">Second sentence.</mrk>
</seg-source>
<alt-trans mid="2" match-quality="75%">
<source>The second sentence.</source>
<target>The translated second sentence.</target>
</alt-trans>
</trans-unit> 

Example: An <alt-trans> element may also have segmented content:

<trans-unit id="3">
<source>The second sentence.</source>
<alt-trans match-quality="50%">
<source>First sentence. Second sentence.</source>
<seg-source>
<mrk mtype="seg" mid="1">First sentence.</mrk>
<mrk mtype="seg" mid="2">Second sentence.</mrk>
</seg-source>
<target>
<mrk mtype="seg" mid="1">Translated first sentence.</mrk>
<mrk mtype="seg" mid="2">Translated second sentence.</mrk>
</target>
</alt-trans>
</trans-unit> 

3. Detailed Specifications

3.1. XML Declaration

The XML declaration is strongly recommended. It indicates the XML version and sets the defaults for the encoding of the file. For example, the following declaration specifies the document is in ISO 8859-1, the Latin-1 encoding.

<?xml version="1.0" encoding="iso-8859-1"?>

As in all XML files, the default encoding for an XLIFF file is assumed to be either UTF-8, which is a superset of the 7-bit ASCII character set, or UTF-16, which is UCS-2 with surrogate pairs for code points above U+FFFF. Thus, for these character sets, the encoding declaration is not necessary. Further, all XML parsers support these encodings. If the encoding is in UTF-16 the first character of the file must be the Unicode Byte-Order-Mark, U+FEFF, which indicates the endianness of the file. Other encodings may be desirable and may be generally supported by XML parsers. These must be declared using the encoding declaration. The values to use for the encoding declaration are defined in the [IANA Charsets] listing.

If necessary, you can also specify a namespace for XLIFF. The namespace identifier for this standard is "urn:oasis:names:tc:xliff:document:1.2".

A minimal XLIFF document with one entry looks something like this:

<?xml version="1.0"?>
<xliff version="1.2">
<file source-language="EN" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>Hello World!</source>
</trans-unit>
</body>
</file>
</xliff>

If you need to validate the document, use the schema validation mechanism: In addition to the namespace declarations, add the schemaLocation attribute of the XML Schema-instance namespace to define what schema files to use. The same example as above would then look like this:

<?xml version="1.0"?>
<xliff version='1.2'
             xmlns='urn:oasis:names:tc:xliff:document:1.2'
             xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
             xsi:schemaLocation='
             urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2.xsd'>
<file source-language="EN" datatype="plaintext" original="file.ext">
<body>
<trans-unit id="1">
<source>Hello World!</source>
</trans-unit>
</body>
</file>
</xliff>

If a document of a previous compatible version of XLIFF is to be validated with the schema of a newer version, the document should use the same mechanism.

For validating documents that include non-XLIFF namespaces see the section Validating Documents with Extensions.

3.2. Elements

XLIFF elements can be divided into five main categories: the top-level and header elements, the named group elements, the structural elements, the inline elements, and the delimiter elements. Attributes are shared among them.

Top Level and Header elements <xliff>, <file>, <header>, <skl>, <external-file>, <internal-file>, <glossary>, <reference> , <phase-group>, <phase>, <tool>, <note>.
Named Group Elements <context-group>, <context>, <count-group> , <count>, <prop-group> , <prop>.
Structural elements <body>, <group>, <trans-unit>, <source>, <target>, <bin-unit>, <bin-source>, <bin-target> , <alt-trans> .
Inline elements <g>, <x/>, <bx/>, <ex/>, <bpt>, <ept>, <sub>, <it>, <ph>.
Delimiter element <mrk>.

3.2.1. Top-level and Header Elements

The top-level and header elements are the following:

<xliff>

XLIFF document - The <xliff> element encloses all the other elements of the document. The required version attribute specifies the version of XLIFF. The optional xml:lang attribute is used to specify the language of the content of the document.

Required attributes:

version.

Optional attributes:

xml:lang, non-XLIFF attributes

Contents:

One or more <file> elements, followed by
Zero, one or more non-XLIFF elements.

<file>

File - The <file> element corresponds to a single extracted original document. The required original attribute specifies the name of the file from which this file content is derived. The required datatype attribute specifies the format of the original file; e.g. "html". The required source-language attribute specifies the language of the <source> content. The optional target-language attribute is used to specify the language of the <target> content. The optional tool-id attribute accepts the id of the <tool> used to generate this XLIFF document. The optional date attribute is used to specify the creation date of this XLIFF file. The optional xml:space attribute is used to specify how white-spaces are to be treated. The optional category attribute is used to specify a general category of the content of the file; e.g. "medical". The optional product-name attribute is used to specify the name of the product which uses this file. The optional product-version and build-num attributes are used to specify the revision of the product from which this file comes. The tool and ts attributes have been deprecated in XLIFF 1.1.

Required attributes:

original, source-language, datatype.

Optional attributes:

tool, tool-id, date, xml:space, ts, category, target-language, product-name, product-version, build-num, non-XLIFF attributes

Contents:

Zero or one <header> element, followed by
One <body> element.

<header>

File header - The <header> element contains metadata relating to the <file> element.

Required attributes:

None.

Optional attributes:

None.

Contents:

zero or one <skl> element, followed by
zero or one <phase-group> element, followed by
zero, one or more <glossary>, <reference>, <count-group>, <prop-group>, <note>, <tool> elements, in any order, followed by
Zero, one or more non-XLIFF elements.

While for backward compatibility reasons no order is enforced for the elements before the non-XLIFF elements, the recommended order is the one in which they are listed here.

<skl>

Skeleton file - The <skl> element contains the skeleton file or the location of the skeleton file. The skeleton file is a template that can be used in recreating the original file, from the <source> content, or the translated file, from the <target> content.

Required attributes:

None.

Optional attributes:

None

Contents:

Either exactly one <internal-file> or one <external-file> element.

<internal-file>

Internal file - The <internal-file> element contains the actual file being referenced. It is a child of the <skl> , <glossary>, and <reference> elements. The format of the file is specified by the optional form attribute, which accepts mime-type values. The crc attribute accepts a value that can be used to precisely identify and assure the authenticity of the file.

Required attributes:

None.

Optional attributes:

form, crc.

Contents:

An embedded file.

<external-file>

External file - The <external-file> element specifies the location of the actual file being referenced. The required href attribute provides a URI to the file. The crc attribute accepts a value that can be used to precisely identify and assure the authenticity of the file. The uid attribute allows a unique ID to be assigned to the file.

Required attributes:

href.

Optional attributes:

uid, crc.

Contents:

The <external-file> is an empty element, including attributes only.

<glossary>

Glossary - The <glossary> element points to or contains a glossary, which can be used in the localization of the file.

Required attributes:

None.

Optional attributes:

None.

Contents:

The glossary description and either exactly one <internal-file> or one <external-file> element.

<reference>

Reference - The <reference> element points to or contains reference material, which can aid in the localization of the file.

Required attributes:

None.

Optional attributes:

None.

Contents:

A description of the reference material and either exactly one <internal-file> or one <external-file> element.

<note>

Note - The <note> element is used to add localization-related comments to the XLIFF document. The content of <note> may be instructions from developers about how to handle the <source>, comments from the translator about the translation, or any comment from anyone involved in processing the XLIFF file. The optional xml:lang attribute specifies the language of the note content. The optional from attribute indicates who entered the note. The optional priority attribute allows a priority from 1 (high) to 10 (low) to be assigned to the note. The optional annotates attribute indicates if the note is a general note or, in the case of a <trans-unit>, pertains specifically to the <source> or the <target> element.

Required attributes:

None.

Optional attributes:

xml:lang, from, priority, annotates .

Contents:

Text, no standard elements.

<phase-group>

Phase group - The <phase-group> element contains information about the task that has been performed on the file. This phase information is specific to the tools and workflow used in processing the file.

Required attributes:

None.

Optional attributes:

None.

Contents:

One or more <phase> elements.

<phase>

Phase information - The <phase> element contains metadata about the tasks performed in a particular process. The required phase-name attribute uniquely identifies the phase for reference within the <file> element. The required process-name attribute identifies the kind of process the phase corresponds to; e.g. "proofreading". The optional company-name attribute identifies the company performing the task. The optional tool-id attribute references the <tool> used in performing the task. The optional date attribute provides a timestamp indicating when the task was performed. The optional job-id attribute allows an ID to be assigned to the job. The optional contact-name, contact-email, and contact-phone attributes all refer to the person performing the task.

Required attributes:

phase-name, process-name.

Optional attributes:

company-name, tool, tool-id, date, job-id, contact-name, contact-email, contact-phone.

Contents:

Zero, one or more <note> elements.

<tool>

Tool - The <tool> element describes the tool that has been used to execute a given task in the document. The required tool-id attribute uniquely identifies the tool for reference within the <file> element. The required tool-name attribute specifies the actual tool name. The optional tool-version attribute provides the version of the tool. The optional tool-company attribute provides the name of the company that produced the tool.

Required attributes:

tool-id, tool-name.

Optional attributes:

tool-version, tool-company, non-XLIFF attributes

Contents:

Zero, one or more non-XLIFF elements.

3.2.2. Named Group Elements

The named group elements are the following:

<count-group>

Count group - The <count-group> element holds count elements relating to the level in the tree in which it occurs. Each group for <count> elements must be named, allowing different uses for each group. The required name attribute uniquely identifies the <count-group> within the <file> element.

Required attributes:

name.

Optional attributes:

None.

Contents:

One or more <count> elements.

<count>

Count - The <count> element contains information about counts. For each <count> element the required count-type attribute indicates what kind of count the element represents, and the optional unit attribute indicates the unit of the count (by default: word). A list of values for count-type and unit is provided. The optional phase-name attribute references the <phase> in which the count was produced.

Required attributes:

count-type.

Optional attributes:

phase-name, unit.

Contents:

Number (the count value).

<context-group>

Context group - The <context-group> element holds context elements relating to the level in the tree in which it occurs. Thus context can be set at a <group> level, a <trans-unit> level, or a <alt-trans> level. Each <context-group> element may be named, allowing different uses for each group. When the <context-group> is named, these uses can be controlled through the use of XML processing instructions. Because the <context-group> element may occur at a very high level, a default context can be established for all <trans-unit> elements within a file. This default can be overridden at many subsequent levels. The optional name attribute may uniquely identify the <context-group> within the <file> element. The optional crc attribute allows a verification of the data. The optional purpose attribute indicates to what use this context information is used; e.g. "match" indicates the context information is for memory lookups.

Required attributes:

None.

Optional attributes:

crc, name, purpose

Contents:

One or more <context> elements.

<context>

Context - The <context> element describes the context of a <source> within a <trans-unit> or a <alt-trans>. The purpose of this context information is to allow certain pieces of text to have different translations depending on where they came from. The translation of a piece of text may differ if it is a web form or a dialog or an Oracle form or a Lotus form for example. This information is thus required by a translator when working on the file. Likewise, the information may be used by any tool proposing to automatically leverage the text successfully.

The required context-type attribute indicates what the context information is; e.g. "recordtitle" indicates the name of a record in a database. The optional match-mandatory attribute indicates that translations of the <source> elements within the scope of this context must have the same context. The optional crc attribute allows a verification of the data.

Required attributes:

context-type.

Optional attributes:

match-mandatory , crc.

Contents:

Text, no standard elements.

<prop-group>

Property group - The <prop-group> element contains <prop> elements. Each <prop-group> element may be named, allowing different uses for each group. These uses can be controlled through the use of XML processing instructions.

Important: The <prop-group> element was DEPRECATED in version 1.1. Instead, use attributes defined in a namespace different from XLIFF. See the Extensibility section for more information.

Required attributes:

None.

Optional attributes:

name.

Contents:

One or more <prop> elements.

<prop>

Property - The <prop> element allows the tools to specify non-standard information in the XLIFF document. This information can be used by the tools that have produced the file or that translate the file or that do any other amount of processing specific to the producer.

Important: The <prop> element was DEPRECATED in version 1.1. Instead, use attributes defined in a namespace different from XLIFF. See the Extensibility section for more information.

Required attributes:

prop-type.

Optional attributes:

xml:lang.

Contents:

Tool-specific data or text, no standard elements.

3.2.3. Structural Elements

The structural elements specify the frame of a XLIFF document as well as contextual and processing information. The <source> element contains the extracted data and, possibly, inline elements.

<body>

File body - The <body> element contains the content from the file.

Required attributes:

None.

Optional attributes:

None.

Contents:

Zero, one or more <group> , <trans-unit>, <bin-unit> elements, in any order.

<group>

Group - The <group> element specifies a set of elements that should be processed together. For example: all the items of a menu, etc. Note that a <group> element can contain other <group> elements. The <group> element can be used to describe the hierarchy of the file.

The optional id attribute is used to uniquely identify the <group> within the same <file>. The optional datatype attribute specifies the data type of the content of the <group>; e.g. "winres" for Windows resources. The optional xml:space attribute is used to specify how white-spaces are to be treated within the <group>. The optional restype, resname, extradata, help-id, menu , menu-option, menu-name, coord, font, css-style, style, exstyle, and extype attributes describe the resources contained within the <group>. The optional translate attribute provides a default value for all <trans-unit> elements contained within the <group>. The optional reformat attribute specifies whether and which attributes can be modified for the <target> elements of the <group>. The optional maxbytes and minbytes attributes specify the required maximum and minimum number of bytes for the translation units within the <group>. The optional size-unit attribute determines the unit for the optional maxheight, minheight, maxwidth, and minwidth attributes, which limit the size of the resource described by the <group>. The optional charclass attribute restricts all translation units in the scope of the <group> to a subset of characters. The optional merged-trans attribute indicates if the group element contains merged <trans-unit> elements. The optional ts attribute was DEPRECATED in XLIFF 1.1. Lists of values for the datatype, restype, and size-unit attributes are provided by this specification.

Required attributes:

None.

Optional attributes:

id, datatype, xml:space, ts, restype, resname, extradata, help-id, menu, menu-option , menu-name, coord, font, css-style, style, exstyle, extype, translate, reformat , maxbytes, minbytes, size-unit, maxheight, minheight, maxwidth , minwidth, charclass, merged-trans, non-XLIFF attributes

Contents:

Zero, one or more <context-group> elements, followed by
Zero, one or more <count-group> elements, followed by
Zero, one or more <prop-group> elements, followed by
Zero, one or more <note> elements, followed by
Zero, one or more non-XLIFF elements, followed by
Zero, one or more <group>, <trans-unit>, <bin-unit> elements, in any order.

All <context-group>, <count-group>, <prop-group>, <note> and non-XLIFF elements pertain to the subsequent elements in the tree but can be overridden within a child element.

<trans-unit>

Translation unit - The <trans-unit> elements contains a <source>, <target> and associated elements.

The required id attribute is used to uniquely identify the <trans-unit> within all <trans-unit> and <bin-unit> elements within the same <file>. The optional approved attribute indicates whether the translation has been approved by a reviewer. The optional translate attribute indicates whether the <trans-unit> is to be translated. The optional reformat attribute specifies whether and which attributes can be modified for the <target> element of the <trans-unit> . The optional xml:space attribute is used to specify how white-spaces are to be treated within the <trans-unit>. The optional datatype attribute specifies the data type of the content of the <trans-unit>; e.g. "winres" for Windows resources. The optional ts attribute was DEPRECATED in XLIFF 1.1. The optional phase-name attribute references the phase that the <trans-unit> is in. The optional restype, resname, extradata, help-id, menu, menu-option, menu-name , coord, font, css-style, style, exstyle, and extype attributes describe the resource contained within the <trans-unit>. The optional maxbytes and minbytes attributes specify the required maximum and minimum number of bytes for the text inside the <source> and <target> elements of the <trans-unit>. The optional size-unit attribute determines the unit for the optional maxheight, minheight, maxwidth, and minwidth attributes, which limit the size of the resource described by the <trans-unit>. The optional charclass attribute restricts all <source> and <target> text in the scope of the <trans-unit> to a subset of characters. Lists of values for the datatype, restype, and size-unit attributes are provided by this specification. During translation the content of the <source> element may be duplicated into a <seg-source> element, in which additional segmentation related markup is introduced. See the Segmentation section for more information.

Required attributes:

id.

Optional attributes:

approved, translate, reformat, xml:space , datatype, ts, phase-name , restype, resname, extradata , help-id, menu, menu-option , menu-name, coord, font, css-style, style, exstyle, extype, maxbytes, minbytes , size-unit, maxheight, minheight, maxwidth, minwidth , charclass, non-XLIFF attributes

Contents:

One <source> element, followed by
Zero or one <seg-source> element, followed by
Zero or one <target> element, followed by
Zero, one or more <context-group>, <count-group>, <prop-group>, <note>, <alt-trans> elements, in any order, followed by
Zero, one or more non-XLIFF elements.

All child elements of <trans-unit> pertain to their sibling <source> element.
While for backward compatibility reasons no order is enforced for the elements before the non-XLIFF elements, the recommended order is the one in which they are listed here.

<source>

Source text - The <source> element is used to delimit a unit of text that could be a paragraph, a title, a menu item, a caption, etc. The content of the <source> is generally the translatable text, depending upon the translate attribute of the parent <trans-unit>. The optional xml:lang attribute is used to specify the content language of the <source>; this should always match source-language as a child of <trans-unit> but can vary as a child of <alt-trans>. The optional ts attribute was DEPRECATED in XLIFF 1.1.

Required attributes:

None.

Optional attributes:

xml:lang, ts, non-XLIFF attributes

Contents:

Text,
Zero, one or more of the following elements: <g>, <x/>, <bx/>, <ex/>, <bpt> , <ept>, <ph>, <it> , <mrk>, in any order.

<target>

Target - The <target> element contains the translation of the content of the sibling <source> element. The optional state and state-qualifier attributes indicate in which state the <target> is. The optional phase-name attribute references the <phase> in which the <target> was last modified. The optional xml:lang attribute is used to specify the content language of the <target>; this should always match target-language as a child of <trans-unit> but can vary as a child of <alt-trans> . The optional coord, font, css-style, style, and exstyle attributes describe the resource contained within the <target>; these are the modifiable attributes for the <trans-unit> depending upon the reformat attribute of the parent <trans-unit>. The optional equiv-trans describes if the target language translation is a direct equivalent of the source text. The optional ts attribute was DEPRECATED in XLIFF 1.1. The restype attribute is DEPRECATED in XLIFF 1.2, since <target> will always be of the same restype as its parent <trans-unit> or <alt-trans>. A list of preferred values for the restype, state, and state-qualifier attributes are provided by this specification.

Required attributes:

None.

Optional attributes:

state, state-qualifier, phase-name, xml:lang, ts, restype, resname, coord, font, css-style, style, exstyle, equiv-trans, non-XLIFF attributes

Contents:

Text,
Zero, one or more of the following elements: <g>, <x/>, <bx/>, <ex/>, <bpt> , <ept>, <ph>, <it> , <mrk>, in any order.

<alt-trans>

Translation match - The <alt-trans> element contains possible translations in <target> elements along with optional context, notes, etc. The optional mid attribute indicates that the <alt-trans> applies only to a specific <mrk mtype="seg"> segment in the <seg-source> element of the <trans-unit>. (See the Segmentation section for further details.) The optional match-quality attribute provides a value indicating the exactness of the match between the <source> of the <alt-trans> and that of the <source> element of the parent <trans-unit>; e.g. "90%". The optional tool-id attribute accepts the id of the <tool> used to generate this <alt-trans>. The optional crc attribute allows a verification of the data. The optional xml:lang attribute is used to specify the content language of the <alt-trans>. The optional xml:space attribute is used to specify how white-spaces are to be treated within the <alt-trans>. The optional datatype attribute specifies the data type of the content of the <alt-trans>; e.g. "winres" for Windows resources. The optional restype, resname, extradata, help-id, menu, menu-option, menu-name, coord, font, css-style, style, exstyle, and extype attributes describe the resource contained within the <alt-trans>. The optional origin attribute specifies where the alternate translation comes from; e.g. a previous version of the product. The tool and ts attributes were DEPRECATED in XLIFF 1.1. Multiple <target> elements within a single <alt-trans> are DEPRECATED in XLIFF 1.2. A list of values for the datatype and restype attributes are provided by this specification.

Required attributes:

None.

Optional attributes:

mid, match-quality, tool, tool-id , crc, xml:lang, datatype , xml:space, ts, restype, resname, extradata, help-id , menu, menu-option, menu-name, coord, font, css-style, style, exstyle, extype, origin, phase-name , alttranstype, non-XLIFF attributes

Contents:

Zero or one <source> element, followed by
Zero or one <seg-source> element, followed by
One <target> element, followed by
Zero, one or more <context-group>, <prop-group>, <note> elements, in any order, followed by
Zero, one or more non-XLIFF elements.

All child elements of <alt-trans> pertain to their sibling <target> element.
While for backward compatibility reasons no order is enforced for the elements before the non-XLIFF elements, the recommended order is the one in which they are listed here.
Although not enforced, it is recommended to adopt the convention that more recent <alt-trans> elements appear before older ones in order to define the order that changes are introduced.

<bin-unit>

Binary unit - The <bin-unit> element contains a binary object that may or may not be translatable. The required id attribute is used to uniquely identify the <bin-unit> within all <trans-unit> and <bin-unit> elements within the same <file>. The required mime-type attribute specifies the data type of the binary object based on RFC 1341. The optional approved attribute indicates whether the translation has been approved by a reviewer. The optional translate attribute indicates whether the <bin-unit> is to be translated. The optional reformat attribute specifies whether and which attributes can be modified for the <bin-target> element of the <bin-unit>. The optional ts attribute was DEPRECATED in XLIFF 1.1. The optional phase-name attribute references the phase that the <bin-unit> is in. The optional restype and resname attributes describe the resource contained within the <bin-unit>. A list of values for the restype attribute is provided by this specification.

Required attributes:

id, mime-type.

Optional attributes:

approved, translate, reformat, ts, phase-name, restype, resname, non-XLIFF attributes

Contents:

One<bin-source> element, followed by
Zero or one <bin-target> element, followed by
Zero, one or more <context-group>, <count-group>, <prop-group>, <note>, <trans-unit> elements, in any order, followed by
Zero, one or more non-XLIFF elements.

All child elements of <bin-unit> pertain to their sibling <bin-source> element.
While for backward compatibility reasons no order is enforced for the elements before the non-XLIFF elements, the recommended order is the one in which they are listed here.

<bin-source>

Binary source -The <bin-source> element is the container for the binary source data. The optional ts attribute was DEPRECATED in XLIFF 1.1.

Required attributes:

None.

Optional attributes:

ts, non-XLIFF attributes

Contents:

One of <internal-file> or <external-file>.

<bin-target>

Binary target -The <bin-target> element is the container for the translated version of the binary data. The optional mime-type attribute specifies the data type of the binary object based on RFC 1341. The optional ts attribute was DEPRECATED in XLIFF 1.1. The optional state and state-qualifier attributes indicate in which state the <bin-target> is. The optional phase-name attribute references the phase that the <bin-target> is in. The optional restype and resname attributes describe the resource contained within the <bin-target>. A list of values for the restype, state, and state-qualifier attributes are provided by this specification.

Required attributes:

None.

Optional attributes:

mime-type, ts, state, phase-name , restype, resname, state-qualifier, non-XLIFF attributes

Contents:

One of <internal-file> or <external-file>.

<seg-source>

Source text - The <seg-source> element is used to maintain a working copy of the <source> element, where markup such as segmentation can be introduced without affecting the actual <source> element content. The content of the <seg-source> is generally the translatable text, typically divided into segments through the use of <mrk mtype="seg"> elements. See the Segmentation section for more information. As with the <source> element, the optional xml:lang attribute is used to specify the content language of the <seg-source>; this should always match source-language as a child of <trans-unit> but can vary as a child of <alt-trans>. The optional ts attribute was DEPRECATED in XLIFF 1.1.

Required attributes:

None.

Optional attributes:

xml:lang, ts, non-XLIFF attributes

Contents:

Text,
Zero, one or more of the following elements: <g>, <x/>, <bx/>, <ex/>, <bpt> , <ept>, <ph>, <it> , <mrk>, in any order.

3.2.4. Inline Elements

The inline elements are the elements that can appear inside the <source> and <target> elements. They enclose or replace any formatting or control code that is not text, but resides within the text unit.

<g>

Generic group placeholder - The <g> element is used to replace any inline code of the original document that has a beginning and an end, does not overlap other paired inline codes, and can be moved within its parent structural element. The required id attribute is used to reference the replac