<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "docbook/docbookx.dtd" >
<article status="OASIS Standard">
  <articleinfo>
    <title>XLIFF Version 2.0</title>

    <releaseinfo role="cvs">$Id: spectools-docbook-template-wd03.xml,v 1.4
    2010/07/08 12:28:15 admin Exp$</releaseinfo>
    <releaseinfo role="track">Standards Track Work Product</releaseinfo>


    <productname class="trade">xliff-core-v2.0</productname>

    <productnumber>os</productnumber>

    <releaseinfo role="OASIS-specification-this-authoritative">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html</releaseinfo>
    <releaseinfo role="OASIS-specification-this">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-this">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.xml</releaseinfo>

    <releaseinfo role="OASIS-specification-previous-authoritative">http://docs.oasis-open.org/xliff/xliff-core/v2.0/cos01/xliff-core-v2.0-cos01.html</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">http://docs.oasis-open.org/xliff/xliff-core/v2.0/cos01/xliff-core-v2.0-cos01.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-previous">http://docs.oasis-open.org/xliff/xliff-core/v2.0/cos01/xliff-core-v2.0-cos01.xml</releaseinfo>

    <releaseinfo role="OASIS-specification-latest-authoritative">http://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html</releaseinfo>
    <releaseinfo role="OASIS-specification-latest">http://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.pdf</releaseinfo>
    <releaseinfo role="OASIS-specification-latest">http://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.xml</releaseinfo>

    <releaseinfo role="committee"><ulink url="http://www.oasis-open.org/committees/xliff/">OASIS
    XML Localisation Interchange File Format (XLIFF) TC</ulink></releaseinfo>

    <authorgroup>
      <othercredit role="chair">
        <firstname>Bryan</firstname>

        <surname>Schnabel</surname>

        <affiliation>
          <orgname>Individual</orgname>

          <address format="linespecific"><email>bryan.s.schnabel@tektronix.com</email></address>
        </affiliation>
        <email>bryan.s.schnabel@tektronix.com</email>
      </othercredit>

      <editor>
        <firstname>Tom</firstname>
        <surname>Comerford</surname>
        <affiliation>
          <orgname>Individual</orgname>
          <address format="linespecific"><email>tom@supratext.com</email></address>
        </affiliation>
        <email>tom@supratext.com</email>

      </editor>

      <editor>
        <firstname>David</firstname>
        <surname>Filip</surname>
        <affiliation>
          <orgname><ulink url="http://www.localisation.ie/">Localisation Research Centre</ulink></orgname>
          <address format="linespecific"><email>davidf@ul.ie</email></address>
        </affiliation>
        <email>davidf@ul.ie</email>
      </editor>

      <editor>
        <firstname>Rodolfo</firstname>

        <othername role="initial">M.</othername>

        <surname>Raya</surname>

        <affiliation>
          <orgname><ulink url="http://maxprograms.com">Maxprograms</ulink></orgname>

          <address format="linespecific"><email>rmraya@maxprograms.com</email></address>
        </affiliation>
        <email>rmraya@maxprograms.com</email>
      </editor>

      <editor>
        <firstname>Yves</firstname>

        <surname>Savourel</surname>

        <affiliation>
          <orgname><ulink url="http://www.enlaso.com/">ENLASO Corporation</ulink></orgname>

          <address format="linespecific"><email>ysavourel@enlaso.com</email></address>
        </affiliation>
        <email>ysavourel@enlaso.com</email>
      </editor>


    </authorgroup>


    <pubdate>05 August 2014</pubdate>

    <copyright>
      <year>2014</year>

      <holder>OASIS Open, Inc. All Rights Reserved.</holder>
    </copyright>

    <legalnotice role="additional">
      <title>Additional artifacts</title>

      <para>This prose specification is one component of a Work Product that also includes:</para>

      <itemizedlist spacing="compact">
        <listitem>
          <para>
            XML schemas accessible from <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/</ulink>
          </para>
        </listitem>
      </itemizedlist>
      </legalnotice>

    <legalnotice role="related">
      <title>Related Work</title>

      <para>This specification replaces or supersedes:</para>

      <itemizedlist spacing="compact">
        <listitem>
          <para><emphasis>XLIFF Version 1.2.</emphasis> 1 February 2008. OASIS Standard. <ulink url="http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html">http://docs.oasis-open.org/xliff/v1.2/os/xliff-core.html</ulink></para>
        </listitem>
      </itemizedlist>

      <!-- <para>This specification is related to:</para>

      <itemizedlist spacing="compact">
        <listitem>
          <para>{related specifications}</para>
        </listitem>

        <listitem>
          <para>{related specifications}</para>
        </listitem>
      </itemizedlist> -->
    </legalnotice>

    <legalnotice role="namespaces">
      <title>Declared XML Namespaces</title>

      <itemizedlist spacing="compact">
        <listitem>
          <para>urn:oasis:names:tc:xliff:document:2.0</para>
        </listitem>

        <listitem>
          <para>urn:oasis:names:tc:xliff:matches:2.0</para>
        </listitem>

        <listitem>
          <para>urn:oasis:names:tc:xliff:glossary:2.0</para>
        </listitem>
        <listitem>
          <para>urn:oasis:names:tc:xliff:fs:2.0</para>
        </listitem>
        <listitem>
          <para>urn:oasis:names:tc:xliff:metadata:2.0</para>
        </listitem>
        <listitem>
          <para>urn:oasis:names:tc:xliff:resourcedata:2.0</para>
        </listitem>

        <listitem>
          <para>urn:oasis:names:tc:xliff:changetracking:2.0</para>
        </listitem>

        <listitem>
          <para>urn:oasis:names:tc:xliff:sizerestriction:2.0</para>
        </listitem>

        <listitem>
          <para>urn:oasis:names:tc:xliff:validation:2.0</para>
        </listitem>

      </itemizedlist>
    </legalnotice>

    <abstract>
      <para>This document defines version 2.0 of the XML Localisation 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 and
        among tools.</para>
    </abstract>

    <legalnotice role="status">
      <title>Status</title>

<!--       <para>{Describe the status and stability of the specification
      here.}</para> -->

      <para>This document was last revised or approved by the membership of OASIS on the above date. The
      level of approval is also listed above. Check the “Latest version” location noted above for possible later revisions of this document.</para>

      <para>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 "<ulink url="http://www.oasis-open.org/committees/comments/index.php?wg_abbrev=xliff">Send A Comment</ulink>"
      button on the Technical Committee's web page at <ulink url="http://www.oasis-open.org/committees/xliff/">http://www.oasis-open.org/committees/xliff/</ulink>.</para>

      <para>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 (<ulink url="http://www.oasis-open.org/committees/xliff/ipr.php">http://www.oasis-open.org/committees/xliff/ipr.php</ulink>).</para>

      <!-- 
      <para>The non-normative errata page for this specification is located at <ulink
          url="http://www.oasis-open.org/committees/xliff/"
          >http://www.oasis-open.org/committees/xliff/</ulink>.</para>
       -->
    </legalnotice>

    <legalnotice role="citation">
      <title>Citation format</title>

      <para>When referencing this specification the following citation format should be used:</para>


      <para><citation>XLIFF-2.0</citation></para>

      <para><emphasis>XLIFF Version 2.0</emphasis>. Edited by Tom Comerford, David Filip,
        Rodolfo M. Raya, and Yves Savourel. 05 August 2014. OASIS Standard.  <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/xliff-core-v2.0-os.html</ulink>. Latest
        version: <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html</ulink>. </para>

      <!-- 
      <para>The non-normative errata page for this specification is located at <ulink
          url="http://www.oasis-open.org/committees/xliff/"
          >http://www.oasis-open.org/committees/xliff/</ulink>.</para>
       -->
    </legalnotice>



    <legalnotice role="notices">
      <title>Notices</title>

      <para>Copyright © OASIS<!-- ® --> Open 2014. All Rights Reserved.</para>

      <para>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 <ulink url="http://www.oasis-open.org/policies-guidelines/ipr">Policy</ulink> may be found at the OASIS
      website.</para>

      <para>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.</para>

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

      <para>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.</para>

      <para>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.</para>

      <para>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.</para>

      <para>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.</para>

      <para>The name "OASIS" is a trademark of <ulink url="http://www.oasis-open.org">OASIS</ulink>, 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
      <ulink url="http://www.oasis-open.org/policies-guidelines/trademark">http://www.oasis-open.org/policies-guidelines/trademark</ulink>
      for above guidance.</para>
    </legalnotice>
  </articleinfo>

  <section>
    <title>Introduction</title>

    <para>XLIFF is the <emphasis>XML Localisation Interchange File Format</emphasis> designed by a
      group of  multilingual content publishers, software providers, localization service providers,
      localization tools providers and researchers. It is intended to give any multilingual content
      owner a single interchange file format that can be understood by any localization provider,
      using any conformant localization tool. While the primary focus is on being a lossless
      interchange format, usage of XLIFF as a processing format is neither encouraged nor
      discouraged or prohibited.</para>

    <para><emphasis>All text is normative unless otherwise labeled.</emphasis> The following common methods are used for
      labeling portions of this specification as informative and hence non-normative:
      <simplelist type="vert">
        <member> Appendices and sections marked as "(Informative)" or "Non-Normative" in
          title,</member>
        <member> Notes (sections with the "Note" title),</member>
        <member> Warnings (sections with the "Warning" title),</member>
        <member> Examples (mainly example code listings but also any inline examples or illustrative
          exemplary lists in otherwise normative text),</member>
        <member> Schema and other artifacts listings (the corresponding artifacts are normative, not
          their listings).</member>
      </simplelist>
    </para>


    <section>
      <title>Terminology</title>

      <section>
        <title>Key words</title>

        <para>The key words <glossterm>must</glossterm>, <glossterm>must not</glossterm>,
            <glossterm>required</glossterm>, <glossterm>shall</glossterm>, <glossterm>shall
            not</glossterm>, <glossterm>should</glossterm>, <glossterm>should not</glossterm>,
            <glossterm>recommended</glossterm>, <glossterm>may</glossterm>, and
            <glossterm>optional</glossterm> are to be interpreted as described in <xref linkend="rfc2119"/>.</para>
      </section>

      <section>
        <title>Definitions</title>

        <variablelist>

          <varlistentry>
            <term>Agent</term>

            <listitem>
              <para>any application or tool that generates (creates), reads, edits, writes, processes, stores, renders or otherwise handles <firstterm>XLIFF Documents</firstterm>.</para>
              <para><firstterm>Agent</firstterm> is the most general application conformance target
                that subsumes all other specialized user agents disregarding whether they are
                defined in this specification or not.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Enrich</term>
            <term>Enriching</term>
            <listitem>
              <para> the process of associating module and extension based metadata and resources
                with the <firstterm>Extracted</firstterm> XLIFF payload </para>
              <itemizedlist>
                <title>Processing Requirements</title>
              <listitem><para>
                <firstterm>Enriching</firstterm> <glossterm>may</glossterm> happen at the time of <firstterm>Extraction</firstterm>.
              </para></listitem>
              </itemizedlist>
              <note><para><firstterm>Extractor</firstterm> knowledge of the native format is not assumed while <firstterm>Enriching</firstterm>.</para></note>
            </listitem>
          </varlistentry>

<varlistentry>
  <term>Enricher</term>
  <term>Enricher Agent</term>
  <listitem><para>any <firstterm>Agent</firstterm> that performs the <firstterm>Enriching</firstterm> process
  </para></listitem>
</varlistentry>

          <varlistentry>
            <term>Extract</term>
            <term>Extraction</term>
            <listitem>
              <para>the process of encoding localizable content from a native content or User Interface format as XLIFF payload, so that localizable parts of the content
                in the source language are available for <firstterm>Translation</firstterm> into the target language along with the necessary context information
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Extractor</term>
            <term>Extractor Agent</term>

            <listitem>
              <para>any <firstterm>Agent</firstterm> that performs the <firstterm>Extraction</firstterm> process

              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Merge</term>
            <term>Merging</term>

            <listitem>
              <para>the process of importing XLIFF payload back to the originating native format, based on the <emphasis>full knowledge</emphasis> of the <firstterm>Extraction</firstterm> mechanism, so that the localized content or User Interface strings
                replace the source language in the native format
              </para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Merger</term>
            <term>Merger Agent</term>

            <listitem>
              <para>an <firstterm>Agent</firstterm> that performs the <firstterm>Merge</firstterm> process

              </para>

              <warning><para>
                Unless specified otherwise, any <firstterm>Merger</firstterm> is deemed to have the same knowledge of the native format
                as the <firstterm>Extractor</firstterm> throughout the specification.
                </para>
                <para><firstterm>Mergers</firstterm> independent of  <firstterm>Extractors</firstterm> can succeed, but it is out of scope of this specification to specify interoperability
                for <firstterm>Merging</firstterm> back without the full  <firstterm>Extractor</firstterm> knowledge of the native format.
              </para></warning>
            </listitem>

          </varlistentry>

          <varlistentry>
            <term>Modify</term>
            <term>Modification</term>
            <listitem>
              <para>
                the process of changing core and module XLIFF structural and inline elements that were previously created by other <firstterm>Writers</firstterm>
               </para>
              <itemizedlist>
                <title>Processing Requirements</title>
                <listitem><para>
                  XLIFF elements <glossterm>may</glossterm> be <firstterm>Modified</firstterm> 	and <firstterm>Enriched</firstterm> at the same time.
                  </para></listitem>
              </itemizedlist>
              <note><para><firstterm>Extractor</firstterm> or <firstterm>Enricher</firstterm> knowledge of the native format is not assumed while <firstterm>Modifying</firstterm>.</para></note>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Modifier</term>
            <term>Modifier Agent</term>

            <listitem>
              <para>an <firstterm>Agent</firstterm> that performs the <firstterm>Modification</firstterm> process

              </para>


            </listitem>

          </varlistentry>


          <!--  The Reader defintion was not really needed, since such an Agent (that ONLY reads) practically does not exist and the PR for Redaers are well covered by the use of Agent
          <varlistentry>
            <term>Reader</term>
            <term>Reader Agent</term>

            <listitem>
              <para>an <firstterm>Agent</firstterm> that only renders <firstterm>XLIFF Documents</firstterm> provided by other <firstterm>Writers</firstterm>.

              </para>

              <note><para> Since XLIFF is intended as an exchange format rather than a processing format, many
              applications will need to generate <firstterm>XLIFF Documents</firstterm> from
              their internal processing formats, even in cases when they are processing
              <firstterm>XLIFF Documents</firstterm> created by another
              <firstterm>Extractor</firstterm>. </para></note>

             </listitem>

          </varlistentry>
           -->

          <varlistentry>
            <term>Translation</term>
            <term>Translate</term>

            <listitem>
              <para>a rendering of the meaning of the source text, expressed in the target language</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>Writer</term>
            <term>Writer Agent</term>

            <listitem>
              <para>an <firstterm>Agent</firstterm> that creates, generates, or otherwise writes an
                  <firstterm>XLIFF Document</firstterm> for whatever purpose, including but not
                limited to <firstterm>Extractor</firstterm>, <firstterm>Modifier</firstterm>, and
                  <firstterm>Enricher</firstterm>
                <firstterm>Agents</firstterm>. </para>

              <note><para>
               Since XLIFF is intended as an exchange format rather than a processing format, many applications will need
               to generate <firstterm>XLIFF Documents</firstterm> from their internal processing formats, even in cases when they are processing <firstterm>XLIFF Documents</firstterm>
                created by another <firstterm>Extractor</firstterm>.
              </para></note>
            </listitem>


          </varlistentry>






        </variablelist>
      </section>

      <section>
        <title>Key concepts</title>

        <variablelist>
          <varlistentry>
            <term>XLIFF Core</term>

            <listitem>
              <para>The core of XLIFF 2.0 consists of the minimum set of XML
              elements and attributes required to (a) prepare a document that
              contains text extracted from one or more files for localization,
              (b) allow it to be completed with the translation of the
              extracted text, and (c) allow the generation of <firstterm>Translated</firstterm>
              versions of the original document.</para>

              <para>The XML namespace that corresponds to the core subset of XLIFF 2.0 is
              <code>"urn:oasis:names:tc:xliff:document:2.0"</code>.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>XLIFF-defined (elements and attributes)</term>
            <listitem><para>The following is the list of allowed schema URN prefixes for <firstterm>XLIFF-defined</firstterm> elements and attributes:</para>
              <simplelist type="vert">
                <member><code>urn:oasis:names:tc:xliff:</code></member>
              </simplelist>

              <para>However, the following namespaces are NOT considered
                  <firstterm>XLIFF-defined</firstterm> for the purposes of the XLIFF 2.0
                specification:</para>
              <simplelist type="vert">
                <member><code>urn:oasis:names:tc:xliff:document:1.0</code></member>
                <member><code>urn:oasis:names:tc:xliff:document:1.1</code></member>
                <member><code>urn:oasis:names:tc:xliff:document:1.2</code></member>
              </simplelist>
            <para>Elements and attributes from other namespaces are not <firstterm>XLIFF-defined</firstterm>.</para>
            </listitem>


          </varlistentry>

          <varlistentry>
            <term>XLIFF Document</term>

            <listitem>
              <para>Any XML document that declares the namespace
                  <code>"urn:oasis:names:tc:xliff:document:2.0"</code> as its main namespace, has
                  <link linkend="xliff"><code>&lt;xliff&gt;</code></link> as the root element and complies with the XML
                Schemas and the declared Constraints that are part of this specification.</para>
            </listitem>
          </varlistentry>

          <varlistentry>
            <term>XLIFF Module</term>

            <listitem>
              <para>A module is an <glossterm>optional</glossterm> set of XML elements and attributes
              that stores information about a process applied to an <firstterm>XLIFF
                Document</firstterm> and the data incorporated into the document as result
              of that process.</para>

              <para>Each official module defined for XLIFF 2.0 has its grammar
              defined in an independent XML Schema with a separate
              namespace.</para>
            </listitem>
          </varlistentry>
        </variablelist>
      </section>
    </section>

    <section>
      <title>Normative References</title>

      <!-- note that at least one paragraph (and it can be empty) is needed to satisfy the DocBook document model -->

      <para/>

      <bibliography>
        <title/>

        <bibliomixed id="bcp47"><abbrev>BCP 47</abbrev>
        M. Davis, <title>Tags for Identifying Languages</title>, <citetitle> <ulink url="http://tools.ietf.org/html/bcp47">http://tools.ietf.org/html/bcp47</ulink>
        </citetitle> IETF (Internet Engineering Task Force).</bibliomixed>

        <bibliomixed id="HTML5"><abbrev>HTML5</abbrev>
          W3C, <title>HTML5. A vocabulary and associated APIs for HTML and XHTML</title>, <citetitle> <ulink url="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</ulink>
          </citetitle> W3C Candidate Recommendation 17 December 2012.</bibliomixed>

        <bibliomixed id="bib_datetime"><abbrev>NOTE-datetime</abbrev>
          M. Wolf, C. Wicksteed, <title>Date and Time Formats</title>, <citetitle> <ulink url="http://www.w3.org/TR/NOTE-datetime">http://www.w3.org/TR/NOTE-datetime</ulink>
          </citetitle> W3C Note, 15th Setember 1997.</bibliomixed>


        <bibliomixed id="rfc2119"><abbrev>RFC 2119</abbrev>
        S. Bradner, <title>Key words for use in RFCs to Indicate Requirement
        Levels</title>, <citetitle> <ulink url="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</ulink>
        </citetitle> IETF (Internet Engineering Task Force) RFC 2119, March
        1997.</bibliomixed>

        <bibliomixed id="uax9"><abbrev>UAX #9</abbrev>
          M. Davis, <title>UNICODE BIDIRECTIONAL ALGORITHM</title>, <citetitle> <ulink url="http://www.unicode.org/reports/tr9/">http://www.unicode.org/reports/tr9/</ulink>
          </citetitle> Unicode Bidirectional Algorithm.</bibliomixed>

        <bibliomixed id="uax15"><abbrev>UAX #15</abbrev>
        M. Davis, K. Whistler, <title>UNICODE NORMALIZATION FORMS</title>, <citetitle> <ulink url="http://www.unicode.org/reports/tr15/">http://www.unicode.org/reports/tr15/</ulink>
        </citetitle> Unicode Normalization Forms.</bibliomixed>

        <bibliomixed id="Unicode"><abbrev>Unicode</abbrev>
          The Unicode Consortium, <title>The Unicode Standard</title>, <citetitle> <ulink url="http://www.unicode.org/versions/latest/">http://www.unicode.org/versions/latest/</ulink>
          </citetitle> Mountain View, CA: The Unicode Consortium, 2012.</bibliomixed>

        <bibliomixed id="bib_XML"><abbrev>XML</abbrev>
          W3C, <title>Extensible Markup Language (XML) 1.0</title>, <citetitle> <ulink url="http://www.w3.org/TR/xml/">http://www.w3.org/TR/xml/</ulink>
          </citetitle> (Fifth Edition) W3C Recommendation 26 November 2008.</bibliomixed>
        <bibliomixed id="xml_namespace"><abbrev>XML namespace</abbrev> W3C, <title>Schema document
            for namespace http://www.w3.org/XML/1998/namespace</title>
          <citetitle><ulink url="http://www.w3.org/2001/xml.xsd">http://www.w3.org/2001/xml.xsd</ulink></citetitle> [<edition><ulink url="http://www.w3.org/2009/01/xml.xsd">http://www.w3.org/2009/01/xml.xsd</ulink>]</edition>. at <edition><ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd</ulink></edition>
          in this distribution</bibliomixed>

        <bibliomixed id="XMLSchema2"><abbrev>XML Schema Datatypes</abbrev> W3C, <title>XML Schema
            Part 2: Datatypes</title>, <citetitle>
            <ulink url="http://www.w3.org/TR/xmlschema-2/">http://www.w3.org/TR/xmlschema-2/</ulink>
          </citetitle> (Second Edition) W3C Recommendation 28 October 2004.</bibliomixed>


      </bibliography>
    </section>

    <section>
      <title>Non-Normative References</title>

      <!-- note that at least one paragraph (and it can be empty) is needed to satisfy the DocBook document model -->

      <para/>

      <bibliography>
        <title/>

        <bibliomixed id="ITS20"><abbrev>ITS</abbrev> MultilingualWeb-LT WG
            <title>Internationalization Tag Set (ITS) Version 2.0</title>, 29 October 2013, <citetitle>
            <ulink url="http://www.w3.org/TR/its20/">http://www.w3.org/TR/its20/</ulink>
          </citetitle> W3C Recommendation.</bibliomixed>


        <bibliomixed id="biblio_ldml"><abbrev>LDML</abbrev> <title>Unicode
        Locale Data Markup Language</title> <citetitle> <ulink url="http://unicode.org/reports/tr35/">http://unicode.org/reports/tr35/</ulink>
        </citetitle></bibliomixed>

        <bibliomixed id="biblio_srx"><abbrev>SRX</abbrev> <title>Segmentation Rules eXchange</title> <citetitle> <ulink url="http://www.gala-global.org/oscarStandards/srx/">http://www.gala-global.org/oscarStandards/srx/</ulink>
        </citetitle></bibliomixed>

        <bibliomixed id="uax29"><abbrev>UAX #29</abbrev>
          M. Davis, <title>UNICODE TEXT SEGMENTATION</title>, <citetitle> <ulink url="http://www.unicode.org/reports/tr29/">http://www.unicode.org/reports/tr29/</ulink>
          </citetitle> Unicode text Segmentation.</bibliomixed>

        <bibliomixed id="biblio_xmli18nbp"><abbrev>XML I18N BP</abbrev>
          <title>Best Practices for XML Internationalization</title>, 13
          February 2008, <citetitle> <ulink url="http://www.w3.org/TR/xml-i18n-bp/">http://www.w3.org/TR/xml-i18n-bp/</ulink>
          </citetitle> W3C Working Group.</bibliomixed>

      </bibliography>
    </section>
  </section>
  <section>
    <title>Conformance</title>
   
   <orderedlist inheritnum="ignore" continuation="restarts">
       <listitem>
           <orderedlist inheritnum="ignore" continuation="restarts">
               <title>
           Document Conformance</title>
               <listitem>
    <para>XLIFF is an XML vocabulary, therefore conformant <firstterm>XLIFF Documents</firstterm>
        <glossterm>must</glossterm> be well formed and valid <link linkend="bib_XML">[XML]</link> documents.</para>
               </listitem>
               <listitem>
    
                   <para>Conformant <firstterm>XLIFF Documents</firstterm> <glossterm>must</glossterm> be valid instances of the official
            <link linkend="core_schema">Core XML Schema</link>
        that is part of this XLIFF specification.</para>
               </listitem>
               <listitem>
    
    <para> As not all aspects of the XLIFF specification can be expressed in terms of XML Schemas,
                        conformant <firstterm>XLIFF Documents</firstterm>
                        <glossterm>must</glossterm> also comply with all relevant elements and
                        attributes definitions, normative usage descriptions, and Constraints
                        specified in this specification document.</para>
               </listitem>
               <listitem>
                <para><firstterm>XLIFF Documents</firstterm> <glossterm>may</glossterm> contain custom extensions, as defined in the
                   <link linkend="extensions">Extension
                       Mechanisms</link> section.
               </para>
               </listitem> 
           </orderedlist>
       </listitem>
       <listitem>
               <orderedlist inheritnum="ignore" continuation="restarts">
                   <title>
                       Application Conformance</title>
                <listitem>                
    <para>XLIFF <firstterm>Writers</firstterm>
                        <glossterm>must</glossterm> create conformant <firstterm>XLIFF
                            Documents</firstterm> to be considered XLIFF compliant.</para>
                </listitem>
                <listitem>
                           <para>
        <firstterm>Agents</firstterm> processing conformant <firstterm>XLIFF Documents</firstterm> that
        contain custom extensions are not <glossterm>required</glossterm> to understand and process
        non-XLIFF elements or attributes. However, conformant applications
            <glossterm>should</glossterm> preserve existing custom extensions when processing
                               conformant <firstterm>XLIFF Documents</firstterm>, provided that the elements
                               that contain custom extensions are not
        removed according to XLIFF Processing Requirements or the extension's own processing
        requirements.</para>
                </listitem>
                    <listitem>
                        <para>All <firstterm>Agents</firstterm>
                        <glossterm>must</glossterm> comply with Processing Requirements for
                        otherwise unspecified <firstterm>Agents</firstterm> or without a
                        specifically set target <firstterm>Agent</firstterm>.</para> 
                    </listitem>
                                      
                   <listitem>
                       <para> Specialized <firstterm>Agents</firstterm> defined in this
                        specification - this is <firstterm>Extractor</firstterm>,
                            <firstterm>Merger</firstterm>, <firstterm>Writer</firstterm>,
                            <firstterm>Modifier</firstterm>, and <firstterm>Enricher</firstterm>
                        <firstterm>Agents</firstterm> - <glossterm>must</glossterm> comply with the
                        Processing Requirements targeting their specifically defined type of
                            <firstterm>Agent</firstterm> on top of Processing Requirements targeting
                        all <firstterm>Agents</firstterm> as per point c. above.</para>
                   </listitem>
                   <listitem>
                    <para>XLIFF is a format explicitly designed for exchanging data among various
                            <firstterm>Agents</firstterm>. Thus, a conformant XLIFF application
                            <glossterm>must</glossterm> be able to accept <firstterm>XLIFF
                            Documents</firstterm> it had written after those <firstterm>XLIFF
                            Documents</firstterm> were <firstterm>Modified</firstterm> or
                            <firstterm>Enriched</firstterm> by a different application, provided
                        that:</para>
                        <orderedlist inheritnum="ignore" continuation="restarts">
                        <listitem>
                            <para>The processed files are conformant <firstterm>XLIFF Documents</firstterm>,</para>
                        </listitem>
                            <listitem>
                                <para>in a state compliant with all relevant Processing Requirements.</para>
                            </listitem>  
                        </orderedlist>
                            
                </listitem>
            
                   
   </orderedlist>
       </listitem>
       <listitem>
                       <orderedlist inheritnum="ignore" continuation="restarts">
                           <title>
                               Backwards Compatibility</title>
                           <listitem>
    <para> Conformant applications are NOT <glossterm>required</glossterm> to support XLIFF 1.2 or
        previous Versions. </para>
                           </listitem>
                       </orderedlist>
                   </listitem>
   </orderedlist>
    
    <note><para><firstterm>XLIFF Documents</firstterm> conformant to this specification are not and cannot be conformant to XLIFF 1.2 or earlier versions. If an application needs to support for whatever business reason both XLIFF 2.0 and XLIFF 1.2, these will need to be supported as separate functionalities.
    </para></note>
</section>
  <section id="fragid">
  <title>Fragment Identification</title>
  <para>Because <firstterm>XLIFF Documents</firstterm> do not follow the usual behavior of XML documents when it comes to element identifiers, this specification
    defines how <firstterm>Agents</firstterm> <glossterm>must</glossterm> interpret the fragment identifiers in IRIs pointing to <firstterm>XLIFF Documents</firstterm>.</para>
  <note>
    <para>Note that some identifiers may change during the localization process. For example <link linkend="data"><code>&lt;data&gt;</code></link> elements may be re-grouped or not depending on how tools treat
     identical original data.</para>
  </note>
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>A fragment identifier <glossterm>must</glossterm> match the following format:</para>
      <programlisting format="linespecific">&lt;expression&gt;      ::= "#" ["/"] &lt;selector&gt; {&lt;selectorSeparator&gt; &lt;selector&gt;}
&lt;selector&gt;        ::= [&lt;prefix&gt; &lt;prefixSeparator&gt;] &lt;id&gt;
&lt;prefix&gt;          ::= NMTOKEN
&lt;id&gt;              ::= NMTOKEN
&lt;prefixSeparator&gt; ::= "="
&lt;selectorSeparator&gt;  ::= "/"</programlisting>
    </listitem>
    <listitem>
      <para>There <glossterm>must not</glossterm> be two identical prefixes in the expression.</para>
    </listitem>
    <listitem>
      <para>When used, the following selectors <glossterm>must</glossterm> be declared in this order: file selector, group selector and unit selector.</para>
    </listitem>
    <listitem>
      <para>The selectors for modules or extensions, <link linkend="note"><code>&lt;note&gt;</code></link>, <link linkend="segment"><code>&lt;segment&gt;</code></link> or <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> or source inline elements, target inline elements and
        <link linkend="data"><code>&lt;data&gt;</code></link> have the following constraints:</para>
      <itemizedlist>
        <listitem><para>Only one of them <glossterm>may</glossterm> be used in the expression.</para></listitem>
        <listitem><para>The one used <glossterm>must</glossterm> be the last selector of the expression.</para></listitem>
      </itemizedlist>
    </listitem>
  </itemizedlist>
  <warning><para>Please note that due to the above Constraints, referencing fragments using third party
      namespaces within <firstterm>Modules</firstterm> or extensions (including but not limited to
        <firstterm>XLIFF Core</firstterm> or the Metadata Module) is not possible. This is to
      restrict the complexity of the fragment identification mechanism, as it would otherwise have
      potentially unlimited depth.</para></warning>
  <section>
    <title>Selectors for Core Elements</title>
    <itemizedlist>
      <listitem><para>The prefix <code>f</code> indicates a <link linkend="file"><code>&lt;file&gt;</code></link> id and the value of that id is unique among all <link linkend="file"><code>&lt;file&gt;</code></link> <code>id</code> attribute values within the enclosing <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para></listitem>

      <listitem><para>The prefix <code>g</code> indicates a <link linkend="group"><code>&lt;group&gt;</code></link> id and the value of that id is unique among all <link linkend="group"><code>&lt;group&gt;</code></link> <code>id</code> attribute values within the enclosing  <link linkend="file"><code>&lt;file&gt;</code></link> element.</para></listitem>

      <listitem><para>The prefix <code>u</code> indicates a <link linkend="unit"><code>&lt;unit&gt;</code></link> id and the value of that id is unique among all <link linkend="unit"><code>&lt;unit&gt;</code></link> <code>id</code> attribute values within the enclosing  <link linkend="file"><code>&lt;file&gt;</code></link> element.</para></listitem>

      <listitem><para>The prefix <code>n</code> indicates a <link linkend="note"><code>&lt;note&gt;</code></link> id and the value of that id is unique among all <link linkend="note"><code>&lt;note&gt;</code></link> <code>id</code> attribute values within the immediate enclosing
        <link linkend="file"><code>&lt;file&gt;</code></link>,
        <link linkend="group"><code>&lt;group&gt;</code></link>, or
        <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para></listitem>

      <listitem><para>The prefix <code>d</code> indicates a <link linkend="data"><code>&lt;data&gt;</code></link> id and the value of that id is unique among all <link linkend="data"><code>&lt;data&gt;</code></link> <code>id</code> attribute values within the enclosing
        <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para></listitem>

      <listitem><para>The prefix <code>t</code> indicates an id for an inline element in the <link linkend="target"><code>&lt;target&gt;</code></link> element and the value of that id is unique within the
        enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element (with the exception of the matching inline elements in the <link linkend="source"><code>&lt;source&gt;</code></link>).</para></listitem>

      <listitem><para>No prefix indicates an id for a <link linkend="segment"><code>&lt;segment&gt;</code></link> or an <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> or an inline element in the <link linkend="source"><code>&lt;source&gt;</code></link> element and the value of that id
        is unique within the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element (with the exception of the matching inline elements in the <link linkend="target"><code>&lt;target&gt;</code></link>).</para></listitem>
    </itemizedlist>
  </section>
  <section id="fragid-modandext">
    <title>Selectors for Modules and Extensions</title>
    <para>A selector for a module or an extension uses a registered prefix and the value of that id is unique within the immediate enclosing
      <link linkend="file"><code>&lt;file&gt;</code></link>,
      <link linkend="group"><code>&lt;group&gt;</code></link> or <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    <itemizedlist>
      <title>Constraints</title>
      <listitem><para>The prefix of a module or an extension <glossterm>must</glossterm> be an NMTOKEN longer than 1
          character and <glossterm>must</glossterm> be defined in the module or extension
          specification.</para></listitem>
      <listitem><para>The prefix of a module or an extension <glossterm>must</glossterm> be registered with the
          XLIFF TC.</para></listitem>
      <listitem><para>A given module or extension namespace URI <glossterm>must</glossterm> be associated with a single prefix.</para></listitem>
      <listitem><para>A prefix <glossterm>may</glossterm> be associated with more than one namespace URI (to allow
          for example different versions of a given module or extension to use the same
          prefix).</para></listitem>
    </itemizedlist>
    <para>See also the <link linkend="ext-constraints">constraints related to how IDs need to be specified in
      extensions</link> (which applies for modules as well).</para>
  </section>
  <section>
    <title>Relative References</title>
    <para>Fragment identifiers that do not start with a character <code>/</code> (U+002F) are relative to their location in the document,
      or to the document being processed.</para>
    <para>Any unit, group or file selector missing to resolve the relative reference is obtained from the immediate enclosing unit, group or file elements.</para>
  </section>
  <section id="fragid-example">
    <title>Examples</title>
    <para>Given the following XLIFF document:</para>
    <programlisting format="linespecific">&lt;xliff xmlns="urn:oasis:names:tc:xliff:document:2.0" version="2.0"
 srcLang="en" trgLang="fr"&gt;
 &lt;file id="f1"&gt;
  &lt;notes&gt;
   &lt;note id="n1"&gt;note for file.&lt;/note&gt;
  &lt;/notes&gt;
  &lt;unit id="u1"&gt;
   &lt;my:elem xmlns:my="myNamespaceURI" id="x1"&gt;data&lt;/my:elem&gt;
   &lt;notes&gt;
    &lt;note id="n1"&gt;note for unit&lt;/note&gt;
   &lt;/notes&gt;
   &lt;segment id="s1"&gt;
    &lt;source&gt;&lt;pc id="1"&gt;Hello &lt;mrk id="m1" type="term"&gt;World&lt;/mrk&gt;!&lt;/pc&gt;
    &lt;/source&gt;
    &lt;target&gt;&lt;pc id="1"&gt;Bonjour le &lt;mrk id="m1" type="term"&gt;Monde&lt;/mrk&gt; !
    &lt;/pc&gt;&lt;/target&gt;
   &lt;/segment&gt;
  &lt;/unit&gt;
 &lt;/file&gt;
&lt;/xliff&gt;</programlisting>
    <para>You can have the following fragment identifiers:</para>
    <itemizedlist>
      <listitem><para><code>#f=f1/u=u1/1</code> refers to the element <code>&lt;pc id="1"&gt;</code> of the source content of the element <code>&lt;unit id="u1"&gt;</code>.</para></listitem>
      <listitem><para><code>#f=f1/u=u1/t=1</code> refers to the element <code>&lt;pc id="1"&gt;</code> of the target content of the element <code>&lt;unit id="u1"&gt;</code>.</para></listitem>
      <listitem><para><code>#f=f1/n=n1</code> refers to the element <code>&lt;note id="n1"&gt;</code> of the element <code>&lt;file id="f1"&gt;</code>.</para></listitem>
      <listitem><para><code>#f=f1/u=u1/n=n1</code> refers to the element <code>&lt;note id="n1"&gt;</code> of the element <code>&lt;unit id="u1"&gt;</code>.</para></listitem>
      <listitem><para><code>#f=f1/u=u1/s1</code> refers to the element <code>&lt;segment id="s1"&gt;</code> of the element <code>&lt;unit id="u1"&gt;</code>.</para></listitem>
      <listitem><para>Assuming the extension defined by the namespace URI <code>myNamespaceURI</code> has registered the prefix <code>myprefix</code>, the expression
        <code>#f=f1/u=u1/myprefix=x1</code> refers to the element <code>&lt;my:element id="x1"&gt;</code> of the element <code>&lt;unit id="u1"&gt;</code>.</para></listitem>
    </itemizedlist>
  </section>

</section>
  <section id="core">
    <title>The Core Specification</title>

    <para>XLIFF is a bilingual document format designed for containing text
      that needs <firstterm>Translation</firstterm>, its corresponding translations and auxiliary data
      that makes the <firstterm>Translation</firstterm> process possible.</para>

    <para>At creation time, an XLIFF file <glossterm>may</glossterm> contain only text in the source
    language. Translations expressed in the target language <glossterm>may</glossterm> be added at a
    later time.</para>

    <para>The root element of an XLIFF document is <link linkend="xliff"><code>&lt;xliff&gt;</code></link>. It contains a collection of <link linkend="file"><code>&lt;file&gt;</code></link>
      elements. Typically, each <link linkend="file"><code>&lt;file&gt;</code></link> element contains a set of <link linkend="unit"><code>&lt;unit&gt;</code></link>
      elements that contain the text to be translated in the <link linkend="source"><code>&lt;source&gt;</code></link> child of one or more <link linkend="segment"><code>&lt;segment&gt;</code></link> elements. Translations are stored in the <link linkend="target"><code>&lt;target&gt;</code></link> child of each <link linkend="segment"><code>&lt;segment&gt;</code></link> element.</para>

    <section>
      <title>General Processing Requirements</title>


      <itemizedlist>
        <title/>

        <listitem>
          <para>An <firstterm>Agent</firstterm> processing a valid <firstterm>XLIFF Document</firstterm> that contains <firstterm>XLIFF-defined</firstterm> elements and attributes that
            it cannot handle <glossterm>must</glossterm> preserve those elements and attributes.</para>
        </listitem>
        <listitem>
          <para>An <firstterm>Agent</firstterm> processing a valid <firstterm>XLIFF Document</firstterm> that contains custom elements and attributes that it
            cannot handle <glossterm>should</glossterm> preserve those elements and attributes.</para>
        </listitem>

        </itemizedlist>
    </section>

    <section>
    <title>Elements</title>
    <para>This section contains a description of all elements used in XLIFF 2.0.</para>
    <section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>1 = one</member>
    <member>+ = one or more</member>
    <member>? = zero or one</member>
    <member>* = zero or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="xliff"><code>&lt;xliff&gt;</code></link>
|
+---<link linkend="file"><code>&lt;file&gt;</code></link> +
  |
  +---<link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> ?
  | |
  | +---&lt;other&gt; *
  |
  +---&lt;other&gt; *
  |
  +---<link linkend="notes"><code>&lt;notes&gt;</code></link> ?
  | |
  | +---<link linkend="note"><code>&lt;note&gt;</code></link> +
  |
  +---At least one of (<link linkend="unit"><code>&lt;unit&gt;</code></link> OR <link linkend="group"><code>&lt;group&gt;</code></link>)
      | |
      | +---<link linkend="unit"><code>&lt;unit&gt;</code></link>
      |   |
      |   +---&lt;other&gt; *
      |   |
      |   +---<link linkend="notes"><code>&lt;notes&gt;</code></link> ?
      |   | |
      |   | +---<link linkend="note"><code>&lt;note&gt;</code></link> +
      |   |
      |   +---<link linkend="originaldata"><code>&lt;originalData&gt;</code></link> ?
      |   | |
      |   | +---<link linkend="data"><code>&lt;data&gt;</code></link> +
      |   |
      |   +---At least one of (<link linkend="segment"><code>&lt;segment&gt;</code></link> OR <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>)
      |       | |
      |       | +---<link linkend="segment"><code>&lt;segment&gt;</code></link>
      |       |   |
      |       |   +---<link linkend="source"><code>&lt;source&gt;</code></link> 1
      |       |   |
      |       |   +---<link linkend="target"><code>&lt;target&gt;</code></link> ?
      |       |
      |       +---<link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>
      |           |
      |           +---<link linkend="source"><code>&lt;source&gt;</code></link> 1
      |           |
      |           +---<link linkend="target"><code>&lt;target&gt;</code></link> ?
      |
      +---<link linkend="group"><code>&lt;group&gt;</code></link>
          |
          +---&lt;other&gt; *
          |
          +---<link linkend="notes"><code>&lt;notes&gt;</code></link> ?
          | |
          | +---<link linkend="note"><code>&lt;note&gt;</code></link> +
          |
          +---At least one of (<link linkend="unit"><code>&lt;unit&gt;</code></link> OR <link linkend="group"><code>&lt;group&gt;</code></link>)


  </programlisting>
</section>
    <section id="structural">
    <title>Structural Elements</title>
    <para>The structural elements used in XLIFF 2.0 are: 
        <link linkend="xliff"><code>&lt;xliff&gt;</code></link>, 
        <link linkend="file"><code>&lt;file&gt;</code></link>, 
        <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link>,
        <link linkend="group"><code>&lt;group&gt;</code></link>,
        <link linkend="unit"><code>&lt;unit&gt;</code></link>, 
        <link linkend="segment"><code>&lt;segment&gt;</code></link>, 
        <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>, 
        <link linkend="notes"><code>&lt;notes&gt;</code></link>, 
        <link linkend="note"><code>&lt;note&gt;</code></link>, 
        <link linkend="originaldata"><code>&lt;originalData&gt;</code></link>, 
        <link linkend="data"><code>&lt;data&gt;</code></link>, 
        <link linkend="source"><code>&lt;source&gt;</code></link> 
        and <link linkend="target"><code>&lt;target&gt;</code></link>.
    </para>

    <section id="xliff">
    <title>xliff</title>
    <para>Root element for XLIFF documents.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="file"><code>&lt;file&gt;</code></link> 
            elements</member>
    </simplelist>
    
    
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="version"><code>version</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="srclang"><code>srcLang</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="trglang"><code>trgLang</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>
    
    <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>The <link linkend="trglang"><code>trgLang</code></link> attribute is <glossterm>required</glossterm>
                if and only if the <firstterm>XLIFF Document</firstterm> contains <link linkend="target"><code>&lt;target&gt;</code></link> elements that are children
                of <link linkend="segment"><code>&lt;segment&gt;</code></link> or <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>. </para>
        </listitem>
    </itemizedlist>
</section>

    <section id="file">
    <title>file</title>
    <para>Container for localization material extracted from an entire single document, or another
        high level self contained logical node in a content structure that cannot be described in the terms of
        documents.</para>
        <note><para>Sub-document artifacts such as particular sheets, pages, chapters and similar are better
            mapped onto the <link linkend="group"><code>&lt;group&gt;</code></link> element. The
                <code>&lt;file&gt;</code> element is intended for the highest logical level. For
            instance a collection of papers would map to a single <firstterm>XLIFF
                Document</firstterm>, each paper will be represented with one <code>&lt;file&gt;</code>
            element, whereas chapters and subsections will map onto nested
            <link linkend="group"><code>&lt;group&gt;</code></link> elements.</para></note>



    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Zero or one <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> element
        followed by</member>
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>

        <member>- Zero or one
            <link linkend="notes"><code>&lt;notes&gt;</code></link>
            element followed by</member>


        <member>- One or more <link linkend="unit"><code>&lt;unit&gt;</code></link> or <link linkend="group"><code>&lt;group&gt;</code></link> elements in any order.</member>

    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="id"><code>id</code></link>,
                <glossterm>required</glossterm></member>
        <member>- <link linkend="canResegment"><code>canResegment</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="original"><code>original</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="translate"><code>translate</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="srcdir"><code>srcDir</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="trgdir"><code>trgDir</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
        <listitem><para>The following <firstterm>XLIFF Module</firstterm> elements are explicitly allowed by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
            <member>- Zero or one <link linkend="changeTrack"><code>&lt;ctr:changeTrack&gt;</code></link>
                    elements</member>

            <member>- Zero or one <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link> elements</member>
            <member>- Zero or one <link linkend="res_resourceData"><code>&lt;res:resourceData&gt;</code></link>
                    element</member>
            <member>- Zero or one <link linkend="slr_profiles"><code>&lt;slr:profiles&gt;</code></link>
                    elements</member>
            <member>- Zero or one <link linkend="slr_data"><code>&lt;slr:data&gt;</code></link> elements</member>
            <member>- Zero or one <link linkend="validation"><code>&lt;val:validation&gt;</code></link>
                    elements</member></simplelist>
        </listitem>
        <listitem>
            <para><firstterm>Module</firstterm> and Extension elements <glossterm>may</glossterm> be
                used in any order.</para>
        </listitem>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
                allowed by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- <link linkend="fs"><code>fs:fs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
            </simplelist>
        </listitem>

    <!--  This was moved to the id attribute together with all other id uniqueness constraints

        <listitem><para>The value of the <glossterm>optional</glossterm>
            <olink targetdoc="../../attributes/id.xml" targetptr="id"><code>id</code></olink>
            attribute <glossterm>must</glossterm> be unique among all
            <link linkend="file"><code>&lt;file></code></link>
            children of the enclosing
            <olink targetdoc="xliff.xml" targetptr="xliff"><code>&lt;xliff></code></olink>
            element.</para>
        </listitem>

     -->
    </itemizedlist>
</section>
    
    <section id="skeleton">
    <title>skeleton</title>
    <para>Container for non-translatable material pertaining to the parent <link linkend="file"><code>&lt;file&gt;</code></link> element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <para>Either</para>
    <simplelist type="vert">
        <member>- Non-translatable text</member>
        <member>- elements from other namespaces</member>
    </simplelist>
    <para>or</para>
    <simplelist type="vert">
        <member>- is empty.</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="href"><code>href</code></link>, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
    <listitem><para> The attribute <link linkend="href"><code>href</code></link> is <glossterm>required</glossterm> if and only if the
                    <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> element is empty. </para></listitem>
    </itemizedlist>
    <itemizedlist>
        <title>Processing Requirements</title>
        <listitem><para><firstterm>Modifiers</firstterm> and <firstterm>Enrichers</firstterm> processing an
                    <firstterm>XLIFF Document</firstterm> that contains a <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> element <glossterm>must not</glossterm>
                change that element, its attributes, or its content. </para></listitem>
        <listitem><para><firstterm>Extractors</firstterm> creating an <firstterm>XLIFF Document</firstterm> with a <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> element
                    <glossterm>must</glossterm> leave the <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link> element empty if and only if they specify
                the attribute <link linkend="href"><code>href</code></link>.</para></listitem>
    </itemizedlist>
</section>
    
    <section id="group">
    <title>group</title>
    <para>Provides a way to organize units into a structured hierarchy.</para>
    <para>Note that this is especially useful for mirroring a source format's hierarchical
        structure.</para>

    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
        <member>- Zero or one
            <link linkend="notes"><code>&lt;notes&gt;</code></link>
            element followed by</member>
        <member>- Zero, one or more
            <link linkend="unit"><code>&lt;unit&gt;</code></link>
            or <link linkend="group"><code>&lt;group&gt;</code></link>
            elements in any order.</member>





    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="name"><code>name</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="canResegment"><code>canResegment</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="translate"><code>translate</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="srcdir"><code>srcDir</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="trgdir"><code>trgDir</code></link>, <glossterm>optional</glossterm></member>
		<member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>

        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> elements are explicitly allowed
                by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- Zero or one <link linkend="changeTrack"><code>&lt;ctr:changeTrack&gt;</code></link>
                    elements</member>


                <member>- Zero or one <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link>
                    elements</member>
                <member>- Zero or one <link linkend="slr_data"><code>&lt;slr:data&gt;</code></link> elements</member>
                <member>- Zero or one <link linkend="validation"><code>&lt;val:validation&gt;</code></link>
                    elements</member>
            </simplelist>
        </listitem>
        <listitem>
            <para><firstterm>Module</firstterm> and Extension elements <glossterm>may</glossterm> be
                used in any order.</para>
        </listitem>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
                allowed by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- <link linkend="fs"><code>fs:fs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
            </simplelist>
        </listitem>
    </itemizedlist>

</section>

    <section id="unit">
    <title>unit</title>
    <para>Static container for a dynamic structure of elements holding the extracted translatable source text, aligned with the <firstterm>Translated</firstterm> text.</para>

    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
        <member>- Zero or one
            <link linkend="notes"><code>&lt;notes&gt;</code></link>
            elements followed by</member>
        <member>- Zero or one
            <link linkend="originaldata"><code>&lt;originalData&gt;</code></link>
            element followed by</member>
        <member>- One or more
            <link linkend="segment"><code>&lt;segment&gt;</code></link>
            or <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>
            elements in any order.</member>






    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="name"><code>name</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="canResegment"><code>canResegment</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="translate"><code>translate</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="srcdir"><code>srcDir</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="trgdir"><code>trgDir</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>



        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>A <link linkend="unit"><code>&lt;unit&gt;</code></link> <glossterm>must</glossterm> contain at least one
                <link linkend="segment"><code>&lt;segment&gt;</code></link>
                element.
            </para>
        </listitem>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> elements are explicitly allowed
                by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- Zero or one <link linkend="changeTrack"><code>&lt;ctr:changeTrack&gt;</code></link>
                    elements</member>

                <member>- Zero or one
                    <link linkend="matches"><code>&lt;mtc:matches&gt;</code></link>
                    elements</member>
                <member>- Zero or one
                    <link linkend="glossary"><code>&lt;gls:glossary&gt;</code></link>
                    elements</member>
                <member>- Zero or one <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link>
                    elements</member>
                <member>- Zero or one <link linkend="res_resourceData"><code>&lt;res:resourceData&gt;</code></link>
                    elements </member>
                <member>- Zero or one <link linkend="slr_data"><code>&lt;slr:data&gt;</code></link>
                    elements </member>
                <member>- Zero or one <link linkend="validation"><code>&lt;val:validation&gt;</code></link>
                    elements </member>
            </simplelist>
        </listitem>
        <listitem>
            <para><firstterm>Module</firstterm> and Extension elements <glossterm>may</glossterm> be
                used in any order.</para>
        </listitem>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
                allowed by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- <link linkend="fs"><code>fs:fs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
            </simplelist>
        </listitem>
        <!--  The id scopes are defined on the id attribute
            <listitem><para>The value of the
            <olink targetdoc="../../attributes/id.xml" targetptr="id"><code>id</code></olink>
            attribute <glossterm>must</glossterm> be unique among all
            <link linkend="unit"><code>&lt;unit></code></link>
            children of the enclosing
            <olink targetdoc="file.xml" targetptr="file"><code>&lt;file></code></olink>
            element.</para>
        </listitem> -->
        <!--  This falg got killed in the August 20 2013 meeting <listitem>
            <para>For a <link linkend="unit"><code>&lt;unit></code></link> element to be ready for
                    <emphasis>Merging</emphasis> it is <glossterm>required</glossterm> that all its <olink
                    targetdoc="segment.xml" targetptr="segment"><code>&lt;segment></code></olink>
                children with <olink targetdoc="../../attributes/translate.xml"
                    targetptr="translate"><code>translate</code></olink> set to <code>yes</code>
                have the <olink targetdoc="../../attributes/approved.xml" targetptr="approved"
                        ><code>approved</code></olink> attribute set to <code>yes</code>. </para>
        </listitem> -->
        </itemizedlist>
</section>
    
    <section id="segment">
  <title>segment</title>

  <para>This element is a container to hold in its aligned pair of children elements the minimum portion of
    translatable source text and its <firstterm>Translation</firstterm> in the given <link linkend="segmentation">Segmentation</link>.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>- One <link linkend="source"><code>&lt;source&gt;</code></link> element followed
    by</member>

    <member>- Zero or one <link linkend="target"><code>&lt;target&gt;</code></link> element</member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <!--  This flag got killed in the August 20 2013 meeting <member>- <olink targetdoc="../../attributes/approved.xml"
      targetptr="approved"><code>approved</code></olink>, <glossterm>required</glossterm></member> -->
    
    <member>- <link linkend="id"><code>id</code></link>, <glossterm>optional</glossterm></member>
    
    <member>- <link linkend="canResegment"><code>canResegment</code></link>, <glossterm>optional</glossterm></member>
<!--  translate was killed on segment to simplify translatability state algorithm and to simplify re-segmentation PRs,
      the expressivity is the same due to inline markers
    <member>- <olink targetdoc="../../attributes/translate.xml"
    targetptr="translate"><code>translate</code></olink>, <glossterm>optional</glossterm></member> -->
    
    
    <member>- <link linkend="state"><code>state</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="substate"><code>subState</code></link>, <glossterm>optional</glossterm></member>

  </simplelist>

  <!--   The uniqueness scope is described on the id attribute 
  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <glossterm>optional</glossterm> <olink
      targetdoc="../../attributes/id.xml"
      targetptr="id"><code>id</code></olink> attribute <glossterm>must</glossterm> be unique among
      all <link linkend="segment"><code>&lt;segment&gt;</code></link> and
      <olink targetdoc="ignorable.xml"
      targetptr="ignorable"><code>&lt;ignorable&gt;</code></olink> children of
      the enclosing <olink targetdoc="unit.xml"
      targetptr="unit"><code>&lt;unit&gt;</code></olink> element.</para>
    </listitem>
    
  </itemizedlist> -->
  
  <!--  This flag got killed in the August 20 2013 meeting 
  <itemizedlist>
    <title>Processing Requirements</title>
    
    <listitem>
      <para><firstterm>Mergers</firstterm> <glossterm>must not</glossterm> <firstterm>Merge</firstterm> back into the original format
        <link linkend="segment"><code>&lt;segment></code></link> elements with the <olink targetdoc="../../attributes/approved.xml" targetptr="approved"><code>approved</code></olink> flag set to <code>no</code>.</para>
    </listitem>
    
  </itemizedlist> -->
</section>
    
    <section id="ignorable">
    <title>ignorable</title>
    <para>Part of the extracted content that is not included in a segment (and therefore not
        translatable). For example tools can use <code>&lt;ignorable&gt;</code> to store the white
        space and/or codes that are between two segments.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One <link linkend="source"><code>&lt;source&gt;</code></link> element 
            followed by</member>
        <member>- Zero or one <link linkend="target"><code>&lt;target&gt;</code></link> element</member>
    </simplelist>
    
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="id"><code>id</code></link>, <glossterm>optional</glossterm></member>
    </simplelist>
    
    <!--  The uniqueness scope is described on the id attribute <itemizedlist>
        <title>Constraints</title>
        <listitem><para>The value of the <glossterm>optional</glossterm>
            <olink targetdoc="../../attributes/id.xml" targetptr="id"><code>id</code></olink> 
            attribute <glossterm>must</glossterm> be unique among all 
            <olink targetdoc="segment.xml" targetptr="segment"><code>&lt;segment></code></olink> and
            <link linkend="ignorable"><code>&lt;ignorable></code></link>
            children of the enclosing 
            <olink targetdoc="unit.xml" targetptr="unit"><code>&lt;unit></code></olink> 
            element.</para></listitem>
    </itemizedlist>  -->
    
</section>
    
    <section id="notes">
    <title>notes</title>
    <para>Collection of comments.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="note"><code>&lt;note&gt;</code></link>
            elements</member>
    </simplelist>

</section>
    
    <section id="note">
    <title>note</title>
    <para>This is an XLIFF specific way how to present end user readable comments and annotations. A
        note can contain information about <link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="unit"><code>&lt;unit&gt;</code></link>, <link linkend="group"><code>&lt;group&gt;</code></link>, or <link linkend="file"><code>&lt;file&gt;</code></link> elements.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
    </simplelist>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="id"><code>id</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="appliesto"><code>appliesTo</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="category"><code>category</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="priority"><code>priority</code></link>, <glossterm>optional</glossterm></member>


        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
                allowed by the wildcard <code>other</code>:</para>
            <simplelist type="vert">
                <member>- <link linkend="fs"><code>fs:fs</code></link>, <glossterm>optional</glossterm></member>
                <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
            </simplelist>
        </listitem>
    </itemizedlist>
</section>
    
    <section id="originaldata">
  <title>originalData</title>

  <para>Unit-level collection of original data for the inline codes.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>- One or more <link linkend="data"><code>&lt;data&gt;</code></link> elements</member>
  </simplelist>


</section>
    
    <section id="data">
  <title>data</title>

  <para>Storage for the original data of an inline code.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>- Non-translatable text</member>

    <member>- Zero, one or more <link linkend="cp"><code>&lt;cp&gt;</code></link> elements.</member>
  </simplelist>

  <para>Non-translatable text and <link linkend="cp"><code>&lt;cp&gt;</code></link> elements <glossterm>may</glossterm> appear in any
    order.</para>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>

    <member>- <link linkend="dir"><code>dir</code></link>, <glossterm>optional</glossterm></member>
    
    <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm>, the value is restricted
      to <code>preserve</code> on this element</member>
	
	

  </simplelist>

  <!--  now, id MUST be unique within all ids of the enclosing unit, the Constraint is on the attribute 
  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <olink targetdoc="../../attributes/id.xml"
      targetptr="id"><code>id</code></olink> attribute <glossterm>must</glossterm> be unique among
      all <link linkend="data"><code>&lt;data&gt;</code></link> children of
      the enclosing <olink targetdoc="originaldata.xml"
      targetptr="originaldata"><code>&lt;originalData&gt;</code></olink>
      element.</para>
    </listitem>
  </itemizedlist>
   -->
</section>
    
    <section id="source">
    <title>source</title>
    <para>Portion of text to be translated.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
        <member>- Zero, one or more <link linkend="cp"><code>&lt;cp&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="ph"><code>&lt;ph&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="pc"><code>&lt;pc&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="sc"><code>&lt;sc&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="ec"><code>&lt;ec&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="mrk"><code>&lt;mrk&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="sm"><code>&lt;sm&gt;</code></link> elements</member>
        <member>- Zero, one or more <link linkend="em"><code>&lt;em&gt;</code></link> elements</member>
    </simplelist>
    <para>Text and inline elements may appear in any order.</para>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="xml_lang"><code>xml:lang</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>    
        <!--  killed to simplify re-segmentation PRs and to make use of BiDi control characters less likely
         <member>- <olink targetdoc="../../attributes/dir.xml" targetptr="dir"><code>dir</code></olink>, <glossterm>optional</glossterm></member> -->
    </simplelist>
    <!-- removed per csprd03 235 xml:lang-related text and Translation Candidate module
        <itemizedlist>
        
        <title>Constraints</title>
        <listitem>
            <para>When a <link linkend="source"><code>&lt;source></code></link> element is a child of 
                <olink targetdoc="segment.xml" targetptr="segment"><code>&lt;segment></code></olink> or 
                <olink targetdoc="ignorable.xml" targetptr="ignorable"><code>&lt;ignorable></code></olink>, 
              the explicit or inherited value of the <glossterm>optional</glossterm>
                <olink targetdoc="../../attributes/xml_lang.xml" targetptr="xml_lang"><code>xml:lang</code></olink> 
                attribute <glossterm>must</glossterm> be equal to the value of the
                <olink targetdoc="../../attributes/srclang.xml" targetptr="srclang"><code>srcLang</code></olink> attribute 
                of the enclosing 
                <olink targetdoc="xliff.xml" targetptr="xliff"><code>&lt;xliff></code></olink> 
                element.</para>
        </listitem>
       
    </itemizedlist>  -->
</section>
    
    <section id="target">
  <title>target</title>
  <para>The translation of the sibling <link linkend="source"><code>&lt;source&gt;</code></link> element.</para>
  <para><emphasis>Contains:</emphasis></para>
  <simplelist type="vert">
    <member>- Text</member>
    <member>- Zero, one or more <link linkend="cp"><code>&lt;cp&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="ph"><code>&lt;ph&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="pc"><code>&lt;pc&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="sc"><code>&lt;sc&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="ec"><code>&lt;ec&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="mrk"><code>&lt;mrk&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="sm"><code>&lt;sm&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="em"><code>&lt;em&gt;</code></link> elements</member>
  </simplelist>
  <para>Text and inline elements may appear in any order.</para>
  <para><emphasis>Attributes:</emphasis></para>
  <simplelist type="vert">
    <member>- <link linkend="xml_lang"><code>xml:lang</code></link>, <glossterm>optional</glossterm></member>
    <member>- <link linkend="xml_space"><code>xml:space</code></link>, <glossterm>optional</glossterm></member>    
    <!--  killed to simplify re-segmentation PRs and to make use of BiDi control characters less likely
    <member>- <olink targetdoc="../../attributes/dir.xml" targetptr="dir"><code>dir</code></olink>, <glossterm>optional</glossterm></member> -->
    <member>- <link linkend="order"><code>order</code></link>, <glossterm>optional</glossterm></member>
  </simplelist>  
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>When a <link linkend="target"><code>&lt;target&gt;</code></link> element is a child of 
        <link linkend="segment"><code>&lt;segment&gt;</code></link> or 
        <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>, 
        the explicit or inherited value of the <glossterm>optional</glossterm>
        <link linkend="xml_lang"><code>xml:lang</code></link> 
        <glossterm>must</glossterm> be equal to the value of the 
        <link linkend="trglang"><code>trgLang</code></link> 
        attribute of the enclosing 
        <link linkend="xliff"><code>&lt;xliff&gt;</code></link> 
        element.</para>
    </listitem>
    <!--  removed per csprd03 235 xml:lang-related text and Translation Candidate module
    <listitem>
      <para>When a <olink targetdoc="target.xml" targetptr="target"><code>&lt;target&gt;</code></olink> child is
        added to a <olink targetdoc="segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> element,
        the value of its <olink targetdoc="../../attributes/xml_space.xml" targetptr="xml_space"><code>xml:space</code></olink> attribute
        <glossterm>must</glossterm> be set to <code>preserve</code> if the <olink targetdoc="../../attributes/xml_space.xml" targetptr="xml_space"><code>xml:space</code></olink>
        attribute of the sibling <olink targetdoc="source.xml" targetptr="source"><code>&lt;source&gt;</code></olink> element is
        set to <code>preserve</code>.</para>
    </listitem>
     -->
  </itemizedlist>
  
</section>
    
</section>
    <section id="inlineelements">
  <title>Inline Elements</title>

    <para>The inline elements at the <link linkend="source"><code>&lt;source&gt;</code></link> or <link linkend="target"><code>&lt;target&gt;</code></link> level are: <link linkend="cp"><code>&lt;cp&gt;</code></link>,
    <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>,
    <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>,
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link>, <link linkend="sm"><code>&lt;sm&gt;</code></link>
    and <link linkend="em"><code>&lt;em&gt;</code></link>.</para>

    <para>The elements at the <link linkend="unit"><code>&lt;unit&gt;</code></link> level directly related
    to inline elements are: <link linkend="originaldata"><code>&lt;originalData&gt;</code></link> and
    <link linkend="data"><code>&lt;data&gt;</code></link>.</para>

    <section id="cp">
  <title>cp</title>

  <para>Represents a Unicode character that is invalid in XML.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="data"><code>&lt;data&gt;</code></link>, <link linkend="mrk"><code>&lt;mrk&gt;</code></link>,
    <link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link> and <link linkend="pc"><code>&lt;pc&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="hex"><code>hex</code></link>, <glossterm>required</glossterm></member>


  </simplelist>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Ctrl+C=&lt;cp hex="0003"/&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>The example above shows a character U+0003 (Control C) as it has to be represented in
    XLIFF.</para>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para><firstterm>Writers</firstterm> <glossterm>must</glossterm> encode all invalid XML characters of the content
      using <link linkend="cp"><code>&lt;cp&gt;</code></link>.</para>
    </listitem>

    <listitem>
      <para><firstterm>Writers</firstterm> <glossterm>must not</glossterm> encode valid XML characters of the content using
      <link linkend="cp"><code>&lt;cp&gt;</code></link>.</para>
    </listitem>
  </itemizedlist>
</section>

    <section id="ph">
  <title>ph</title>

  <para>Represents a standalone code of the original format.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="cancopy"><code>canCopy</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="cancopy"><code>canDelete</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canreorder"><code>canReorder</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="copyof"><code>copyOf</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="disp"><code>disp</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="equiv"><code>equiv</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm>.</member>

    <member>- <link linkend="dataref"><code>dataRef</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subflows"><code>subFlows</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subtype"><code>subType</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>


  </simplelist>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;%d&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;br/&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Number of entries: &lt;ph id="1" dataRef="d1" /&gt;
&lt;ph id="2" dataRef="d2"/&gt;(These entries are only the ones matching the
current filter settings)&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
        allowed by the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>,
          <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_equiv_storage"><code>slr:equivStorage</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    <listitem><para>No other attributes <glossterm>must</glossterm> be used.</para></listitem>

  </itemizedlist>
</section>

    <section id="pc">
  <title>pc</title>

  <para>Represents a well-formed spanning original code.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>- Text</member>

    <member>- Zero, one or more <link linkend="cp"><code>&lt;cp&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="ph"><code>&lt;ph&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="pc"><code>&lt;pc&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="sc"><code>&lt;sc&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="ec"><code>&lt;ec&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="mrk"><code>&lt;mrk&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="sm"><code>&lt;sm&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="em"><code>&lt;em&gt;</code></link> elements</member>
  </simplelist>

  <para>Text and inline elements may appear in any order.</para>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="cancopy"><code>canCopy</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="cancopy"><code>canDelete</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canoverlap"><code>canOverlap</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canreorder"><code>canReorder</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="copyof"><code>copyOf</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dispend"><code>dispEnd</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dispstart"><code>dispStart</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="equivend"><code>equivEnd</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="equivstart"><code>equivStart</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>

    <member>- <link linkend="datarefend"><code>dataRefEnd</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="datarefstart"><code>dataRefStart</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subflowsend"><code>subFlowsEnd</code></link>,
    <glossterm>optional</glossterm></member>

    <member>- <link linkend="subflowsstart"><code>subFlowsStart</code></link>,
    <glossterm>optional</glossterm></member>

    <member>- <link linkend="subtype"><code>subType</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dir"><code>dir</code></link>, <glossterm>optional</glossterm></member>
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>




  </simplelist>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="1"&gt;&amp;lt;B&amp;gt;&lt;/data&gt;
  &lt;data id="2"&gt;&amp;lt;/B&amp;gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;&lt;pc id="1" dataRefStart="1" dataRefEnd="2"&gt;Important&lt;/pc&gt;
text&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
        allowed by the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>,
          <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_equiv_storage"><code>slr:equivStorage</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    <listitem><para>No other attributes <glossterm>must</glossterm> be used.</para></listitem>

  </itemizedlist>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para><firstterm>Extractors</firstterm>
        <glossterm>must not</glossterm> use the <link linkend="pc"><code>&lt;pc&gt;</code></link> element to represent standalone codes.</para>
      <para>Rationale: Using a spanning code for a standalone code can easily result in having
        text inside a span where the original format does not allow it.</para>
          </listitem>
  </itemizedlist>
</section>

    <section id="sc">
  <title>sc</title>

  <para>Start of a spanning original code.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="cancopy"><code>canCopy</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="cancopy"><code>canDelete</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canoverlap"><code>canOverlap</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canreorder"><code>canReorder</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="copyof"><code>copyOf</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dataref"><code>dataRef</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dir"><code>dir</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="disp"><code>disp</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="equiv"><code>equiv</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>

    <member>- <link linkend="isolated"><code>isolated</code></link>, <glossterm>optional</glossterm></member>


    <member>- <link linkend="subflows"><code>subFlows</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subtype"><code>subType</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>



    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>




  </simplelist>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;sc id="1" type="fmt" subType="xlf:b"/&gt;First sentence. &lt;/source&gt;
 &lt;/segment&gt;
 &lt;segment&gt;
  &lt;source&gt;Second sentence.&lt;ec startRef="1" type="fmt" subType="xlf:b"/&gt;
  &lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
        allowed by the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>,
          <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_equiv_storage"><code>slr:equivStorage</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    <listitem><para>No other attributes <glossterm>must</glossterm> be used.</para></listitem>

    <listitem>
      <para>The values of the attributes <link linkend="cancopy"><code>canCopy</code></link>, <link linkend="candelete"><code>canDelete</code></link>, <link linkend="canreorder"><code>canReorder</code></link> and <link linkend="canoverlap"><code>canOverlap</code></link>
        <glossterm>must</glossterm> be the same as the values the ones in the <link linkend="ec"><code>&lt;ec&gt;</code></link> element
        corresponding to this start code.</para>
    </listitem>

    <listitem>
      <para>The attribute <link linkend="isolated"><code>isolated</code></link> <glossterm>must</glossterm> be set to
      <code>yes</code> if and only if the <link linkend="ec"><code>&lt;ec&gt;</code></link> element corresponding to
      this start marker is not in the same <link linkend="unit"><code>&lt;unit&gt;</code></link>, and set to
      <code>no</code> otherwise.</para>
    </listitem>
    </itemizedlist>
    <itemizedlist>
      <title>Processing Requirements</title>

    <listitem>
      <para><firstterm>Extractors</firstterm>
        <glossterm>must not</glossterm> use the <link linkend="sc"><code>&lt;sc&gt;</code></link> / <link linkend="ec"><code>&lt;ec&gt;</code></link> pair to represent standalone codes.</para>
        <para>Rationale: Using a spanning code for a standalone code can easily result in having
        text inside a span where the original format does not allow it.</para>
    </listitem>
  </itemizedlist>
</section>

    <section id="ec">
  <title>ec</title>

  <para>End of a spanning original code.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="cancopy"><code>canCopy</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="cancopy"><code>canDelete</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canoverlap"><code>canOverlap</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="canreorder"><code>canReorder</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="copyof"><code>copyOf</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="dataref"><code>dataRef</code></link>, <glossterm>optional</glossterm></member>
    <member><!--  pending discussion with Fredrik  -->- <link linkend="dir"><code>dir</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="disp"><code>disp</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="equiv"><code>equiv</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="id"><code>id</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="isolated"><code>isolated</code></link>, <glossterm>optional</glossterm></member>


    <member>- <link linkend="startref"><code>startRef</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subflows"><code>subFlows</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="subtype"><code>subType</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>

    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>


    </simplelist>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;\b &lt;/data&gt;
  &lt;data id="d2"&gt;\i &lt;/data&gt;
  &lt;data id="d3"&gt;\b0 &lt;/data&gt;
  &lt;data id="d4"&gt;\i0 &lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Text in &lt;sc id="1" dataRef="d1"/&gt;bold &lt;sc id="2" dataRef="d2"/&gt;
and&lt;ec startRef="1" dataRef="d3"/&gt; italics&lt;ec startRef="2" dataRef="d4"/&gt;.
&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
        allowed by the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>,
          <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_equiv_storage"><code>slr:equivStorage</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info"><code>slr:sizeInfo</code></link>, <glossterm>optional</glossterm></member>

        <member>- <link linkend="slr_size_info_ref"><code>slr:sizeInfoRef</code></link>, <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    <listitem><para>No other attributes <glossterm>must</glossterm> be used.</para></listitem>



    <listitem>
      <para>The values of the attributes <link linkend="cancopy"><code>canCopy</code></link>, <link linkend="candelete"><code>canDelete</code></link> and <link linkend="canoverlap"><code>canOverlap</code></link> <glossterm>must</glossterm> be the same
        as the values the ones in the <link linkend="sc"><code>&lt;sc&gt;</code></link> element corresponding to
        this end code.</para>
    </listitem>

    <listitem>
      <para>The value of the attribute <link linkend="canreorder"><code>canReorder</code></link> <glossterm>must</glossterm> be <code>no</code>
        if the value of <link linkend="canreorder"><code>canReorder</code></link> is <code>firstNo</code> in the <link linkend="sc"><code>&lt;sc&gt;</code></link> element corresponding to
        this end code.</para>
    </listitem>

    <listitem>
      <para>The attribute <link linkend="isolated"><code>isolated</code></link>
        <glossterm>must</glossterm> be set to <code>yes</code> if and only if the <link linkend="sc"><code>&lt;sc&gt;</code></link> element
        corresponding to this end code is not in the same <link linkend="unit"><code>&lt;unit&gt;</code></link> and set to <code>no</code> otherwise.</para>
    </listitem>

    <listitem id="ecIFF">
      <para>If and only if the attribute <link linkend="isolated"><code>isolated</code></link> is set to <code>yes</code>, the
        attribute <link linkend="id"><code>id</code></link>
        <glossterm>must</glossterm> be used instead of the attribute <link linkend="startref"><code>startRef</code></link> that <glossterm>must</glossterm> be used otherwise.</para>
    </listitem>
    <listitem>
      <para><!--  pending discussion with Fredrik  --> If and only if the attribute <link linkend="isolated"><code>isolated</code></link> is set to <code>yes</code>, the attribute <link linkend="dir"><code>dir</code></link>
        <glossterm>may</glossterm> be used, otherwise the attribute <link linkend="dir"><code>dir</code></link>
        <glossterm>must not</glossterm> be used on the <link linkend="ec"><code>&lt;ec&gt;</code></link> element. </para>
    </listitem>
  </itemizedlist>
    <itemizedlist>
      <title>Processing Requirements</title>

    <listitem>
      <para><firstterm>Extractors</firstterm>
        <glossterm>must not</glossterm> use the <link linkend="sc"><code>&lt;sc&gt;</code></link> / <link linkend="ec"><code>&lt;ec&gt;</code></link> pair to represent standalone codes.</para>
      <para>Rationale: Using a spanning code for a standalone code can easily result in having
        text inside a span where the original format does not allow it.</para>
    </listitem>
  </itemizedlist>
</section>

    <section id="mrk">
  <title>mrk</title>

  <para>Represents an annotation pertaining to the marked span.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>- Text</member>

    <member>- Zero, one or more <link linkend="cp"><code>&lt;cp&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="ph"><code>&lt;ph&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="pc"><code>&lt;pc&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="sc"><code>&lt;sc&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="ec"><code>&lt;ec&gt;</code></link> elements</member>

    <member>- Zero, one or more <link linkend="mrk"><code>&lt;mrk&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="sm"><code>&lt;sm&gt;</code></link> elements</member>
    <member>- Zero, one or more <link linkend="em"><code>&lt;em&gt;</code></link> elements</member>
  </simplelist>

  <para>Text and inline elements may appear in any order.</para>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>

    <member>- <link linkend="translate"><code>translate</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="ref"><code>ref</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="value"><code>value</code></link>, <glossterm>optional</glossterm></member>
    
    
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>

  </simplelist>
  
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>The <link linkend="xml_namespace">[XML
          namespace]</link>
        <glossterm>must not</glossterm> be used at this extension point.</para>
    </listitem>
    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly
        allowed by the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>,
          <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
        
        <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>, <glossterm>optional</glossterm></member>
        
        <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>, <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    
    
  </itemizedlist>

  <para>See the <link linkend="annotations">Annotations section</link> for more details and
  examples on how to use the <link linkend="mrk"><code>&lt;mrk&gt;</code></link> element.</para>
</section>
    <section id="sm">
  <title>sm</title>

  <para>Start marker of an annotation where the spanning marker cannot be used for wellformedness
    reasons.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="id"><code>id</code></link>, <glossterm>required</glossterm></member>

    <member>- <link linkend="translate"><code>translate</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="type"><code>type</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="ref"><code>ref</code></link>, <glossterm>optional</glossterm></member>

    <member>- <link linkend="value"><code>value</code></link>, <glossterm>optional</glossterm></member>
    
    
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>

  </simplelist>
  
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>The <link linkend="xml_namespace">[XML
          namespace]</link>
        <glossterm>must not</glossterm> be used at this extension point.</para>
    </listitem>
    <listitem>
      <para>The following <firstterm>XLIFF Module</firstterm> attributes are explicitly allowed by
        the wildcard <code>other</code>:</para>
      <simplelist type="vert">
        <member>- <link linkend="fs"><code>fs:fs</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="subFs"><code>fs:subFs</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="slr_storage_restriction"><code>slr:storageRestriction</code></link>,
            <glossterm>optional</glossterm></member>
        <member>- <link linkend="slr_size_restriction"><code>slr:sizeRestriction</code></link>,
            <glossterm>optional</glossterm></member>
      </simplelist>
    </listitem>
    
    
  </itemizedlist>

  <para>See the <link linkend="annotations">Annotations section</link> for more details and
  examples on how to use the <link linkend="sm"><code>&lt;sm&gt;</code></link> element.</para>
</section>
    <section id="em">
  <title>em</title>

  <para>End marker of an annotation where the spanning marker cannot be used for wellformedness
    reasons.</para>

  <para><emphasis>Contains:</emphasis></para>

  <simplelist type="vert">
    <member>This element is always empty.</member>
  </simplelist>

  <para><emphasis>Parents:</emphasis></para>

  <simplelist type="vert">
    <member><link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
  </simplelist>

  <para><emphasis>Attributes:</emphasis></para>

  <simplelist type="vert">
    <member>- <link linkend="startref"><code>startRef</code></link>, <glossterm>required</glossterm></member>
    <!--  Since markers do not have a provision for appeareing isolated, it does not seem to make sense to allow fs formatting on the end marker..  
    <member>- <olink targetdoc="../../attributes/fs.xml" targetptr="fs"><code>fs:fs</code></olink>,
      optional</member>
    <member>- <olink targetdoc="../../attributes/subFs.xml" targetptr="subFs"
        ><code>fs:subFs</code></olink>, optional</member> 
     -->
  </simplelist>

  <para>See the <link linkend="annotations">Annotations section</link> for more details and
  examples on how to use the <link linkend="em"><code>&lt;em&gt;</code></link> element.</para>
</section>
 </section>
</section>

    <section>
  <title>Attributes</title>

  <para>This section lists all the various attributes used in XLIFF core elements.</para>

  <section>
    <title>XLIFF Attributes</title>

    <para>The attributes defined in XLIFF 2.0 are: <link linkend="appliesto"><code>appliesTo</code></link>,
      <!--  This falg got killed in the August 20 2013 meeting <olink targetdoc="approved.xml"
        targetptr="approved"><code>approved</code></olink>, -->
      <link linkend="cancopy"><code>canCopy</code></link>,
      <link linkend="candelete"><code>canDelete</code></link>,
      <link linkend="canoverlap"><code>canOverlap</code></link>,
      <link linkend="canreorder"><code>canReorder</code></link>,
      <link linkend="canResegment"><code>canResegment</code></link>,
      <link linkend="category"><code>category</code></link>,
      <link linkend="copyof"><code>copyOf</code></link>,

      <link linkend="dataref"><code>dataRef</code></link>,
      <link linkend="datarefend"><code>dataRefEnd</code></link>,
      <link linkend="datarefstart"><code>dataRefStart</code></link>,
      <link linkend="dir"><code>dir</code></link>,
      <link linkend="disp"><code>disp</code></link>,
      <link linkend="dispend"><code>dispEnd</code></link>,
      <link linkend="dispstart"><code>dispStart</code></link>,
      <link linkend="equiv"><code>equiv</code></link>,
      <link linkend="equivend"><code>equivEnd</code></link>,
      <link linkend="equivstart"><code>equivStart</code></link>,
      <link linkend="hex"><code>hex</code></link>,
      <link linkend="href"><code>href</code></link>,
      <link linkend="id"><code>id</code></link>,
      <link linkend="isolated"><code>isolated</code></link>,
      <link linkend="name"><code>name</code></link>,
      <link linkend="order"><code>order</code></link>,
      <link linkend="original"><code>original</code></link>,
      <link linkend="priority"><code>priority</code></link>,
      <link linkend="ref"><code>ref</code></link>,


      <link linkend="srcdir"><code>srcDir</code></link>,
      <link linkend="srclang"><code>srcLang</code></link>,

      <link linkend="startref"><code>startRef</code></link>,

      <link linkend="state"><code>state</code></link>,

      <link linkend="subflows"><code>subFlows</code></link>,
      <link linkend="subflowsend"><code>subFlowsEnd</code></link>,
      <link linkend="subflowsstart"><code>subFlowsStart</code></link>,

      <link linkend="substate"><code>subState</code></link>,

      <link linkend="subtype"><code>subType</code></link>,


      <link linkend="trglang"><code>trgLang</code></link>,
      <link linkend="translate"><code>translate</code></link>,
      <link linkend="trgdir"><code>trgDir</code></link>,
      <link linkend="type"><code>type</code></link>,
      <link linkend="value"><code>value</code></link>
      and <link linkend="version"><code>version</code></link>.</para>

    <!--  This falg got killed in the August 20 2013 meeting <xi:include href="approved.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->

    <section id="appliesto">
    <title>appliesTo</title>
    
    <para>Comment target - indicates the element to what the content of the note applies.</para>
    
    <para><emphasis>Value description:</emphasis> <code>source</code> or <code>target</code>.</para>
    
    <para><emphasis>Default value:</emphasis> undefined.</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="note"><code>&lt;note&gt;</code></link>.</para>
    
</section>

    <section id="cancopy">
    <title>canCopy</title>
    
    <para>Replication editing hint - indicates whether or not the inline code can be copied.</para>
    
    <para><emphasis>Value description:</emphasis>
        <code>yes</code> if the code can be copied, <code>no</code> if the code is not intended to
        be copied.</para>
    
    <para><emphasis>Default value:</emphasis> <code>yes</code>.</para>
    
    <para><emphasis>Used in:</emphasis>
     <link linkend="pc"><code>&lt;pc&gt;</code></link>,
     <link linkend="sc"><code>&lt;sc&gt;</code></link>,
     <link linkend="ec"><code>&lt;ec&gt;</code></link>,
     <link linkend="ph"><code>&lt;ph&gt;</code></link>.</para>
    
</section>

    <section id="candelete">
    <title>canDelete</title>
    
    <para>Deletion editing hint - indicates whether or not the inline code can be deleted.</para>
    
    <para><emphasis>Value description:</emphasis>
        <code>yes</code> if the code can be deleted, <code>no</code> if the code is not allowed to
        be deleted.</para>
    
    <para><emphasis>Default value:</emphasis> <code>yes</code>.</para>
    
    <para><emphasis>Used in:</emphasis>
     <link linkend="pc"><code>&lt;pc&gt;</code></link>,
     <link linkend="sc"><code>&lt;sc&gt;</code></link>,
     <link linkend="ec"><code>&lt;ec&gt;</code></link>,
     <link linkend="ph"><code>&lt;ph&gt;</code></link>.</para>
    
</section>

    <section id="canoverlap">
  <title>canOverlap</title>

  <para>Code can overlap - indicates whether or not the spanning code where this attribute is used
    can enclose partial spanning codes (i.e. a start code without its corresponding end code, or an
    end code without its corresponding start code).</para>

  <para><emphasis>Value description:</emphasis> <code>yes</code> or
  <code>no</code>.</para>

  <para><emphasis>Default value:</emphasis> default values for this
  attribute depend on the element in which it is used:</para>

  <itemizedlist>
    <listitem>
      <para>When used in <link linkend="pc"><code>&lt;pc&gt;</code></link>: <code>no</code>.</para>
    </listitem>

    <listitem>
      <para>When used in <link linkend="sc"><code>&lt;sc&gt;</code></link> or <link linkend="ec"><code>&lt;ec&gt;</code></link>: <code>yes</code>.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link></para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="1"&gt;\i1 &lt;/data&gt;
  &lt;data id="2"&gt;\i0 &lt;/data&gt;
  &lt;data id="3"&gt;{\b &lt;/data&gt;
  &lt;data id="4"&gt;}&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;pc id="1" dataRefStart="3" dataRefEnd="4" canOverlap="no"/&gt;Bold,
&lt;sc id="2" dataRef="1" canOverlap="yes"/&gt;both&lt;/pc&gt;,
italics&lt;ec startRef="2" dataRef="2"/&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
</section>

    <section id="canreorder">
  <title>canReorder</title>

  <para>Re-ordering editing hint - indicates whether or not the inline code can be re-ordered. See
      <link linkend="editinghints">Editing Hints section</link>
    for more details.</para>

  <para><emphasis>Value description:</emphasis>
    <code>yes</code> in case the code can be re-ordered, <code>firstNo</code> when the code is the
    first element of a sequence that cannot be re-ordered, <code>no</code> when it is another
    element of such a sequence.</para>

  <para><emphasis>Default value:</emphasis> <code>yes</code>.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>, <link linkend="ph"><code>&lt;ph&gt;</code></link>.</para>
</section>

    <section id="canResegment">
    <title>canResegment</title>
    
    <para>Can resegment - indicates whether or not the source text in the scope of the given
            <code>canResegment</code> flag can be reorganized into a different structure of <link linkend="segment"><code>&lt;segment&gt;</code></link> elements within the same parent <link linkend="unit"><code>&lt;unit&gt;</code></link>.</para>
    
    <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code>.</para>
        
    <para><emphasis>Default value:</emphasis> default values for this attribute
        depend on the element in which it is used:</para>
    
    <itemizedlist>
        <listitem>
            <para>When used in <link linkend="file"><code>&lt;file&gt;</code></link>:</para>
            
            <para>The value <code>yes</code>.</para>
        </listitem>
        <listitem>
            <para>When used in any other element:</para>
            <para>The value of the <link linkend="canResegment"><code>canResegment</code></link> attribute of its parent element.
            </para>   
                
        </listitem>
        
        
        <!--  The following is the verbose version of the above defaults descriptions:
        
        <listitem>
                
             <para>When used in <olink targetdoc="../elements/structural/group.xml" targetptr="group"
                        ><code>&lt;group&gt;</code></olink>:</para>
            
            <para>The value of the <olink targetdoc="canResegment.xml"
                targetptr="canResegment"><code>canResegment</code></olink> attribute of its parent 
                <olink
                    targetdoc="../elements/structural/group.xml"
                    targetptr="group"><code>&lt;group&gt;</code></olink>, or 
                
                <olink>
                    targetdoc="../elements/structural/file.xml"
                    targetptr="file"><code>&lt;file&gt;</code></olink> element.</para>
        </listitem>
           
        
        <listitem>
            <para>When used in <olink targetdoc="../elements/structural/unit.xml"
                targetptr="unit"><code>&lt;unit&gt;</code></olink>:</para>
            
            <para>The value of the <olink targetdoc="canResegment.xml"
                targetptr="canResegment"><code>canResegment</code></olink> attribute of its parent 
                <olink
                    targetdoc="../elements/structural/group.xml"
                    targetptr="group"><code>&lt;group&gt;</code></olink>, or 
                
                <olink
                    targetdoc="../elements/structural/file.xml"
                    targetptr="file"><code>&lt;file&gt;</code></olink> element.</para>
        </listitem>
      
    
    <listitem>
        <para>When used in <olink targetdoc="../elements/structural/segment.xml"
            targetptr="segment"><code>&lt;segment&gt;</code></olink>:</para>
        
        <para>The value of the <olink targetdoc="canResegment.xml"
            targetptr="canResegment"><code>canResegment</code></olink> attribute of its parent 
            <olink
                targetdoc="../elements/structural/unit.xml"
                targetptr="unit"><code>&lt;unit&gt;</code></olink> element.</para>
    </listitem>
        
         -->
    </itemizedlist>
    
    
    <para><emphasis>Used in:</emphasis>
        <link linkend="file"><code>&lt;file&gt;</code></link>
        <link linkend="group"><code>&lt;group&gt;</code></link>
        <link linkend="unit"><code>&lt;unit&gt;</code></link>, and
        <link linkend="segment"><code>&lt;segment&gt;</code></link>.    
    </para>
    
</section>

    <section id="category">
    <title>category</title>
    
    <para>Category - provides a way to categorize notes.</para>
    
    <para><emphasis>Value description:</emphasis> Text.</para>
    
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="note"><code>&lt;note&gt;</code></link>.</para>
    
</section>

    <section id="copyof">
  <title>copyOf</title>

  <para>Reference to base code - holds the <link linkend="id"><code>id</code></link> of the base code of a copied code.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN. The <link linkend="id"><code>id</code></link> value of the base
  code of which this code is a copy.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Äter &lt;pc id="1"&gt;katter möss&lt;/pc&gt;?&lt;/source&gt;
  &lt;target&gt;Do &lt;pc id="1"&gt;cats&lt;/pc&gt; eat &lt;pc id="2" copyOf="1"&gt;mice&lt;/pc&gt;?
  &lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
</section>


    <section id="dataref">
  <title>dataRef</title>

  <para>Original data reference - holds the identifier of the <link linkend="data"><code>&lt;data&gt;</code></link>
    element that contains the original data for a given inline code.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN that
    <glossterm>must</glossterm> be the value of the <link linkend="id"><code>id</code></link> attribute of
  one of the <link linkend="data"><code>&lt;data&gt;</code></link> element listed in the
  same <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;{0}&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Error in '&lt;ph id="1" dataRef="d1"/&gt;'.&lt;/source&gt;
  &lt;target&gt;Erreur dans '&lt;ph id="1" dataRef="d1"/&gt;'.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>The example above shows a <link linkend="ph"><code>&lt;ph&gt;</code></link> element that has its original
  data stored outside the content, in a <link linkend="data"><code>&lt;data&gt;</code></link> element.</para>

 </section>

    <section id="datarefend">
  <title>dataRefEnd</title>

  <para>Original data reference - holds the identifier of the <link linkend="data"><code>&lt;data&gt;</code></link>
    element that contains the original data for the end marker of a given inline code.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN that <glossterm>must</glossterm> be
  the value of the <link linkend="id"><code>id</code></link> attribute of one of the <link linkend="data"><code>&lt;data&gt;</code></link> element listed in the
  same <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;EM&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/EM&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Efficiency&lt;pc&gt;
is the operative word here.&lt;/source&gt;
  &lt;target&gt;&lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Efficacité&lt;pc&gt;
est le mot clé ici.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>The example above shows two <link linkend="pc"><code>&lt;pc&gt;</code></link> elements with their original
  data stored outside the content, in two <link linkend="data"><code>&lt;data&gt;</code></link> elements.</para>
</section>

    <section id="datarefstart">
  <title>dataRefStart</title>

  <para>Original data reference - holds the identifier of the <link linkend="data"><code>&lt;data&gt;</code></link>
    element that contains the original data for the start marker of a given inline code.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN that <glossterm>must</glossterm> be
  the value of the <link linkend="id"><code>id</code></link> attribute of one of the <link linkend="data"><code>&lt;data&gt;</code></link> element listed in the
  same <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;EM&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/EM&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Efficiency&lt;/pc&gt;
is the operative word here.&lt;/source&gt;
  &lt;target&gt;&lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Efficacité&lt;/pc&gt;
est le mot clé ici.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>The example above shows two <link linkend="pc"><code>&lt;pc&gt;</code></link> elements with their original
  data stored outside the content, in two <link linkend="data"><code>&lt;data&gt;</code></link> elements.</para>
</section>


    <section id="dir">
  <title>dir</title>

  <para>Directionality - indicates the directionality of content.</para>

  <para><emphasis>Value description:</emphasis>
    <code>ltr</code> (Left-To-Right), <code>rtl</code> (Right-To-Left), or <code>auto</code>
    (determined heuristically, based on the first strong directional character in scope, see <link linkend="uax9">[UAX #9]</link>).</para>

  <para><emphasis>Default value:</emphasis> default values for this attribute
  depend on the element in which it is used:</para>

  <itemizedlist>
    <listitem>
      <para>When used in a <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, or <link linkend="ec"><code>&lt;ec&gt;</code></link>
        element that has a <link linkend="source"><code>&lt;source&gt;</code></link> element as its parent:</para>

      <para>The value of the <link linkend="srcdir"><code>srcDir</code></link> attribute of the <link linkend="unit"><code>&lt;unit&gt;</code></link> element, in which the elements are located.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, or <link linkend="ec"><code>&lt;ec&gt;</code></link>
        element that has a <link linkend="target"><code>&lt;target&gt;</code></link> element as its parent: </para>

      <para>The value of the <link linkend="trgdir"><code>trgDir</code></link> attribute of the <link linkend="unit"><code>&lt;unit&gt;</code></link> element, in which the elements are located.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, or <link linkend="ec"><code>&lt;ec&gt;</code></link>
        element that has a <link linkend="pc"><code>&lt;pc&gt;</code></link> element as its parent:</para>

      <para>The value of the <link linkend="dir"><code>dir</code></link>
        attribute of the parent <link linkend="pc"><code>&lt;pc&gt;</code></link> element.</para>
    </listitem>

    <listitem>
      <para>When used in <link linkend="data"><code>&lt;data&gt;</code></link>:</para>

      <para>The value <code>auto</code>.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Used in:</emphasis> 
    <!--  killed on source and target to simplify re-segmentation PRs and to make use of BiDi control characters less likely 
      <olink
  targetdoc="../elements/structural/source.xml"
  targetptr="source"><code>&lt;source&gt;</code></olink>, <olink
  targetdoc="../elements/structural/target.xml"
  targetptr="target"><code>&lt;target&gt;</code></olink>, --> <link linkend="data"><code>&lt;data&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, and <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>
</section>

    <section id="disp">
  <title>disp</title>

  <para>Display text - holds an alternative user-friendly display representation of the original
    data of the inline code.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;{1}&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
 &lt;source&gt;Welcome back &lt;ph id="1" disp="[UserName]" dataRef="d1"/&gt;!&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <note>
    <para>To provide a plain text equivalent of the code, use the <link linkend="equiv"><code>equiv</code></link>
    attribute.</para>
  </note>
</section>

    <section id="dispend">
  <title>dispEnd</title>

  <para>Display text - holds an alternative user-friendly display representation of the original
    data of the end marker of an inline code.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;\cf1\ul\b\f1\fs24 &lt;/data&gt;
  &lt;data id="d2"&gt;\cf0\ulnone\b0\f0\fs22 &lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Example of &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"
dispStart="&amp;lt;span&gt;" dispEnd="&amp;lt;/span&gt;"&gt;formatted
text&lt;/pc&gt;.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>In the example above, the <link linkend="dispstart"><code>dispStart</code></link> and <link linkend="dispend"><code>dispEnd</code></link>
  attributes provide a more user-friendly representation of the original
  formatting codes.</para>

  <note>
    <para>To provide a plain text equivalent of the code, use the <link linkend="equivend"><code>equivEnd</code></link> attribute.</para>
  </note>
</section>

    <section id="dispstart">
  <title>dispStart</title>

  <para>Display text - holds an alternative user-friendly display representation of the original
    data of the start marker of an inline code.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;\cf1\ul\b\f1\fs24 &lt;/data&gt;
  &lt;data id="d2"&gt;\cf0\ulnone\b0\f0\fs22 &lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Example of &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"
dispStart="&amp;lt;span&gt;" dispEnd="&amp;lt;/span&gt;"&gt;formatted
text&lt;/pc&gt;.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>In the example above, the <link linkend="dispstart"><code>dispStart</code></link> and <link linkend="dispend"><code>dispEnd</code></link>
  attributes provide a more user-friendly representation of the original
  formatting codes.</para>

  <note>
    <para>To provide a plain text equivalent of the code, use the <link linkend="equivstart"><code>equivStart</code></link> attribute.</para>
  </note>
</section>

    <section id="equiv">
  <title>equiv</title>

  <para>Equivalent text - holds a plain text representation of the original data of the inline code
    that can be used when generating a plain text representation of the content.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> an empty string.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;amp;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Open &lt;ph id="1" equiv="" dataRef="d1"/&gt;File&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <para>In this example the <link linkend="equiv"><code>equiv</code></link> attribute of the <link linkend="ph"><code>&lt;ph&gt;</code></link> element is used to indicate
  that the original data of the code can be ignored in the text representation
  of the string. This could, for instance, help a spell-checker tool to
  process the content as "Open File".</para>

  <note>
    <para>To provide a user-friendly representation, use the <link linkend="disp"><code>disp</code></link>
    attribute.</para>
  </note>
</section>

    <section id="equivend">
  <title>equivEnd</title>

  <para>Equivalent text - holds a plain text representation of the original data of the end marker
    of an inline code that can be used when generating a plain text representation of the
    content.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> an empty string</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;span class="link" onclick="linkTo('dbId5345')"&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/span&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;The jam made of &lt;pc id="1" dataRefStart="d1" equivStart=""
dataRefEnd="d2" equivEnd=""&gt;lingonberries&lt;/pc&gt; is quite tasty.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <note>
    <para>To provide a user-friendly representation, use the <link linkend="dispend"><code>dispEnd</code></link>
    attribute.</para>
  </note>
</section>

    <section id="equivstart">
  <title>equivStart</title>

  <para>Equivalent text - holds a plain text representation of the original data of the start marker
    of an inline code that can be used when generating a plain text representation of the
    content.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> an empty string</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;span class="link" onclick="linkTo('dbId5345')"&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/span&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;The jam made of &lt;pc id="1" dataRefStart="d1" equivStart=""
dataRefEnd="d2" equivEnd=""&gt;lingonberries&lt;/pc&gt; is quite tasty.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

  <note>
    <para>To provide a user-friendly representation, use the <link linkend="dispstart"><code>dispStart</code></link> attribute.</para>
  </note>
</section>

    <section id="hex">
  <title>hex</title>

  <para>Hexadecimal code point - holds the value of a Unicode code point that is invalid in
    XML.</para>

  <para><emphasis>Value description:</emphasis> A canonical representation of
    the hexBinary <link linkend="XMLSchema2">[XML Schema Datatypes]</link> data type: Two hexadecimal digits to represent each octet
  of the Unicode code point. The allowed values are any of the values
  representing code points invalid in XML, between hexadecimal 0000 and 10FFFF
  (both included).</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="cp"><code>&lt;cp&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;cp hex="001A"/&gt;&lt;cp hex="0003"/&gt;</programlisting>

  <para>The example above shows a character U+001A and a character U+0003 as they have to be
    represented in XLIFF.</para>
</section>

    <section id="href">
    <title>href</title>
    
    <para>href - a pointer to the location of an external skeleton file pertaining to the
        enclosing <link linkend="file"><code>&lt;file&gt;</code></link> element..</para>
    
    <para><emphasis>Value description:</emphasis> IRI.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link>.</para>
    
</section>

    <section id="id">
  <title>id</title>

  <para>Identifier - a character string used to identify an element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN. The scope of the values for this attribute
    depends on the element, in which it is used.</para>

  <itemizedlist>
    <listitem>
      <para>When used in a <link linkend="file"><code>&lt;file&gt;</code></link> element:</para>
      <para>The value <glossterm>must</glossterm> be unique among all <link linkend="file"><code>&lt;file&gt;</code></link> <code>id</code> attribute values within the enclosing  <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    </listitem>

    <listitem>
      <para>When used in <link linkend="group"><code>&lt;group&gt;</code></link> elements:</para>
      <para>The value <glossterm>must</glossterm> be unique among all <link linkend="group"><code>&lt;group&gt;</code></link> <code>id</code> attribute values within the enclosing  <link linkend="file"><code>&lt;file&gt;</code></link> element.</para>
    </listitem>
    
    <listitem>
      <para>When used in <link linkend="unit"><code>&lt;unit&gt;</code></link> elements:</para>
      <para>The value <glossterm>must</glossterm> be unique among all <link linkend="unit"><code>&lt;unit&gt;</code></link> <code>id</code> attribute values within the enclosing <link linkend="file"><code>&lt;file&gt;</code></link> element.</para>
    </listitem>
    
    <listitem>
      <para>When used in <link linkend="note"><code>&lt;note&gt;</code></link> elements:</para>
      <para>The value <glossterm>must</glossterm> be unique among all <link linkend="note"><code>&lt;note&gt;</code></link> <code>id</code> attribute values within the immediate enclosing 
        <link linkend="file"><code>&lt;file&gt;</code></link>,
        <link linkend="group"><code>&lt;group&gt;</code></link>, or
        <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    </listitem>
    
    <listitem>
      <para>When used in <link linkend="data"><code>&lt;data&gt;</code></link> elements:</para>
      <para>The value <glossterm>must</glossterm> be unique among all <link linkend="data"><code>&lt;data&gt;</code></link> <code>id</code> attribute values within the enclosing 
        <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    </listitem>
    
    <listitem>
      <para>When used in 
        <link linkend="segment"><code>&lt;segment&gt;</code></link>,
        <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>,
        <link linkend="mrk"><code>&lt;mrk&gt;</code></link>,
        <link linkend="sm"><code>&lt;sm&gt;</code></link>,
        <link linkend="pc"><code>&lt;pc&gt;</code></link>,
        <link linkend="sc"><code>&lt;sc&gt;</code></link>,
        <link linkend="ec"><code>&lt;ec&gt;</code></link>,
        or <link linkend="ph"><code>&lt;ph&gt;</code></link> elements:</para>
      <itemizedlist>
        <listitem><para>The inline elements enclosed by a <link linkend="target"><code>&lt;target&gt;</code></link> element <glossterm>must</glossterm> use the duplicate <code>id</code> values
      of their corresponding inline elements enclosed within the sibling <link linkend="source"><code>&lt;source&gt;</code></link> element if and only if those corresponding elements exist.</para></listitem>
        <listitem><para>Except for the above exception, the value <glossterm>must</glossterm> be unique among all of the above within the
          enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> 
          element.</para></listitem>
      </itemizedlist>
    </listitem>
  </itemizedlist>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="file"><code>&lt;file&gt;</code></link>,
    <link linkend="group"><code>&lt;group&gt;</code></link>,
    <link linkend="unit"><code>&lt;unit&gt;</code></link>,
    <link linkend="note"><code>&lt;note&gt;</code></link>,
    <link linkend="segment"><code>&lt;segment&gt;</code></link>, <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>, <link linkend="data"><code>&lt;data&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>, <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="mrk"><code>&lt;mrk&gt;</code></link> and <link linkend="sm"><code>&lt;sm&gt;</code></link>.</para>
</section>

    <section id="isolated">
  <title>isolated</title>

  <para>Orphan code flag - indicates if the start or end marker of a spanning inline code is not in
    the same <link linkend="unit"><code>&lt;unit&gt;</code></link> as its corresponding end or start code.</para>

  <para><emphasis>Value description:</emphasis>
    <code>yes</code> if this start or end code is not in the same <link linkend="unit"><code>&lt;unit&gt;</code></link>
    as its corresponding end or start code, <code>no</code> if both codes are in the same <link linkend="unit"><code>&lt;unit&gt;</code></link>.</para>

  <para><emphasis>Default value:</emphasis> <code>no</code>.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific"><!-- &lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;pc id="1"&gt;Warning: File not found.&lt;/pc&gt;&lt;/source&gt;
 &lt;/segment&gt;
 &lt;mtc:matches&gt;
  &lt;mtc:match&gt;
    &lt;source&gt;&lt;sc id="1" isolated="yes"/&gt;Warning:&lt;/source&gt;
    &lt;target&gt;&lt;sc id="1" isolated="yes"/&gt;Attention :&lt;/target&gt;
  &lt;/mtc:match&gt;
 &lt;/match&gt;
&lt;/unit&gt; -->
   &lt;file id="f2" xmlns:abc="urn:abc"&gt;
   &lt;unit id="1"&gt;
     &lt;mtc:matches&gt;
       &lt;mtc:match id="tc01" ref="seg2"&gt;
         &lt;source&gt;&lt;sc id="1" isolated="yes"/&gt;Warning:&lt;/source&gt;
         &lt;target&gt;&lt;sc id="1" isolated="yes"/&gt;Attention :&lt;/target&gt;
       &lt;/mtc:match&gt;
     &lt;/mtc:matches&gt;
     &lt;segment id="seg2"&gt;
       &lt;source&gt;&lt;pc id="1"&gt;Warning: File not found.&lt;/pc&gt;&lt;/source&gt;
     &lt;/segment&gt;
   &lt;/unit&gt;
 &lt;/file&gt;</programlisting>

  <para>In the example above the <link linkend="sc"><code>&lt;sc&gt;</code></link> elements have their <link linkend="isolated"><code>isolated</code></link>
  attribute set to <code>yes</code> because they do not have their
  corresponding <link linkend="ec"><code>&lt;ec&gt;</code></link> elements.</para>
</section>

    <section id="name">
    <title>name</title>

    <para>Resource name - the original identifier of the resource corresponding to the
            <firstterm>Extracted</firstterm>
        <link linkend="unit"><code>&lt;unit&gt;</code></link> or <link linkend="unit"><code>&lt;group&gt;</code></link>.</para>
    <para>For example: the key in the key/value
        pair in a Java properties file, the ID of a string in a Windows string table, the index
        value of an entry in a database table, etc.</para>

    <para><emphasis>Value description:</emphasis> Text.</para>

    <para><emphasis>Default value:</emphasis> undefined.</para>

    <para><emphasis>Used in:</emphasis> <link linkend="unit"><code>&lt;unit&gt;</code></link> and <link linkend="unit"><code>&lt;group&gt;</code></link>.</para>

</section>


    <section id="order">
    <title>order</title>
    
    <para>target order - indicates the order, in which to compose the target content parts.</para>
    
    <para><emphasis>Value description:</emphasis> A positive integer.</para>
        
    <para><emphasis>Default value:</emphasis> implicit, see below</para>
    <para>When order is not explicitly set, the <link linkend="target"><code>&lt;target&gt;</code></link>
        <link linkend="order"><code>order</code></link> corresponds to its sibling <link linkend="source"><code>&lt;source&gt;</code></link>, i.e. it is not being moved anywhere when
        composing target content of the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> and the implicit <link linkend="order"><code>order</code></link> value is of that position within the <link linkend="unit"><code>&lt;unit&gt;</code></link>. </para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="target"><code>&lt;target&gt;</code></link>.</para>
<itemizedlist>
    <title>Constraints</title>
    <listitem><para>The value of the <link linkend="order"><code>order</code></link> attribute <glossterm>must</glossterm> be unique
        within the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para></listitem>
</itemizedlist>    
<para>See the <link linkend="segorder">Segments
            Order</link> section for the normative usage description.</para>
</section>

    <section id="original">
    <title>original</title>
    
    <para>Original file - a pointer to the location of the original document from which the content
        of the enclosing <link linkend="file"><code>&lt;file&gt;</code></link> element is extracted.</para>
    
    <para><emphasis>Value description:</emphasis> IRI.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="file"><code>&lt;file&gt;</code></link>.</para>
    
</section>

    <section id="priority">
    <title>priority</title>

    <para>Priority - provides a way to prioritize notes.</para>

    <para><emphasis>Value description:</emphasis> Integer 1-10.</para>

    <para><emphasis>Default value:</emphasis> <code>1</code></para>

    <para><emphasis>Used in:</emphasis> <link linkend="note"><code>&lt;note&gt;</code></link>.</para>

    <note><para>Please note that 1 is the highest priority that can be interpreted as an alert,
        e.g. an <link linkend="ITS20">[ITS]</link> <ulink url="http://www.w3.org/TR/its20/#locNote-datacat">Localization Note</ulink> of the type alert.
        The best practice is to use only one alert per an annotated element, and the full scale of 2-10 can be used for prioritizing notes of lesser importance than the alert.</para></note>
</section>

    <section id="ref">
  <title>ref</title>

  <para>Reference - holds a reference for the associated annotation.</para>

  <para><emphasis>Value description:</emphasis> A value of the <link linkend="XMLSchema2">[XML Schema Datatypes]</link> type
  anyURI. The semantics of the value depends on the type of annotation:</para>

  <itemizedlist>
    <listitem>
      <para>When used in a <link linkend="termAnnotation">term
          annotation</link>, the URI value is referring to a resource providing information about
        the term.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="matchAnnotation">translation candidates annotation</link>, the URI value is referring
        to an external resource providing information about the translation candidate.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="commentAnnotation">comment annotation</link>, the value is referring to a <link linkend="note"><code>&lt;note&gt;</code></link> element within the same enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link>.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="customAnnotation">custom annotation</link>, the value is
      defined by each custom annotation.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="mrk"><code>&lt;mrk&gt;</code></link> or <link linkend="sm"><code>&lt;sm&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;The &lt;pc id="1"&gt;ref&lt;/pc&gt; attribute of a term
annotation holds a &lt;mrk id="m1" type="term"
ref="http://dbpedia.org/page/Uniform_Resource_Identifier"&gt;URI&lt;/mrk&gt;
pointing to more information about the given term.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
<!--  This Constraint does not make sense with the current fragmnt identifying mechanism
  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <olink targetdoc="ref.xml" targetptr="ref"><code>ref</code></olink>
        attribute <glossterm>should</glossterm> point to an element that is a child of the <olink
          targetdoc="../elements/structural/unit.xml" targetptr="unit"
          ><code>&lt;unit&gt;</code></olink> element where the parent of the attribute is
        located.</para>
      <para>Rationale: Pointing to an element located
      elsewhere is likely to prevent proper execution of Processing
      Requirements.</para>
    </listitem>
  </itemizedlist> -->
</section>



    <!--  removed skeleton attribute in response to comments 007 and 008  -->

    <section id="srcdir">
  <title>srcDir</title>

  <para>Source directionality - indicates the directionality of the source content.</para>

  <para><emphasis>Value description:</emphasis>
    <code>ltr</code> (Left-To-Right), <code>rtl</code> (Right-To-Left), , or <code>auto</code>
    (determined heuristically, based on the first strong directional character in scope, see <link linkend="uax9">[UAX #9]</link>).</para>

  <para><emphasis>Default value:</emphasis> default values for this attribute depend on the element
    in which it is used:</para>

  <itemizedlist>
    <listitem>
      <para>When used in <link linkend="file"><code>&lt;file&gt;</code></link>:</para>

      <para>The value <code>auto</code>.</para>
    </listitem>

    <listitem>
      <para>When used in any other element:</para>

      <para>The value of the <link linkend="srcdir"><code>srcDir</code></link> attribute of its parent element.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>, <link linkend="group"><code>&lt;group&gt;</code></link>, and <link linkend="unit"><code>&lt;unit&gt;</code></link>. </para>
</section>

    <section id="srclang">
    <title>srcLang</title>
    
    <para>Source language - the code of the language, in which the text to be <firstterm>Translated</firstterm> is
        expressed.</para>
    
    <para><emphasis>Value description:</emphasis> A language code as described in <link linkend="bcp47">[BCP 47]</link>.</para>
    
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="xliff"><code>&lt;xliff&gt;</code></link>.</para>
</section>

    <section id="startref">
  <title>startRef</title>

  <para>Start code or marker reference - The <link linkend="id"><code>id</code></link> of the <link linkend="sc"><code>&lt;sc&gt;</code></link> element or the <link linkend="sm"><code>&lt;sm&gt;</code></link> element a given <link linkend="ec"><code>&lt;ec&gt;</code></link> element
    or <link linkend="em"><code>&lt;em&gt;</code></link>
    element corresponds.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ec"><code>&lt;ec&gt;</code></link>, <link linkend="em"><code>&lt;em&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;sc id="1"/&gt;Bold, &lt;sc id="2"/&gt;both&lt;ec startRef="1"/&gt;,
italics&lt;ec startRef="2"/&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
</section>
    <section id="state">
  <title>state</title>

  <para>State - indicates the state of the translation of a segment.</para>

    <para><emphasis>Value description:</emphasis> The value <glossterm>must</glossterm> be set to one of the following values:</para>

  <simplelist type="vert">
   <member><code>initial</code> - indicates the segment is in its initial state.</member>
   <member><code>translated</code> - indicates the segment has been translated.</member>
   <member><code>reviewed</code> - indicates the segment has been reviewed.</member>
   <member><code>final</code> - indicates the segment is finalized and ready to be used.</member>
  </simplelist>
  <para>One can further specify the state of the <firstterm>Translation</firstterm> using the <link linkend="substate"><code>subState</code></link> attribute.</para>

    <para><emphasis>Default value:</emphasis> <code>initial</code></para>

  <para><emphasis>Used in:</emphasis> <link linkend="segment"><code>&lt;segment&gt;</code></link></para>

    <!--  This falg got killed in the August 20 2013 meeting <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>
                The <glossterm>optional</glossterm> attribute <link linkend="state"><code>state</code></link> <glossterm>must not</glossterm> be set to <code>final</code>
                if and only if the <glossterm>optional</glossterm> attribute <olink targetdoc="approved.xml" targetptr="approved"><code>approved</code></olink> on the same
                <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> element is set to <code>no</code>.
            </para>
            <para>
                The <glossterm>optional</glossterm> attribute <link linkend="state"><code>state</code></link> <glossterm>must not</glossterm> be set to <code>initial</code>
                if and only if the optional attribute <olink targetdoc="approved.xml" targetptr="approved"><code>approved</code></olink> on the same
                <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> element is set to <code>yes</code>.
            </para>
        </listitem>
    </itemizedlist> -->
    <itemizedlist>
        <title>Processing Requirements</title>


        <listitem>
            <para><firstterm>Writers</firstterm> updating the attribute <link linkend="state"><code>state</code></link> <glossterm>must</glossterm> also update or delete
                <link linkend="substate"><code>subState</code></link>.</para>
        </listitem>
    </itemizedlist>
</section>


    <section id="subflows">
  <title>subFlows</title>

  <para>Sub-flows list - holds a list of <link linkend="id"><code>id</code></link> attributes corresponding to the <link linkend="unit"><code>&lt;unit&gt;</code></link>
    elements that contain the sub-flows for a given inline code.</para>

  <para><emphasis>Value description:</emphasis> A list of NMTOKEN values
  separated by spaces. Each value corresponds to the <link linkend="id"><code>id</code></link> attribute of a <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <para>See the example in the <link linkend="subflowsdesc">Sub-Flows section</link>.</para>
</section>

    <section id="subflowsend">
  <title>subFlowsEnd</title>

  <para>Sub-flows list - holds a list of <link linkend="id"><code>id</code></link> attributes corresponding to the <link linkend="unit"><code>&lt;unit&gt;</code></link>
    elements that contain the sub-flows for the end marker of a given inline code.</para>

  <para><emphasis>Value description:</emphasis> A list of NMTOKEN values
  separated by spaces. Each value corresponds to the <link linkend="id"><code>id</code></link> attribute of a <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <para>See the example in the <link linkend="subflowsdesc">Sub-Flows section</link>.</para>
</section>

    <section id="subflowsstart">
  <title>subFlowsStart</title>

  <para>Sub-flows list - holds a list of <link linkend="id"><code>id</code></link> attributes corresponding to the <link linkend="unit"><code>&lt;unit&gt;</code></link>
    elements that contain the sub-flows for the start marker of a given inline code.</para>

  <para><emphasis>Value description:</emphasis> A list of NMTOKEN values
  separated by spaces. Each value corresponds to the <link linkend="id"><code>id</code></link> attribute of a <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>.</para>

  <para><emphasis>Example:</emphasis></para>

  <para>See the example in the <link linkend="subflowsdesc">Sub-Flows section</link>.</para>
</section>

    <section id="substate">
  <title>subState</title>

  <para>subState - indicates a user-defined status for the <link linkend="segment"><code>&lt;segment&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis></para>

  <para>The value is composed of a prefix and a sub-value separated by a
  character <code>:</code> (U+003A).</para>

  <para>The prefix is a string uniquely identifying a collection of values for
  a specific authority. The sub-value is any string value defined by an
  authority.</para>

  <para>The prefix <code>xlf</code> is reserved for this specification.</para>

  <para>Other prefixes and sub-values <glossterm>may</glossterm> be defined by the users.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="segment"><code>&lt;segment&gt;</code></link></para>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>If the attribute <link linkend="substate"><code>subState</code></link> is used, the attribute <link linkend="state"><code>state</code></link>
        <glossterm>must</glossterm> be explicitly set.</para>
    </listitem>
    </itemizedlist>
    <itemizedlist>
      <title>Processing Requirements</title>
      
  
    <listitem>
      <para><firstterm>Writers</firstterm> updating the attribute <link linkend="state"><code>state</code></link> <glossterm>must</glossterm> also update or delete <link linkend="substate"><code>subState</code></link>.</para>
      </listitem>
  </itemizedlist>
</section>
    <section id="subtype">
  <title>subType</title>

  <para>subType - indicates the secondary level type of an inline code.</para>

  <para><emphasis>Value description:</emphasis></para>

  <para>The value is composed of a prefix and a sub-value separated by a
  character <code>:</code> (U+003A).</para>

  <para>The prefix is a string uniquely identifying a collection of sub-values for a specific authority.
    The sub-value is any string value defined by the authority.</para>

  <para>The prefix <code>xlf</code> is reserved for this specification, and
  the following sub-values are defined:</para>

  <simplelist type="vert">
    <member><code>xlf:lb</code> - Line break</member>

    <member><code>xlf:pb</code> - Page break</member>

    <member><code>xlf:b</code> - Bold</member>

    <member><code>xlf:i</code> - Italics</member>

    <member><code>xlf:u</code> - Underlined</member>

    <member><code>xlf:var</code> - Variable</member>
  </simplelist>

  <para>Other prefixes and sub-values <glossterm>may</glossterm> be defined by the users.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link> and <link linkend="ph"><code>&lt;ph&gt;</code></link></para>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>If the attribute <link linkend="subtype"><code>subType</code></link> is used, the attribute <link linkend="type"><code>type</code></link>
        <glossterm>must</glossterm> be specified as well.</para>
    </listitem>
    <listitem>
      <para>The reserved <code>xlf:</code> prefixed values map onto the <link linkend="type"><code>type</code></link> attribute values as follows:</para>
      <simplelist type="vert">
        <member> For <code>xlf:b</code>, <code>xlf:i</code>, <code>xlf:u</code>,
          <code>xlf:lb</code>, and <code>xlf:pb</code>, the <glossterm>required</glossterm> value of
          the <link linkend="type"><code>type</code></link> attribute is
            <code>fmt</code>.</member>
        <member> For <code>xlf:var</code>, the <glossterm>required</glossterm> value of the <link linkend="type"><code>type</code></link> attribute is
            <code>ui</code>.</member>
      </simplelist>
    </listitem>
  </itemizedlist>
  <itemizedlist>
    <title>Processing Requirements</title>
    
    
    <listitem>
      <para><firstterm>Modifiers</firstterm> updating the attribute <link linkend="type"><code>type</code></link>
        <glossterm>must</glossterm> also update or delete <link linkend="subtype"><code>subType</code></link>.</para>
    </listitem>
  </itemizedlist>
</section>

    <section id="trglang">
    <title>trgLang</title>
    
    <para>Target language - the code of the language, in which the <firstterm>Translated</firstterm> text is
        expressed.</para>
    
    <para><emphasis>Value description:</emphasis> A language code as described in <link linkend="bcp47">[BCP 47]</link>.</para>
    
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="xliff"><code>&lt;xliff&gt;</code></link>.</para>
</section>

    <section id="translate">
    <title>translate</title>

    <para>Translate - indicates whether or not the source text in the scope of the given <code>translate</code> flag is intended
        for <firstterm>Translation</firstterm>.</para>

    <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code>.</para>

    <para><emphasis>Default value:</emphasis> default values for this attribute
        depend on the element in which it is used:</para>

    <itemizedlist>
        <listitem>
            <para>When used in <link linkend="file"><code>&lt;file&gt;</code></link>:</para>

            <para>The value <code>yes</code>.</para>
        </listitem>
        <listitem>
            <para>When used in any other admissible structural element:</para>
            <para>The value of the <link linkend="translate"><code>translate</code></link> attribute of its parent element.
            </para>

        </listitem>
        <listitem>
            <para>When used in annotations markers
                <link linkend="mrk"><code>&lt;mrk&gt;</code></link> or
                <link linkend="sm"><code>&lt;sm&gt;</code></link>:</para>


            <para>The value of the <link linkend="translate"><code>translate</code></link> attribute of the innermost <link linkend="mrk"><code>&lt;mrk&gt;</code></link> or <link linkend="unit"><code>&lt;unit&gt;</code></link> element, in which the marker in question is located.
            </para>

        </listitem>

        <!-- Caveat! @translte has been removed from <segment> to simplify translation state algorithm..
            The following is the verbose version of the above defaults descriptions:

        <listitem>

             <para>When used in <olink targetdoc="../elements/structural/group.xml" targetptr="group"
                        ><code>&lt;group&gt;</code></olink>:</para>

            <para>The value of the <olink targetdoc="translate.xml"
                targetptr="translate"><code>translate</code></olink> attribute of its parent
                <olink
                    targetdoc="../elements/structural/group.xml"
                    targetptr="group"><code>&lt;group&gt;</code></olink>, or

                <olink>
                    targetdoc="../elements/structural/file.xml"
                    targetptr="file"><code>&lt;file&gt;</code></olink> element.</para>
        </listitem>


        <listitem>
            <para>When used in <olink targetdoc="../elements/structural/unit.xml"
                targetptr="unit"><code>&lt;unit&gt;</code></olink>:</para>

            <para>The value of the <olink targetdoc="translate.xml"
                targetptr="translate"><code>translate</code></olink> attribute of its parent
                <olink
                    targetdoc="../elements/structural/group.xml"
                    targetptr="group"><code>&lt;group&gt;</code></olink>, or

                <olink
                    targetdoc="../elements/structural/file.xml"
                    targetptr="file"><code>&lt;file&gt;</code></olink> element.</para>
        </listitem>


    <listitem>
        <para>When used in <olink targetdoc="../elements/structural/segment.xml"
            targetptr="segment"><code>&lt;segment&gt;</code></olink>:</para>

        <para>The value of the <olink targetdoc="translate.xml"
            targetptr="translate"><code>translate</code></olink> attribute of its parent
            <olink
                targetdoc="../elements/structural/unit.xml"
                targetptr="unit"><code>&lt;unit&gt;</code></olink> element.</para>
    </listitem>
        <listitem><para>
            When used in <olink targetdoc="../elements/inline/mrk.xml" targetptr="mrk"><code>&lt;mrk></code></olink>:
        </para>
            <para>The value of the <olink targetdoc="translate.xml" targetptr="translate"><code>translate</code></olink> attribute
                of the innermost <olink targetdoc="../elements/inline/mrk.xml" targetptr="mrk"><code>&lt;mrk&gt;</code></olink>
                or <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> element,
                in which the <olink targetdoc="../elements/inline/mrk.xml" targetptr="mrk"><code>&lt;mrk></code></olink> element in question is located.</para>
         </listitem>
        <listitem><para>
            When used in <olink targetdoc="../elements/inline/sm.xml" targetptr="sm"><code>&lt;sm></code></olink>:
        </para>
            <para>The value of the <olink targetdoc="translate.xml" targetptr="translate"><code>translate</code></olink> attribute
                of the innermost <olink targetdoc="../elements/inline/mrk.xml" targetptr="mrk"><code>&lt;mrk&gt;</code></olink>
                or <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> element,
                in which the <olink targetdoc="../elements/inline/sm.xml" targetptr="sm"><code>&lt;sm></code></olink> element in question is located.</para>
        </listitem>
         -->
    </itemizedlist>


    <para><emphasis>Used in:</emphasis>
        <link linkend="file"><code>&lt;file&gt;</code></link>
        <link linkend="group"><code>&lt;group&gt;</code></link>
        <link linkend="unit"><code>&lt;unit&gt;</code></link>,
        <link linkend="mrk"><code>&lt;mrk&gt;</code></link> and
        <link linkend="sm"><code>&lt;sm&gt;</code></link>.
    </para>

</section>

    <section id="trgdir">
  <title>trgDir</title>

  <para>Target directionality - indicates the directionality of the target content.</para>

  <para><emphasis>Value description:</emphasis>
    <code>ltr</code> (Left-To-Right), <code>rtl</code> (Right-To-Left), or <code>auto</code>
    (determined heuristically, based on the first strong directional character in scope, see <link linkend="uax9">[UAX #9]</link>).</para>

  <para><emphasis>Default value:</emphasis> default values for this attribute
  depend on the element in which it is used:</para>

  <itemizedlist>
    <listitem>
      <para>When used in <link linkend="file"><code>&lt;file&gt;</code></link>:</para>

      <para>The value <code>auto</code>.</para>
    </listitem>

    <listitem>
      <para>When used in any other element:</para>

      <para>The value of the <link linkend="trgdir"><code>trgDir</code></link> attribute of its parent element.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>, <link linkend="group"><code>&lt;group&gt;</code></link>, and <link linkend="unit"><code>&lt;unit&gt;</code></link>. </para>
</section>

    <section id="type">
  <title>type</title>
  <para>Type - indicates the type of an element.</para>
  <para><emphasis>Value description:</emphasis> allowed values for this attribute depend on the
    element in which it is used.</para>
  <itemizedlist>
    <listitem>
      <para>When used in <link linkend="pc">
          <code>&lt;pc&gt;</code>
        </link>, <link linkend="sc">
          <code>&lt;sc&gt;</code>
        </link>, <link linkend="ec">
          <code>&lt;ec&gt;</code>
        </link> or <link linkend="ph">
          <code>&lt;ph&gt;</code>
        </link>:</para>
      <para>The value  <glossterm>must</glossterm> be set to one of the following values:</para>
      <simplelist type="vert">
        <member><code>fmt</code> - Formatting (e.g. a &lt;b&gt; element in HTML)</member>
        <member><code>ui</code> - User interface element</member>
        <member><code>quote</code> - Inline quotation (as opposed to a block citation)</member>
        <member><code>link</code> - Link (e.g. an &lt;a&gt; element in HTML)</member>
        <member><code>image</code> - Image or graphic</member>
        <member><code>other</code> - Type of element not covered by any of the other top-level types.</member>
      </simplelist>
      <para><emphasis>Example:</emphasis>
        <programlisting format="linespecific">&lt;segment&gt;
&lt;source xml:lang="cs" &lt;pc type="quote"&gt;<foreignphrase lang="cs">Blázen, chce dobýt točnu v takovém
počasí&lt;/pc&gt;, dodal slovy svého oblíbeného imaginárního autora.</foreignphrase>&lt;/source&gt;
&lt;target xml:lang="en"&gt;&lt;pc type="quote"&gt;Madman, he wants to conquer the
pole in this weather&lt;/pc&gt;, offered he the words of his favourite
imaginary playwright.&lt;/source&gt;
&lt;/segment&gt;</programlisting>
      </para>
      <para>One can further specify the type of a code using the <link linkend="subtype">
          <code>subType</code>
        </link>
      attribute.</para>
      <para><emphasis>Default value:</emphasis> Undefined</para>
    </listitem>
    <listitem>
      <para>When used in <link linkend="mrk">
          <code>&lt;mrk&gt;</code>
        </link> or <link linkend="sm">
          <code>&lt;sm&gt;</code>
        </link>:</para>
      <para>One of the following values: <code>generic</code>, <code>comment</code>,
          <code>term</code>, or a user-defined value that is composed of a prefix and a sub-value
        separated by a character <code>:</code> (U+003A).</para>
      <para>The prefix is a string uniquely identifying a collection of sub-values for a specific authority.
        The sub-value is any string value defined by the authority.</para>
      <para><emphasis>Default value:</emphasis> <code>generic</code></para>
    </listitem>
    <listitem>
      <para>When used in <link linkend="group">
          <code>&lt;group&gt;</code>
        </link> or <link linkend="unit">
          <code>&lt;unit&gt;</code>
        </link>:</para>
      <para>A value that is composed of a prefix and a sub-value
        separated by a character <code>:</code> (U+003A).</para>
      <para>The prefix is a string uniquely identifying a collection of sub-values for a specific authority.
        The sub-value is any string value defined by the authority. The prefix <code>xlf</code> is reserved.</para>
      <para><emphasis>Default value:</emphasis> Undefined</para>
    </listitem>
  </itemizedlist>
  <para><emphasis>Used in:</emphasis> <link linkend="group">
      <code>&lt;group&gt;</code>
    </link>, <link linkend="unit">
      <code>&lt;unit&gt;</code>
    </link>, <link linkend="pc">
      <code>&lt;pc&gt;</code>
    </link>, <link linkend="sc">
      <code>&lt;sc&gt;</code>
    </link>, <link linkend="ec">
      <code>&lt;ec&gt;</code>
    </link>, <link linkend="mrk">
      <code>&lt;mrk&gt;</code>
    </link>,  <link linkend="ph">
      <code>&lt;ph&gt;</code>
    </link> and <link linkend="sm">
      <code>&lt;sm&gt;</code>
    </link>.</para>
  <itemizedlist>
    <title>Processing Requirements</title>
    <listitem>
      <para><firstterm>Modifiers</firstterm> updating the attribute <link linkend="type">
          <code>type</code>
        </link> on <link linkend="pc">
          <code>&lt;pc&gt;</code>
        </link>, <link linkend="sc">
          <code>&lt;sc&gt;</code>
        </link>, <link linkend="ec">
          <code>&lt;ec&gt;</code>
        </link>, or
          <link linkend="ph">
          <code>&lt;ph&gt;</code>
        </link>
        <glossterm>must</glossterm> also update or delete <link linkend="subtype">
          <code>subType</code>
        </link>.</para>
    </listitem>
  </itemizedlist>
</section>

    <section id="value">
  <title>value</title>

  <para>Value - holds a value for the associated annotation.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <itemizedlist>
    <listitem>
      <para>When used in a <link linkend="termAnnotation">term annotation</link>, the value is a
      definition of the term.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="commentAnnotation">comment annotation</link>, the value is
      the text of the comment.</para>
    </listitem>

    <listitem>
      <para>When used in a <link linkend="customAnnotation">custom annotation</link>, the value is
      defined by each custom annotation.</para>
    </listitem>
  </itemizedlist>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis> <link linkend="mrk"><code>&lt;mrk&gt;</code></link> and <link linkend="sm"><code>&lt;sm&gt;</code></link>.</para>
</section>

    <section id="version">
    <title>version</title>

    <para>XLIFF Version - is used to specify the Version of the <firstterm>XLIFF Document</firstterm>. This corresponds to
        the Version number of the XLIFF specification that the <firstterm>XLIFF Document</firstterm> adheres to.</para>

    <para><emphasis>Value description:</emphasis> Text.</para>

    <para><emphasis>Default value:</emphasis> undefined</para>

    <para><emphasis>Used in:</emphasis> <link linkend="xliff"><code>&lt;xliff&gt;</code></link>.</para>

</section>
  </section>

  <section>
    <title>XML namespace</title>

    <para>The attributes from XML namespace used in XLIFF 2.0 are: <link linkend="xml_lang">xml:lang</link> and <link linkend="xml_space">xml:space</link>.</para>

    <section id="xml_lang">
    <title>xml:lang</title>
    
    <para>Language - the xml:lang attribute specifies the language variant of the text of a given
        element. For example: <code>xml:lang="fr-FR"</code> indicates the French language as spoken
        in France.</para>
    
    <para><emphasis>Value description:</emphasis> A language code as described in <link linkend="bcp47">[BCP 47]</link>.</para>
    
    <para><emphasis>Default value:</emphasis> default values for this attribute
        depend on the element in which it is used:</para>
    
    <itemizedlist>
        <listitem>
            <para>When used in a <link linkend="source"><code>&lt;source&gt;</code></link> element:</para>
            
            <para>The value set in the <link linkend="srclang"><code>srcLang</code></link> attribute of the enclosing
                <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
        </listitem>
        <listitem>
            <para>When used in a <link linkend="target"><code>&lt;target&gt;</code></link> element:</para>
            
            <para>The value set in the <link linkend="trglang"><code>trgLang</code></link> attribute of the enclosing
                <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
        </listitem>        
        <listitem>
          <para>When used in any other element:</para>
          <para>The value of the <code>xml:lang</code> attribute of its parent element.
          </para>   
        </listitem>
      
    </itemizedlist>
    
    <para><emphasis>Used in:</emphasis>
        <link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link> and where extension attributes are allowed.</para>
    
  <!--  Removed per https://lists.oasis-open.org/archives/xliff/201403/msg00018.html 
      <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para><code>xml:lang</code> <glossterm>must not</glossterm> be set on either the <olink targetdoc="../elements/structural/file.xml"
                targetptr="file"><code>&lt;file></code></olink>, <olink targetdoc="../elements/structural/group.xml"
                    targetptr="group"><code>&lt;group></code></olink> , or <olink targetdoc="../elements/structural/unit.xml"
                        targetptr="unit"><code>&lt;unit></code></olink> element.</para>
        </listitem>
    </itemizedlist>
    <warning><para>Although the XML namespace is allowed by extensibility on the above constrained extension
            points, setting <code>xml:lang</code> on these would conflict with the semantic of
                <olink targetdoc="srclang" targetptr="srclang"><code>srcLang</code></olink>, <olink
                targetdoc="trglang" targetptr="trglang"><code>trgLang</code></olink>, and
                <code>xml:lang</code> as defined in this specification, because of XLIFF being
            primarily a bilingual format.</para></warning>
      -->
</section>

    <section id="xml_space">
    <title>xml:space</title>
    
    <para>White spaces - the xml:space attribute specifies how white spaces (ASCII spaces, tabs and
        line-breaks) are to be treated.</para>
    
    
    <para><emphasis>Value description:</emphasis>
        <code>default</code> or <code>preserve</code>. The value <code>default</code> signals that
        an application's default white-space processing modes are acceptable for this element; the
        value <code>preserve</code> indicates the intent that applications preserve all the white
        space. This declared intent is considered to apply to all elements within the content of the
        element where it is specified, unless overridden with another instance of the xml:space
        attribute. For more information see <ulink url="http://www.w3.org/TR/REC-xml/#sec-white-space">the section on xml:space</ulink> in the <link linkend="bib_XML">[XML]</link> specification. </para>
    
    <para><emphasis>Default value:</emphasis>  default values for this attribute
        depend on the element in which it is used:</para>
    
    <itemizedlist>
        <listitem>
            <para>When used in <link linkend="data"><code>&lt;data&gt;</code></link>:</para>
            
            <para>The value <code>preserve</code>.</para>
        </listitem>
        <listitem>
            <para>When used in <link linkend="xliff"><code>&lt;xliff&gt;</code></link>:</para>
            
            <para>The value <code>default</code>.</para>
        </listitem>
        <listitem>
            <para>When used in any other element:</para>
            <para>The value of the <code>xml:space</code> attribute of its parent element.
            </para>   
        </listitem>
    </itemizedlist>
    
    <para><emphasis>Used in:</emphasis> <link linkend="xliff"><code>&lt;xliff&gt;</code></link>, 
        <link linkend="file"><code>&lt;file&gt;</code></link>,
        <link linkend="group"><code>&lt;group&gt;</code></link>,
        <link linkend="unit"><code>&lt;unit&gt;</code></link>
        and <link linkend="data"><code>&lt;data&gt;</code></link>.
    </para>
</section>
  </section>
</section>

    <section>
      <title>CDATA sections</title>

      <para>CDATA sections (<code>&lt;![CDATA[...]]&gt;</code>) are allowed in
      XLIFF content, but on output they <glossterm>may</glossterm> be changed into normal escaped
      content.</para>

      <para>Note that avoiding CDATA sections is considered a best practice
      from the internationalization viewpoint <link linkend="biblio_xmli18nbp">[XML I18N BP]</link>.</para>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para><firstterm>Agents</firstterm> <glossterm>must</glossterm> process CDATA sections.</para>
        </listitem>

        <listitem>
          <para><firstterm>Writers</firstterm> <glossterm>may</glossterm> preserve the original CDATA sections.</para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>XML Comments</title>

      <para>XML comments (<code>&lt;!--...--!&gt;</code>) are allowed in XLIFF
      content, but they are ignored in the parsed content.</para>

      <para>For example:</para>

      <programlisting format="linespecific">&lt;source&gt;Text content &lt;!--IMPORTANT--&gt;that is important&lt;/source&gt;</programlisting>

      <para>and</para>

      <programlisting format="linespecific">&lt;source&gt;Text content that is important&lt;/source&gt;</programlisting>

      <para>are identical after parsing and correspond to the same following
      parsed content:</para>

      <programlisting format="linespecific">Text content that is important</programlisting>

      <para>To annotate a section of the content with a comment that is
      recognized and preserved by XLIFF user agents, use the <link linkend="note"><code>&lt;note&gt;</code></link> element,
      or the <link linkend="commentAnnotation"><code>&lt;mrk&gt;</code></link>
      element.</para>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para><firstterm>Agents</firstterm> <glossterm>must</glossterm> ignore XML comments. That is the XLIFF parsed
          content is the same whether or not there is an XML comment in the
          document.</para>
        </listitem>

        <listitem>
          <para>Writers <glossterm>may</glossterm> preserve XML comments on output.</para>
        </listitem>
      </itemizedlist>
    </section><section>
      <title>XML Processing Instructions</title>

      <para>XML Processing Instructions <link linkend="bib_XML">[XML]</link> (see specifically <ulink url="http://www.w3.org/TR/REC-xml/#sec-pi">http://www.w3.org/TR/REC-xml/#sec-pi</ulink>) are an XML mechanism to "allow documents to contain instructions for applications." XML Processing Instructions are allowed in XLIFF content but they are ignored in the parsed content in the same sense as XML Comments.</para>
     <itemizedlist>
        <title>Processing Requirements</title>
        <listitem>
          <para><firstterm>Agents</firstterm> <glossterm>must not</glossterm> use Processing Instructions as a means to implement a feature already specified in <firstterm>XLIFF Core</firstterm> or <firstterm>Modules</firstterm>.</para>
        </listitem>
        <listitem>
          <para><firstterm>Writers</firstterm>
            <glossterm>should</glossterm> preserve XML Processing Instructions in an <firstterm>XLIFF
              Document</firstterm>.</para>
        </listitem>
       </itemizedlist>

      <warning><para> Please note that <firstterm>Agents</firstterm> using Processing Instructions to implement
            <firstterm>XLIFF Core</firstterm> or <firstterm>Module</firstterm> features are not
          compliant XLIFF applications disregarding whether they are otherwise conformant. </para>
        </warning><warning>
          <para>Although this specification encourages XLIFF <firstterm>Agents</firstterm> to preserve XML Processing Instructions, it is not and cannot be, for valid processing reasons, an absolute protection and it is
         for instance highly unlikely that Processing Instructions could survive an XLIFF roundtrip at the <link linkend="segment"><code>&lt;segment&gt;</code></link>
         level or lower. Hence implementers are discouraged from using XML Processing Instructions at the <link linkend="segment"><code>&lt;segment&gt;</code></link> and lower levels.</para>
      </warning>

    </section>

    <section id="inline">
  <title>Inline Content</title>

  <para>The XLIFF inline content defines how to encode the content <firstterm>Extracted</firstterm>
  from the original source. The content includes the following types of
  data:</para>

  <itemizedlist>
    <listitem>
      <para><link linkend="text">Text</link> -- Textual content.</para>
    </listitem>

    <listitem>
      <para><link linkend="inlineCodes">Inline codes</link> -- Sequences of
      content that are not linguistic text, such as formatting codes, variable
      placeholders, etc.</para>

      <para>For example: the element <code>&lt;b&gt;</code> in HTML, or the
      placeholder <code>{0}</code> in a Java string.</para>
    </listitem>

    <listitem>
      <para><link linkend="annotations">Annotations</link> -- Markers that
      delimit a span of the content and carry or point to information about
      the specified content.</para>

      <para>For example: a flag indicating that a given section of text is not intended for translation, or
        an element indicating that a given expression in the text is a term associated with a
        definition.</para>
    </listitem>
  </itemizedlist>

  <para>There are two elements that contain inline markup in XLIFF: <link linkend="source"><code>&lt;source&gt;</code></link> and <link linkend="target"><code>&lt;target&gt;</code></link>.</para>

  <para>In some cases, data directly associated with inline elements <glossterm>may</glossterm> also
    be stored at the <link linkend="unit"><code>&lt;unit&gt;</code></link> level in an <link linkend="originaldata"><code>&lt;originalData&gt;</code></link> element.</para>

  <section id="text">
    <title>Text</title>

    <para>The XLIFF inline markup does not prescribe how to represent normal
    text, besides that it <glossterm>must</glossterm> be valid XML.</para>

    <section>
      <title>Characters invalid in XML</title>

      <para>Because the content represented in XLIFF can be extracted from
      anywhere, including software resources and other material that can contain
      control characters, XLIFF needs to be able to represent all Unicode code
      points <link linkend="Unicode">[Unicode]</link>.</para>

      <para>However, XML does not have the capability to represent all Unicode 
        code points <link linkend="Unicode">[Unicode]</link>, and does not provide any official mechanism to escape the
      forbidden code points.</para>

      <para>To remedy this, the inline markup provides the <link linkend="cp"><code>&lt;cp&gt;</code></link> element.</para>

      <para>The syntax and semantic of <link linkend="cp"><code>&lt;cp&gt;</code></link> in XLIFF are similar to
      the ones of <code>&lt;cp&gt;</code> in the Unicode Locale Data Markup
      Language <link linkend="biblio_ldml">[LDML]</link>.</para>
    </section>
  </section>

  <section id="inlineCodes">
    <title>Inline Codes</title>

    <para>The specification takes into account two types of codes:</para>

    <variablelist>
      <varlistentry id="originalCode">
        <term>Original code</term>

        <listitem>
          <para>An <emphasis>original code</emphasis> is a code that exists in
          the original document being extracted into XLIFF.</para>
        </listitem>
      </varlistentry>

      <varlistentry id="addedCode">
        <term>Added code</term>

        <listitem>
          <para>An <emphasis>added code</emphasis> is a code that does not
          exist in the original document, but has been added to the content at
          some point after extraction.</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <para>Any code (original or added) belongs to one of the two following
    categories:</para>

    <variablelist>
      <varlistentry id="standalone">
        <term>Standalone</term>

        <listitem>
          <para>A <emphasis>standalone</emphasis> code is a code that
          corresponds to a single position in the content. An example of such
          code is the <code>&lt;br/&gt;</code> element in HTML.</para>
        </listitem>
      </varlistentry>

      <varlistentry id="spanLike">
        <term>Spanning</term>

        <listitem>
          <para>A <emphasis>spanning</emphasis> code is a code that encloses a
          section of the content using a start and an end marker. There are
          two kinds of spanning codes:</para>

          <itemizedlist>
            <listitem>
              <para>Codes that can overlap, that is: they can enclose a
              non-closing or a non-opening spanning code. Such codes do not
              have an XML-like behavior. For example the RTF code
              <code>\b1...\b0</code> is a spanning code that is allowed to
              overlap.</para>
            </listitem>

            <listitem>
              <para>Codes that cannot overlap, that is: they cannot enclose a partial spanning code
                and have an XML-like behavior at the same time. An example of such code is the
                  <code>&lt;emphasis&gt;...&lt;/emphasis&gt;</code> element in DocBook.</para>
            </listitem>
          </itemizedlist>

          <para>When the opening or closing marker of a spanning code does not
          have its corresponding closing or opening marker in the same unit,
          it is an <emphasis>orphan code</emphasis>.</para>
        </listitem>
      </varlistentry>
    </variablelist>

    <section>
      <title>Representation of the codes</title>

      <para>Spanning codes present a set of challenges in XLIFF:</para>

      <para>First, because the code format of the original data extracted to
      XLIFF does not need to be XML, spanning codes can overlap.</para>

      <para>For example, in the following RTF content, the format markers are
      in a sequence: start bold, start italics, end bold, end italics. This
      does not translate into a well-formed mapping.</para>

      <programlisting format="linespecific">Text in \b bold \i and\b0  italics\i0</programlisting>

      <para>Another challenge is the possible effect of segmentation: A
      spanning code can start in one segment and end in another.</para>

      <para>For example, in the following HTML content, the segmentation
      splits the text independently of the codes so the starting and ending
      tags of the <code>&lt;B&gt;...&lt;/B&gt;</code> element end up in
      different parts of the <link linkend="unit"><code>&lt;unit&gt;</code></link> element:</para>

      <programlisting format="linespecific">[Sentence &lt;B&gt;one. ][Sentence two.][ ][Sentence&lt;/B&gt; three.]</programlisting>

      <para>Finally, a third potential cause of complication is that the start
      or the end markers of a spanning code can become orphans if their
      segment is used outside of its original <link linkend="unit"><code>&lt;unit&gt;</code></link>.</para>

      <para>For example, an entry with bold text can be broken down into two
      segments:</para>

      <programlisting format="linespecific">Segment 1 = "&lt;b&gt;Warning found: "
Segment 2 = "The file is read-only&lt;/b&gt;"</programlisting>

      <para>And later, one of the segments can be re-used outside its original
      <link linkend="unit"><code>&lt;unit&gt;</code></link>, for instance as a
      translation candidate:</para>

      <programlisting format="linespecific">New segment = "&lt;b&gt;Warning found - see log&lt;/b&gt;"
Fuzzy match = "&lt;b&gt;Warning found: "</programlisting>

      <para>Because of these use cases, the representation of a spanning code
      cannot always be mapped to a similar spanning element in XLIFF.</para>

      <para>When taking into account these issues, the possible use cases and
      their corresponding XLIFF representations are as follow:</para>

      <table>
        <title>Inline code use cases</title>

        <tgroup cols="2">
          <thead>
            <row>
              <entry>Use Case</entry>

              <entry>Example of Representation</entry>
            </row>
          </thead>

          <tbody>
            <row>
              <entry>Standalone code</entry>

              <entry><link linkend="ph"><code>&lt;ph id='1'/&gt;</code></link></entry>
            </row>

            <row>
              <entry>Well-formed spanning code</entry>

              <entry><link linkend="pc"><code>&lt;pc
              id='1'&gt;text&lt;/pc&gt;</code></link></entry>
            </row>

            <row>
              <entry>Start marker of spanning code</entry>

              <entry><link linkend="sc"><code>&lt;sc id='1'/&gt;</code></link></entry>
            </row>

            <row>
              <entry>End marker of spanning code</entry>

              <entry><link linkend="ec"><code>&lt;ec startRef='1'/&gt;</code></link></entry>
            </row>

            <row>
              <entry>Orphan start marker of spanning code</entry>

              <entry><link linkend="sc"><code>&lt;sc id='1'
              isolated='yes'/&gt;</code></link></entry>
            </row>

            <row>
              <entry>Orphan end marker of spanning code</entry>

              <entry><link linkend="ec"><code>&lt;ec id='1'
              isolated='yes'/&gt;</code></link></entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </section>

    <section id="spanningcodeusage">
      <title>Usage of &lt;pc&gt; and &lt;sc&gt;/&lt;ec&gt;</title>

      <para>A spanning code <glossterm>must</glossterm> be represented using a <link linkend="sc"><code>&lt;sc&gt;</code></link> element and a <link linkend="ec"><code>&lt;ec&gt;</code></link> element if the code is
      not well-formed or orphan.</para>

      <para>For example, the following RTF content has two spans of
      formatting:</para>

      <programlisting format="linespecific">Text in \b bold \i and\b0  italics\i0</programlisting>

      <para>They can only be represented using two pairs of <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements:</para>

      <programlisting format="linespecific">Text in &lt;sc id="1"&gt;\b &lt;/sc&gt;bold
 &lt;sc id="2"&gt;\i &lt;/sc&gt;and&lt;ec startRef="1"&gt;\b0 &lt;/ec&gt; italics
 &lt;ec startRef="2"&gt;\i0&lt;/ec&gt;</programlisting>

      <para>If the spanning code is well-formed it <glossterm>may</glossterm> be represented using
      either a single <link linkend="pc"><code>&lt;pc&gt;</code></link> element or using a pair
      of <link linkend="sc"><code>&lt;sc&gt;</code></link> and a <link linkend="ec"><code>&lt;ec&gt;</code></link> elements.</para>

      <para>For example, the following RTF content has a single span of
      formatting:</para>

      <programlisting format="linespecific">Text in \b bold\b0 .</programlisting>

      <para>It can be represented using either notations:</para>

      <programlisting format="linespecific">Text in &lt;pc id="1" canOverlap="yes" dataRefStart="c1" dataRefEnd="c2"&gt;
bold&lt;/pc&gt;.</programlisting>

      <programlisting format="linespecific">Text in &lt;sc id="1" dataRef="c1"/&gt;bold&lt;ec startRef="1" dataRef="c2"/&gt;.</programlisting>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para>When both the <link linkend="pc"><code>&lt;pc&gt;</code></link> and the <link linkend="sc"><code>&lt;sc&gt;</code></link>/<link linkend="ec"><code>&lt;ec&gt;</code></link> representations are
            possible, <firstterm>Extractors</firstterm> and <firstterm>Modifiers</firstterm> <glossterm>may</glossterm> use either one as long as all the information
          of the inline code (e.g. original data, sub-flow indicators, etc.)
          are preserved.</para>
        </listitem>

        <listitem>
          <para>When converting representation between a pair of <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements and a <link linkend="pc"><code>&lt;pc&gt;</code></link> element or
            vice-versa, <firstterm>Modifiers</firstterm> <glossterm>must</glossterm> map their attributes as shown in
          the following table:</para>

          <table>
            <title>Mapping between attributes</title>

            <tgroup cols="3">
              <tbody>
                <row>
                  <entry><link linkend="pc"><code>&lt;pc&gt;</code></link>
                  attributes</entry>

                  <entry><link linkend="sc"><code>&lt;sc&gt;</code></link>
                  attributes</entry>

                  <entry><link linkend="ec"><code>&lt;ec&gt;</code></link>
                  attributes</entry>
                </row>

                <row>
                  <entry>id</entry>

                  <entry>id</entry>

                  <entry>startRef / id (see <link linkend="ecIFF"><code>&lt;ec&gt;</code></link>)</entry>
                </row>

                <row>
                  <entry>type</entry>

                  <entry>type</entry>

                  <entry>type</entry>
                </row>
                
                <row>
                  <entry>subType</entry>
                  
                  <entry>subType</entry>
                  
                  <entry>subType</entry>
                </row>

                <row>
                  <entry>dispStart</entry>

                  <entry>disp</entry>

                  <entry/>
                </row>

                <row>
                  <entry>dispEnd</entry>

                  <entry/>

                  <entry>disp</entry>
                </row>

                <row>
                  <entry>equivStart</entry>

                  <entry>equiv</entry>

                  <entry/>
                </row>

                <row>
                  <entry>equivEnd</entry>

                  <entry/>

                  <entry>equiv</entry>
                </row>

                <row>
                  <entry>subFlowsStart</entry>

                  <entry>subFlows</entry>

                  <entry/>
                </row>

                <row>
                  <entry>subFlowsEnd</entry>

                  <entry/>

                  <entry>subFlows</entry>
                </row>

                <row>
                  <entry>dataRefStart</entry>

                  <entry>dataRef</entry>

                  <entry/>
                </row>

                <row>
                  <entry>dataRefEnd</entry>

                  <entry/>

                  <entry>dataRef</entry>
                </row>

                <row>
                  <entry/>

                  <entry>isolated</entry>

                  <entry>isolated</entry>
                </row>

                <row>
                  <entry>canCopy</entry>

                  <entry>canCopy</entry>

                  <entry>canCopy</entry>
                </row>

                <row>
                  <entry>canDelete</entry>

                  <entry>canDelete</entry>

                  <entry>canDelete</entry>
                </row>

                <row>
                  <entry>canReorder</entry>

                  <entry>canReorder</entry>

                  <entry>canReorder</entry>
                </row>

                <row>
                  <entry>copyOf</entry>

                  <entry>copyOf</entry>

                  <entry>copyOf</entry>
                </row>

                <row>
                  <entry>canOverlap</entry>

                  <entry>canOverlap</entry>

                  <entry>canOverlap</entry>
                </row>

                <row>
                  <entry>dir</entry>

                  <entry>dir</entry>

                  <entry>dir</entry>
                </row>
              </tbody>
            </tgroup>
          </table>
        </listitem>

        <listitem>
          <para><firstterm>Agents</firstterm> <glossterm>must</glossterm> be able to handle any of the above two types of inline code
          representation.</para>
        </listitem>
      </itemizedlist>
    </section>

    <section>
      <title>Storage of the original data</title>

      <para>Most of the time, inline codes correspond to an original construct
      in the format from which the content was extracted. This is the
      <emphasis>original data</emphasis>.</para>

      <para>XLIFF tries to abstract and normalize as much as possible the
      extracted content because this allows a better re-use of the material
      across projects. Some tools require access to the original data in order
      to create the translated document back into its original format. Others
      do not.</para>

      <section>
        <title>No storage of the original data</title>

        <para>In this option, the original data of the inline code is not
        preserved inside the XLIFF document.</para>

        <para>The tool that created the initial XLIFF document is responsible
        for providing a way to re-create the original format properly when
        merging back the content.</para>

        <para>For example, for the following HTML content:</para>

        <programlisting format="linespecific">This &lt;B&gt;naked mole rat&lt;/B&gt; is &lt;B&gt;pretty ugly&lt;/B&gt;.</programlisting>

        <para>one possible XLIFF representation is the following:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;This &lt;pc id="1"&gt;naked mole rat&lt;/pc&gt;
is &lt;pc id="2"&gt;pretty ugly&lt;/pc&gt;.&lt;/source&gt;
  &lt;target&gt;Cet &lt;pc id="1"&gt;hétérocéphale&lt;/pc&gt;
est &lt;pc id="2"&gt;plutôt laid&lt;/pc&gt;.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
      </section>

      <section>
        <title>Storage of the original data</title>

        <para>In this option, the original data of the inline code is stored
        in a structure that resides outside the content (i.e. outside <link linkend="source"><code>&lt;source&gt;</code></link> or <link linkend="target"><code>&lt;target&gt;</code></link>) but still
        inside the <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>

        <para>The structure is an element <link linkend="originaldata"><code>&lt;originalData&gt;</code></link>
        that contains a list of <link linkend="data"><code>&lt;data&gt;</code></link> entries uniquely
        identified within the <link linkend="unit"><code>&lt;unit&gt;</code></link> by an <link linkend="id"><code>id</code></link> attribute. In the content, each
        inline code using this mechanism includes a <link linkend="dataref"><code>dataRef</code></link> attribute that points to a
        <code><link linkend="data"><code>&lt;data&gt;</code></link></code> element
        where its corresponding original data is stored.</para>

        <para>For example, for the following HTML content:</para>

        <programlisting format="linespecific">This &lt;B&gt;naked mole rat&lt;/B&gt; is &lt;B&gt;pretty ugly&lt;/B&gt;.</programlisting>

        <para>The following XLIFF representation stores the original
        data:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;B&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/B&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;This &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;
    naked mole rat&lt;/pc&gt; is &lt;pc id="2" dataRefStart="d1" dataRefEnd="d2"&gt;
    pretty ugly&lt;/pc&gt;.&lt;/source&gt;
  &lt;target&gt;Cet &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;
    hétérocéphale&lt;/pc&gt; est &lt;pc id="2" dataRefStart="d1" dataRefEnd="d2"&gt;
    plutôt laid&lt;/pc&gt;.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <note>
          <para>This mechanism allows to re-use identical original data by
          pointing to the same <link linkend="data"><code>&lt;data&gt;</code></link> element.</para>
        </note>
      </section>
    </section>

    <section id="addingcodes">
      <title>Adding Codes</title>

      <para>When processing content, there are possible cases when new inline
      codes need to be added.</para>

      <para>For example, in the following HTML help content, the text has the
      name of a button in bold:</para>

      <programlisting format="linespecific">Press the &lt;b&gt;Emergency Stop&lt;/b&gt; button
to interrupt the count-down sequence.</programlisting>

      <para>In the translated version, the original label needs to remain in
      English because the user interface, unlike the help, is not translated.
      However, for convenience, a translation is also provided and emphasized
      using another style. That new formatting needs to be added:</para>

      <programlisting format="linespecific">Appuyez sur le bouton &lt;b&gt;Emergency Stop&lt;/b&gt; (&lt;i&gt;Arrêt d'urgence&lt;/i&gt;)
pour interrompre le compte à rebours.</programlisting>

      <para>Having to split a single formatted span of
        text into several separate parts during translation, can serve as another example. For instance, the
      following sentence in Swedish uses bold on the names of two
      animals:</para>

      <programlisting format="linespecific">Äter &lt;b&gt;katter möss&lt;/b&gt;?</programlisting>

      <para>But the English translation separates the two names and therefore
      needs to duplicate the bold codes.</para>

      <programlisting format="linespecific">Do &lt;b&gt;cats&lt;/b&gt; eat &lt;b&gt;mice&lt;/b&gt;?</programlisting>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add inline codes.</para>
        </listitem>

        <listitem>
          <para>The <link linkend="id"><code>id</code></link> value of the added code <glossterm>must</glossterm>
          be different from all <link linkend="id"><code>id</code></link> values in both source and
          target content of the unit where the new code is added.</para>
        </listitem>

        <listitem>
          <para><firstterm>Mergers</firstterm> <glossterm>may</glossterm> ignore added inline codes when <firstterm>Merging</firstterm>
          the <firstterm>Translated</firstterm> content back into the original format.</para>
        </listitem>
      </itemizedlist>

      <para>There are several ways to add codes:</para>

      <section id="duplicatingexistingcode">
        <title>Duplicating an existing code</title>

        <para>One way to create a new code is to duplicate an existing one
        (called the <emphasis>base code</emphasis>).</para>

        <para>If the base code is associated with some original data: the new
        code simply use these data.</para>

        <para>For example, the translation in the following unit, the second
        inline code is a duplicate of the first one:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;b&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/b&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Äter &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;katter
möss&lt;/pc&gt;?&lt;/source&gt;
  &lt;target&gt;Do &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;cats&lt;/pc&gt;
eat &lt;pc id="2" dataRefStart="d1" dataRefEnd="d2"&gt;mice&lt;/pc&gt;?&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <para>If the base code has no associated data, the new code <glossterm>must</glossterm> use
        the <link linkend="copyof"><code>copyOf</code></link> attribute to indicate
        the <code>id</code> of the base code. This allows the merging tool to
        know what original data to re-use.</para>

        <para>For example, the translation in the following unit, the second
        inline code is a duplicate of the first one:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Esznek &lt;pc id="1"&gt;a magyarok svéd húsgombócot&lt;/pc&gt;?&lt;/source&gt;
  &lt;target&gt;Do &lt;pc id="1"&gt;Hungarians&lt;/pc&gt; eat 
&lt;pc id="2" copyOf="1"&gt;Swedish meatballs&lt;/pc&gt;?&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <itemizedlist>
          <title>Processing Requirements</title>

          <listitem>
            <para><firstterm>Modifiers</firstterm> <glossterm>must not</glossterm> clone a code that has its <link linkend="cancopy"><code>canCopy</code></link> attribute is set
            to <code>no</code>.</para>
          </listitem>

          <listitem>
            <para>The <link linkend="copyof"><code>copyOf</code></link> attribute <glossterm>must</glossterm> be
            used when, and only when, the base code has no associated original
            data.</para>
          </listitem>
        </itemizedlist>
      </section>

      <section>
        <title>Creating a brand-new code</title>

        <para>Another way to add a code is to create it from scratch. For
        example, this can happen when the translated text requires
        additional formatting.</para>

        <para>For example, in the following unit, the UI text needs to stay in
        English, and is also translated into French as a hint for the French user.
        The French translation for the UI text is formatted in italics:</para>

        <para><programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;b&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/b&gt;&lt;/data&gt;
  &lt;data id="n1"&gt;&amp;lt;i&gt;&lt;/data&gt;
  &lt;data id="n2"&gt;&amp;lt;/i&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Press the &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;
    Emergency Stop&lt;/pc&gt; button to interrupt the count-down sequence.
  &lt;/source&gt;
  &lt;target&gt;Appuyez sur le bouton
    &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Emergency Stop&lt;/pc&gt;
    (&lt;pc id="2" dataRefStart="n1" dataRefEnd="n2"&gt;Arrêt d'urgence&lt;/pc&gt;)
    pour interrompre le compte à rebours.
  &lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting></para>
      </section>

      <section>
        <title>Converting text into a code</title>

        <para>Another way to add a code is to convert part of the extracted
        text into code. In some cases the inline code can be created after
        extraction, using part of the text content. This can be done, for
        instance, to get better matches from an existing TM, or better
        candidates from an MT system.</para>

        <para>For example, it can happen that a tool extracting a Java properties file to XLIFF
        is not sophisticated enough to treat HTML or XML snippets inside
        the extracted text as inline code:</para>

        <programlisting format="linespecific"># text property for the widget 'next'
nextText: Click &lt;ui&gt;Next&lt;/ui&gt;</programlisting>

        <para>Resulting XLIFF content:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Click &amp;lt;ui&gt;Next&amp;lt;/ui&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <para>But another tool, later in the process, can be used to process
        the initial XLIFF document and detect additional inline codes. For
        instance here the XML elements such as <code>&lt;ui&gt;</code>.</para>

        <para>The original data of the new code is the part of the text
        content that is converted as inline code.</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;ui&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/ui&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Click &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Next&lt;/pc&gt;
  &lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <warning>
          <para>Converting XLIFF text content into original data for inline
          code might need a tool-specific process as the tool which did the
          initial extraction could have applied some conversion to the original
          content to create the XLIFF content (e.g. un-escape special
          characters).</para>
        </warning>
      </section>
    </section>

    <section id="removingcodes">
      <title>Removing Codes</title>

      <para>When processing content, there are some possible cases when existing inline
      codes need to be removed.</para>

      <para>For an example the translation of a sentence can result in
      grouping of several formatted parts into a single one. For instance, the
      following sentence in English uses bold on the names of two
      animals:</para>

      <programlisting format="linespecific">Do &lt;b&gt;cats&lt;/b&gt; eat &lt;b&gt;mice&lt;/b&gt;?</programlisting>

      <para>But the Swedish translation group the two names and therefore
      needs only a single bolded part.</para>

      <programlisting format="linespecific">Äter &lt;b&gt;katter möss&lt;/b&gt;?</programlisting>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para>User agents <glossterm>may</glossterm> remove a given inline code only if its <link linkend="candelete"><code>canDelete</code></link> attribute is
          set to <code>yes</code>.</para>
        </listitem>

        <listitem>
          <para>When removing a given inline code, the user agents <glossterm>must</glossterm> remove
          its associated original data, except if the original data is shared
          with another inline code that remains in the unit.</para>
          <para>Note that having
          to delete the original data is unlikely because such original data
          is likely to be associated to an inline code in the source
          content.</para>
        </listitem>
      </itemizedlist>

      <para>There are several ways to remove codes:</para>

      <section>
        <title>Deleting a code</title>

        <para>One way to remove a code is to delete it from the extracted
        content. For example, in the following unit, the translated text does
        not use the italics formatting. It is removed from the target content,
        but the original data are preserved because they are still used in the
        source content.</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;&amp;lt;i&gt;&lt;/data&gt;
  &lt;data id="d2"&gt;&amp;lt;/i&gt;&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;I read &lt;pc id="1" dataRefStart="d1" dataRefEnd="d2"&gt;Little
House on the Prairie&lt;/pc&gt; to my children.&lt;/source&gt;
  &lt;target&gt;<foreignphrase lang="ja">子供に「大草原の小さな家」を読みました。</foreignphrase>&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
      </section>

      <section>
        <title>Converting a code into text</title>

        <para>Another way to remove an inline code is to convert it into text
        content. This is likely to be a rare use case. It is equivalent to
        deleting the code, with the addition to place the original data for
        the given code into the content, as text. This can be done, for
        example, to get better matches from an existing TM, or better
        candidates from an MT system.</para>

        <para>For instance, the following unit has an inline code
        corresponding to a variable place-holder. A tool can
        temporarily treat this variable as text to get better matches from an
        existing TM.</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;%s&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Cannot find '&lt;ph id="1" dataRef="d1"/&gt;'.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <para>The modified unit would end up like as shown below. Note that
        because the original data was not associated with other inline code it
        has been removed from the unit:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Cannot find '%s'.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

        <warning>
          <para>Converting the original data of an inline code into text
          content might need a tool-specific process as the tool which did the
          initial extraction could have applied some conversion to the original
          content.</para>
        </warning>
      </section>
    </section>

    <section id="editinghints">
      <title>Editing Hints</title>

      <para>XLIFF provides some information about what editing operations are
      applicable to inline codes:</para>

      <itemizedlist>
        <listitem>
          <para>A code can be deleted: That is, the code element as well as
          its original data (if any are attached) are removed from the
          document. This hint is represented with the <link linkend="candelete"><code>canDelete</code></link> attribute. The
          default value is <code>yes</code>: deletion is allowed.</para>

          <para>For example, the following extracted C string has the code
          <link linkend="ph"><code>&lt;ph id='1'/&gt;</code></link> set to be not
          deletable because removing the original data (the variable
          placeholder <code>%s</code>) from the string would result in an
          error when running the application:</para>
        </listitem>

        <listitem>
          <para>A code can be copied: That is, the code is used as a
          <emphasis>base code</emphasis> for adding another inline code. See
          <xref linkend="duplicatingexistingcode"/> for more details. This
          hint is represented with the <link linkend="cancopy"><code>canCopy</code></link> attribute. The
          default value is <code>yes</code>: copy is allowed.</para>
        </listitem>

        <listitem>
          <para>A code can be re-ordered: That is, a given code can be moved
          before or after another inline code. This hint is represented with
          the <link linkend="canreorder"><code>canReorder</code></link> attribute.
          The default value is <code>yes</code>: re-ordering is
          allowed.</para>
        </listitem>
      </itemizedlist>
<note>
      <para>Please note that often those properties are related and appear together. For example, the code
        in the first unit shown below is a variable placeholder that has to be preserved and cannot
        be duplicated, and when several of such variables are present, as in the second unit, they
        cannot be re-ordered:</para></note>

      <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;%s&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Can't open '&lt;ph id="1" dataRef="d1" canCopy="no"
      canDelete="no"/&gt;'.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;
&lt;unit id="2"&gt;
 &lt;originalData&gt;
  &lt;data id="d1"&gt;%s&lt;/data&gt;
  &lt;data id="d2"&gt;%d&lt;/data&gt;
 &lt;/originalData&gt;
 &lt;segment&gt;
  &lt;source&gt;Number of &lt;ph id="1" dataRef="d1" canCopy="no" canDelete="no"
    canReorder="firstNo"/&gt;: 
    &lt;ph id="2" dataRef="d2" canCopy="no" canDelete="no" canReorder="no"/&gt;.
  &lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

      <para>See the <link linkend="contentmodification">Target Content
      Modification section</link> for additional details on editing.</para>

      <itemizedlist>
        <title>Constraints</title>
        <listitem>
          <para>When the attribute <link linkend="canreorder"><code>canReorder</code></link> is set to <code>no</code> or <code>firstNo</code>,
            the attributes <link linkend="cancopy"><code>canCopy</code></link> and <link linkend="candelete"><code>canDelete</code></link>
            <glossterm>must</glossterm> also be set to <code>no</code>.</para>
        </listitem>
		<listitem>
		  <para>Inline codes re-ordering within a source or target content <glossterm>may</glossterm> be
            limited by defining non-reorderable sequences. Such sequence is made of a first inline
            code with the attribute <link linkend="canreorder"><code>canReorder</code></link> set to <code>firstNo</code> and
            zero or more following codes with <link linkend="canreorder"><code>canReorder</code></link> set to <code>no</code>.</para>
		  <note><para>A non-reorderable sequence made of a single code with <link linkend="canreorder"><code>canReorder</code></link> set to <code>firstNo</code> are allowed just for
<firstterm>Extraction</firstterm> convenience and are equivalent to a code with the attribute <link linkend="canreorder"><code>canReorder</code></link> set to <code>yes</code>.</para></note>
		</listitem>
        </itemizedlist>

        <itemizedlist>
          <title>Processing Requirements</title>
        <listitem>
          <para><firstterm>Extractors</firstterm> <glossterm>should</glossterm> set the <link linkend="candelete"><code>canDelete</code></link>, <link linkend="cancopy"><code>canCopy</code></link> and <link linkend="canreorder"><code>canReorder</code></link> attributes
          for the codes that need to be treated differently than with the
          default settings.</para>
        </listitem>
        <listitem>
          <para>The number and order of the inline codes making up a non-reorderable sequence
              <glossterm>must not</glossterm> be changed.</para>
        </listitem>
          <listitem>
            <para>A whole non-reorderable sequence <glossterm>MAY</glossterm> be moved before or after another non-reorderable sequence.</para>
          </listitem>
          <listitem>
            <para>When a non-reorderable sequence is made of a single non-reorderable code,
              <firstterm>Modifiers</firstterm>
            <glossterm>MAY</glossterm> remove the <link linkend="canreorder"><code>canReorder</code></link> attribute of that code or
            change its value to <code>yes</code>.</para>
          </listitem>
          <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>must not</glossterm> delete inline codes that have their
          attribute <link linkend="candelete"><code>canDelete</code></link> set to
          <code>no</code>.</para>
        </listitem>

        <listitem>
          <para><firstterm>Modifiers</firstterm>
            <glossterm>must not</glossterm> replicate inline codes that have their attribute <link linkend="cancopy"><code>canCopy</code></link>
            set to <code>no</code>.</para>
        </listitem>

        
      </itemizedlist>
    </section>
  </section>

  <section id="annotations">
    <title>Annotations</title>

    <para>An annotation is an element that associates a section of the content
    with some metadata information.</para>

    <para>Annotations <glossterm>may</glossterm> be created by an <firstterm>Extractor</firstterm>
      that generated the initial <firstterm>XLIFF Document</firstterm>, or by any other
      <firstterm>Modifier</firstterm> or <firstterm>Enricher</firstterm> later in the process. For
      example, after an <firstterm>Extractor</firstterm> creates the document, an <firstterm>Enricher</firstterm> can
    annotate the source content with terminological information.</para>

    <para>Annotations are represented using either the <link linkend="mrk"><code>&lt;mrk&gt;</code></link> element, or the pair of
    <link linkend="sm"><code>&lt;sm&gt;</code></link> and <link linkend="em"><code>&lt;em&gt;</code></link> elements.</para>
<!--  Schnabel removed this PR based on CFD for csprd03 222 PR on removing annotations
    <itemizedlist>
      <title>Processing Requirements</title>
      <listitem>
        <para>When a <firstterm>Modifier</firstterm> removes an <olink
            targetdoc="../elements/inline/mrk.xml" targetptr="mrk"><code>&lt;mrk&gt;</code></olink>
          element or a pair of <olink targetdoc="../elements/inline/sm.xml" targetptr="sm"
              ><code>&lt;sm&gt;</code></olink> / <olink targetdoc="../elements/inline/em.xml"
            targetptr="em"><code>&lt;em&gt;</code></olink> elements and the <olink
            targetdoc="../attributes/ref.xml" targetptr="ref"><code>ref</code></olink> attribute is
          present, it <glossterm>must</glossterm> check whether or not the URI referenced by the
            <olink targetdoc="../attributes/ref.xml" targetptr="ref"><code>ref</code></olink>
          attribute is within the same <olink targetdoc="../elements/structural/unit.xml"
            targetptr="unit"><code>&lt;unit&gt;</code></olink> as the removed element. If it is and
          no other element has a reference to the referenced element, the
            <firstterm>Modifier</firstterm>
          <glossterm>must</glossterm> remove the  referenced element.</para>
      </listitem>
    </itemizedlist>
	 -->

    <section id="annotationTypes">
      <title>Type of Annotations</title>

      <para>There are several pre-defined types of annotation and definition of  <link linkend="customAnnotation">custom types</link> is also allowed.</para>

      <section id="translateAnnotation">
        <title>Translate Annotation</title>

        <para>This annotation is used to indicate whether a span of content is
        translatable or not.</para>

        <para>Usage:</para>

        <itemizedlist spacing="compact">
          <listitem>
            <para>The <link linkend="id"><code>id</code></link> attribute is
            <glossterm>required</glossterm></para>
          </listitem>

          <listitem>
            <para>The <link linkend="translate"><code>translate</code></link> attribute is
            <glossterm>required</glossterm> and set to <code>yes</code> or <code>no</code></para>
          </listitem>

          <listitem>
            <para>The <link linkend="type"><code>type</code></link> attribute is <glossterm>optional</glossterm>
            and set to <code>generic</code> (this is the default value)</para>
          </listitem>
        </itemizedlist>

        <para>For example:</para>

        <programlisting format="linespecific">He saw his &lt;mrk id="m1" translate="no"&gt;doppelgänger&lt;/mrk&gt;.</programlisting>

        <note>
          <para>This annotation overrides the <link linkend="translate"><code>translate</code></link> attribute set
          or inherited at the <link linkend="unit"><code>&lt;unit&gt;</code></link>
          level.</para>
        </note>

        <note>
          <para>The <link linkend="translate"><code>translate</code></link> attribute can
          also be used at the same time as another type of annotation. For
          example:</para>

          <programlisting format="linespecific">He saw his &lt;mrk id="m1" translate="no" type="term"&gt;doppelgänger
&lt;/mrk&gt;.</programlisting>
        </note>
      </section>

      <section id="termAnnotation">
        <title>Term Annotation</title>

        <para>This annotation is used to mark up a term in the content, and
        possibly associate information to it.</para>

        <para>Usage:</para>

        <itemizedlist spacing="compact">
          <listitem>
            <para>The <link linkend="id"><code>id</code></link> attribute is
            <glossterm>required</glossterm></para>
          </listitem>

          <listitem>
            <para>The <link linkend="type"><code>type</code></link> attribute is <glossterm>required</glossterm>
            and set to <code>term</code></para>
          </listitem>

          <listitem>
            <para>The <link linkend="value"><code>value</code></link> attribute is <glossterm>optional</glossterm>
            and contains a short definition of the term</para>
          </listitem>

          <listitem>
            <para>The <link linkend="ref"><code>ref</code></link> attribute is <glossterm>optional</glossterm> and
            contains a URI pointing to information on the term</para>
          </listitem>

          <listitem>
            <para>The <link linkend="translate"><code>translate</code></link> attribute is
            <glossterm>optional</glossterm> and set to <code>yes</code> or <code>no</code></para>
          </listitem>
        </itemizedlist>
        
        <!--  Removed the note in repsonse to comment 232 <note>
          <para>In this annotation type, the <firstterm>XLIFF Core</firstterm>
            <olink targetdoc="../../attributes/ref.xml" targetptr="ref"><code>ref</code></olink>
            attribute is primarily intended to allow for referencing of terminology resources that
            are external to the <firstterm>XLIFF Document</firstterm>. </para><para>The <olink targetdoc="../../modules/glossary/specification.xml" targetptr="glossary-module">
              Glossary</olink> module uses its own <olink
              targetdoc="../../attributes/glossary/gls_ref.xml" targetptr="gls_ref">
              <code>gls:ref</code></olink> to reference its corresponding spans in source content
            the other way round. The <firstterm>XLIFF Core</firstterm>
            <olink targetdoc="../../attributes/ref.xml" targetptr="ref"><code>ref</code></olink>
            attribute can be also used in case of multiple occurrences of a term in the same unit for
            pointing from these different occurrences to the same glossary entry in the same
            unit.</para>
        </note> -->

        <para>For example:</para>

        <programlisting format="linespecific"><!-- 
&lt;unit id="1"&gt;
  &lt;gls:glossary&gt;
    &lt;gls:glossEntry id="g1" ref="#m1"&gt;
      &lt;gls:term&gt;doppelgänger&lt;/gls:term&gt;
      &lt;gls:definition source="dictionary.com"&gt;A ghostly double or
        counterpart of a living person.&lt;/gls:definition&gt;
    &lt;/gls:glossEntry&gt;
  &lt;/gls:glossary&gt;
  &lt;segment&gt;
    &lt;source&gt;He is my 
      &lt;mrk id="m1" type="term"
          ref="https://myCoolTBServer.me/en/doppelgänger"&gt;doppelgänger&lt;/mrk&gt;.&lt;/source&gt;
    &lt;target&gt;Il est mon  
      &lt;mrk id="m1" type="term"
          ref="https://myCoolTBServer.me/fr/alter%20ego"&gt;alter ego&lt;/mrk&gt;.
    &lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;        
        --> 
  &lt;file id="f-t_a"&gt;
   &lt;unit id="1"&gt;
     &lt;segment&gt;
       &lt;source&gt;He is my &lt;mrk id="m1" type="term"
           ref="http://dbpedia.org/page/Doppelgänger"&gt;doppelgänger&lt;/mrk&gt;.
       &lt;/source&gt;
     &lt;/segment&gt;
   &lt;/unit&gt;
 &lt;/file&gt;
        </programlisting>
      </section>


      <!--   This annotation has been removed from core based on a resolution made in TC meeting on Jan 21, 2014  
        <section id="matchAnnotation">
        <title>Translation Candidate Annotation</title>
        
        <para>This annotation is used to mark up the scope of a translation candidate within the
          content of a unit.</para>
        
        <para>Usage:</para>
        
        <itemizedlist spacing="compact">
          <listitem>
            <para>The <olink targetdoc="../../attributes/id.xml"
              targetptr="id"><code>id</code></olink> attribute is
              <glossterm>required</glossterm></para>
          </listitem>
          
          <listitem>
            <para>The <olink targetdoc="../../attributes/type.xml"
              targetptr="type"><code>type</code></olink> attribute is <glossterm>required</glossterm>
              and set to <code>match</code></para>
          </listitem>
          
                    
          <listitem>
            <para>The <olink targetdoc="../../attributes/ref.xml" targetptr="ref"
                ><code>ref</code></olink> attribute is <glossterm>optional</glossterm> and contains
              a URI pointing to the translation candidate</para>
          </listitem>
          
          <listitem>
            <para>The <olink targetdoc="../../attributes/translate.xml"
              targetptr="translate"><code>translate</code></olink> attribute is
              <glossterm>optional</glossterm> and set to <code>yes</code> or <code>no</code></para>
          </listitem>
        </itemizedlist>
        
        <note>
          <para>In this annotation type, the <firstterm>XLIFF Core</firstterm>
            <olink targetdoc="../../attributes/ref.xml" targetptr="ref"><code>ref</code></olink>
            attribute is intended to allow for referencing of translation candidate resources that
            are external to the <firstterm>XLIFF Document</firstterm>. </para><para>The <olink targetdoc="../../modules/candidates/specification.xml" targetptr="candidates"
              >Translation Candidates module</olink> uses its own <olink
              targetdoc="../../attributes/candidates_ref.xml" targetptr="candidates_ref"
                ><code>mtc:ref</code></olink> to reference its match spans in source content the
            other way round. </para>
        </note>
        
        <para>For example:</para>
        
        <programlisting>
&lt;unit id="1"&gt;
  &lt;segment&gt;
    &lt;source&gt;&lt;mrk id="m1" type="match" ref="https://myCoolTMServer.me/en-fr/He%20is%20my%20friend."&gt;
              He is my friend.&lt;/mrk&gt;
    &lt;/source&gt;
  &lt;/segment&gt;
  &lt;segment&gt;
    &lt;source&gt;Yet, I barely see him.&lt;/source&gt;
  &lt;/segment&gt;
  &lt;mtc:matches&gt;
      &lt;mtc:match ref="m1"&gt;
        &lt;source&gt;He is my friend.&lt;/source&gt;
        &lt;target&gt;Il est mon ami.&lt;/target&gt;
      &lt;/mtc:match&gt;
      &lt;mtc:match ref="m1"&gt;
        &lt;source&gt;He is my best friend.&lt;/source&gt;
        &lt;target&gt;Il est mon meilleur ami.&lt;/target&gt;
      &lt;/mtc:match&gt;
  &lt;/mtc:matches&gt;
&lt;/unit&gt;        
        </programlisting>
      </section>
       -->


      <section id="commentAnnotation">
        <title>Comment Annotation</title>

        <para>This annotation is used to associate a span of content with a
        comment.</para>

        <para>Usage:</para>

        <itemizedlist spacing="compact">
          <listitem>
            <para>The <link linkend="id"><code>id</code></link> attribute is
            <glossterm>required</glossterm></para>
          </listitem>

          <listitem>
            <para>The <link linkend="type"><code>type</code></link> attribute is <glossterm>required</glossterm>
            and set to <code>comment</code></para>
          </listitem>

          <listitem>
            <para>If the <link linkend="value"><code>value</code></link> attribute is present it contains the text of the
              comment. If and only if the <link linkend="value"><code>value</code></link> attribute is not present, the <link linkend="ref"><code>ref</code></link>
              attribute <glossterm>must</glossterm> be present and contain the URI of a <link linkend="note"><code>&lt;note&gt;</code></link> element within the same enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element that holds the comment.</para>
          </listitem>

          <listitem>
            <para>The <link linkend="translate"><code>translate</code></link> attribute is
            <glossterm>optional</glossterm> and set to <code>yes</code> or <code>no</code></para>
          </listitem>
        </itemizedlist>

        <para>For example, here with the <code><link linkend="value"><code>value</code></link></code> attribute:</para>

        <programlisting format="linespecific">The &lt;mrk id="m1" type="comment"
 value="Possible values: Printer or Stacker"&gt;&lt;ph id="1" dataRef="d1"/&gt;
&lt;/mrk&gt;
has been enabled.</programlisting>

        <para>And here using the <link linkend="ref"><code>ref</code></link> attribute:</para>

        <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;notes&gt;
  &lt;note id="n1" appliesTo="target"&gt;Please check the 
translation for 'namespace'. On also can use 'espace de nom',
but I think most technical manuals use the English
term.&lt;/note&gt;
 &lt;/notes&gt;
 &lt;segment&gt;
  &lt;source&gt;You use your own namespace.&lt;/source&gt;
  &lt;target&gt;Vous pouvez utiliser votre propre &lt;mrk id="m1"
type="comment" ref="#n1"&gt;namespace&lt;/mrk&gt;.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
      </section>

      <section id="customAnnotation">
        <title>Custom Annotation</title>

        <para>The <link linkend="mrk"><code>&lt;mrk&gt;</code></link> element can be used
        to implement custom annotations.</para>

        <para>A custom annotation <glossterm>must not</glossterm> provide the same functionality as a
        pre-defined annotation.</para>

        <para>Usage:</para>

        <itemizedlist spacing="compact">
          <listitem>
            <para>The <link linkend="id"><code>id</code></link> attribute is
            <glossterm>required</glossterm></para>
          </listitem>

          <listitem>
            <para>The <link linkend="type"><code>type</code></link> attribute is <glossterm>required</glossterm>
            and set to a unique user-defined value.</para>
          </listitem>

          <listitem>
            <para>The <link linkend="translate"><code>translate</code></link> attribute is
            <glossterm>optional</glossterm> and set to <code>yes</code> or <code>no</code></para>
          </listitem>

          <listitem>
            <para>The use and semantics of the <link linkend="value"><code>value</code></link> and <link linkend="ref"><code>ref</code></link> attributes are
            user-defined.</para>
          </listitem>
        </itemizedlist>

        <para>For example:</para>

        <programlisting format="linespecific">One of the earliest surviving works of literature is
&lt;mrk id="m1" type="myCorp:isbn" value="978-0-14-44919-8"&gt;The 
Epic of Gilgamesh&lt;/mrk&gt;.</programlisting>
      </section>
    </section>

    <section id="splittingAnnotations">
      <title>Splitting Annotations</title>

      <para>Annotations can overlap spanning inline codes or other
      annotations. They also can be split by segmentation. Because of this, a
      single annotation span can be represented using a pair of <link linkend="sm"><code>&lt;sm&gt;</code></link> and <link linkend="em"><code>&lt;em&gt;</code></link> elements instead of a
      single <link linkend="mrk"><code>&lt;mrk&gt;</code></link> element.</para>

      <para>For example, one can have the following content:</para>

      <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Sentence A. &lt;mrk id="m1" type="comment" 
value="Comment for B and C"&gt;Sentence B. Sentence C.&lt;/mrk&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>

      <para>After a user agent performs segmentation, the annotation element
      <link linkend="mrk"><code>&lt;mrk&gt;</code></link> is changed to a pair of
      <link linkend="sm"><code>&lt;sm&gt;</code></link> and <link linkend="em"><code>&lt;em&gt;</code></link> elements:</para>

      <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Sentence A. &lt;/source&gt;
 &lt;/segment&gt;
 &lt;segment&gt;
  &lt;source&gt;&lt;sm id="m1" type="comment" 
value="Comment for B and C"/&gt;Sentence B. &lt;/source&gt;
 &lt;/segment&gt;
 &lt;segment&gt;
  &lt;source&gt;Sentence C.&lt;em startRef="m1"/&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
    </section>
  </section>

  <section id="subflowsdesc">
    <title>Sub-Flows</title>

    <para>A sub-flow is a section of text embedded inside an inline code, or
    inside another section of text.</para>

    <para>For example, the following HTML content includes two sub-flows: The
    first one is the value of the <code>title</code> attribute ("<code>Start
    button</code>"), and the second one is the value of the <code>alt</code>
    attribute ("<code>Click here to start!</code>"):</para>

    <programlisting format="linespecific">Click to start: &lt;img title="Start button"
 src="btnStart.png" alt="Click here to start!"/&gt;</programlisting>

    <para>Another example is the following DITA content where the footnote
    "<code>A Palouse horse is the same as an Appaloosa.</code>" is defined at
    the middle of a sentence:</para>

    <programlisting format="linespecific">Palouse horses&lt;fn&gt;A Palouse horse is the same as
 an Appaloosa.&lt;/fn&gt; have spotted coats.</programlisting>

    <para>In XLIFF, each sub-flow is stored in its own <link linkend="unit"><code>&lt;unit&gt;</code></link> element, and the
    <code><link linkend="subflows"><code>subFlows</code></link></code> attribute is
    used to indicate the location of the embedded content.</para>

    <para>Therefore the HTML content of the example above can be represented
    like below:</para>

    <programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;Start button&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;
&lt;unit id="2"&gt;
 &lt;segment&gt;
  &lt;source&gt;Click here to start!&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;
&lt;unit id="3"&gt;
 &lt;segment&gt;
  &lt;source&gt;Click to start: &lt;ph id="1" subFlows="1 2"/&gt;&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
    
    <itemizedlist>
      <title>Constraints</title>
      <listitem>
        <para>An inline code containing or delimiting one or more sub-flows
            <glossterm>must</glossterm> have an attribute <link linkend="subflows"><code>subFlows</code></link> that holds a list of the identifiers of the <link linkend="unit"><code>&lt;unit&gt;</code></link> elements where the sub-flows are stored.</para>
      </listitem>
      <listitem>
        <para>Sub-flows <glossterm>must</glossterm> be in the same <link linkend="file"><code>&lt;file&gt;</code></link> element as the <link linkend="unit"><code>&lt;unit&gt;</code></link> element from which they are referenced.</para>
      </listitem>
    </itemizedlist>
    
    <itemizedlist>
      <title>Processing Requirements</title>

      <listitem>
        <para><firstterm>Extractors</firstterm> <glossterm>should</glossterm> store each sub-flow in its own <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
      </listitem>

      

      <listitem>
        <para><firstterm>Extractors</firstterm>
          <glossterm>may</glossterm> order the <link linkend="unit"><code>&lt;unit&gt;</code></link> elements of the sub-flows and the
            <link linkend="unit"><code>&lt;unit&gt;</code></link> element, from where the sub-flows are referenced,
          as they see fit. </para>
      </listitem>
      <!--  In the meeting on January 21, 2014 it was resolved that this or similar PR is superfluous becuase it is a general
        XLIFF principle that the static structure of the document must not be changed, therfore this is transformed into an informative warning calling this principle
      <listitem>
        <para><firstterm>Writers</firstterm>
          <glossterm>must</glossterm> preserve the order of <olink
            targetdoc="../elements/structural/unit.xml" targetptr="unit"
            ><code>&lt;unit&gt;</code></olink> elements as initially set by the
            <firstterm>Extractor</firstterm>.</para>
      </listitem> -->
    </itemizedlist>
    <note><para>Please note that the static structure encoded by <link linkend="file"><code>&lt;file&gt;</code></link>, <link linkend="group"><code>&lt;group&gt;</code></link>, and <link linkend="unit"><code>&lt;unit&gt;</code></link> elements is principally immutable in <firstterm>XLIFF Documents</firstterm>
      and hence the unit order initially set by the <firstterm>Extractor</firstterm> will be preserved throughout the roundtrip
      even in the special case of sub-flows.</para></note>
  </section>

  <section>
    <title>White Spaces</title>

    <para>While white spaces can be significant or insignificant in the original format, they are
      always treated as significant when stored as original data in XLIFF. See the definition of the <link linkend="data"><code>&lt;data&gt;</code></link> element.</para>

    <itemizedlist>
      <title>Processing Requirements</title>

      <!--  This is superfluous and removed as part of the resolution for #129, <data> has xml:space fixed to "preserved" and the other elements don't have content<listitem>
        <para>For the elements <olink targetdoc="../elements/inline/sc.xml"
        targetptr="sc"><code>&lt;sc&gt;</code></olink>, <olink
        targetdoc="../elements/inline/ec.xml"
        targetptr="ec"><code>&lt;ec&gt;</code></olink>, <olink
        targetdoc="../elements/inline/ph.xml"
        targetptr="ph"><code>&lt;ph&gt;</code></olink> and <olink
        targetdoc="../elements/structural/data.xml"
        targetptr="data"><code>&lt;data&gt;</code></olink>: The white spaces
        of their content <glossterm>must</glossterm> be preserved in all cases, even if the value for
        <code>xml:space</code> is set or inherited as
        <code>default</code>.</para>
      </listitem>   -->

      <listitem>
        <para>For the inline content and all non empty inline elements: The white spaces
            <glossterm>must</glossterm> be preserved if the value for <code>xml:space</code> set or
          inherited at the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> level is <code>preserve</code>, and
          they <glossterm>may</glossterm> be preserved if the value is <code>default</code>.</para>
      </listitem>
    </itemizedlist>
  </section>

  <section>
    <title>Bidirectional Text</title>

    <para>Text directionality in XLIFF content is defined by inheritance.
    Source and target content can have different directionality.</para>

    <para>The initial directionality for both the source and the target content is defined in the
        <link linkend="file"><code>&lt;file&gt;</code></link> element, using the <glossterm>optional</glossterm>
      attributes <link linkend="srcdir"><code>srcDir</code></link> for the source and <link linkend="trgdir"><code>trgDir</code></link> for
      the target. The default value for both attributes is <code>auto</code>.</para>

    <para>The <link linkend="group"><code>&lt;group&gt;</code></link> and <link linkend="unit"><code>&lt;unit&gt;</code></link> elements also have the two
        <glossterm>optional</glossterm> attributes <link linkend="srcdir"><code>srcDir</code></link> and <link linkend="trgdir"><code>trgDir</code></link>. The
      default value of the <link linkend="srcdir"><code>srcDir</code></link> is inherited from the value of the <link linkend="srcdir"><code>srcDir</code></link>
      attribute of the respective parent element. The default value of the <link linkend="trgdir"><code>trgDir</code></link>
      attribute is inherited from the value of the <link linkend="trgdir"><code>trgDir</code></link> attribute of the respective parent
      element.</para>

    <para>The <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="sc"><code>&lt;sc&gt;</code></link>, and isolated <link linkend="ec"><code>&lt;ec&gt;</code></link> elements have an <glossterm>optional</glossterm>
      attribute <link linkend="dir"><code>dir</code></link>
      with a value <code>ltr</code>, <code>rtl</code>, or <code>auto</code>. The default value is
      inherited from the parent <link linkend="pc"><code>&lt;pc&gt;</code></link> element. In case the inline element is a child of a
        <link linkend="source"><code>&lt;source&gt;</code></link> element, the default value is inherited from the <link linkend="srcdir"><code>srcDir</code></link> value
      of the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element. In case the inline element is a child of a
        <link linkend="target"><code>&lt;target&gt;</code></link> element, the default value is inherited from the
        <link linkend="trgdir"><code>trgDir</code></link> value of the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    <warning><para> While processing isolated <link linkend="ec"><code>&lt;ec&gt;</code></link> elements with explicitly set directionality, please beware
        that unlike directionality set on the <link linkend="pc"><code>&lt;pc&gt;</code></link> and <link linkend="sc"><code>&lt;sc&gt;</code></link> , this
        method decreases the stack level as per [UAX #9].</para>
    </warning>
    <para>In addition, the <link linkend="data"><code>&lt;data&gt;</code></link> element has an <glossterm>optional</glossterm>
      attribute <link linkend="dir"><code>dir</code></link>
      with a value <code>ltr</code>, <code>rtl</code>, or <code>auto</code> that is not inherited.
      The default value is <code>auto</code>.</para>

    <para>Directionality of source and target text contained in the <link linkend="source"><code>&lt;source&gt;</code></link> and <link linkend="target"><code>&lt;target&gt;</code></link> elements is fully governed by <link linkend="uax9">[UAX #9]</link>, whereas explicit
        <firstterm>XLIFF-defined</firstterm> structural and directionality markup is a higher-level
      protocol in the sense of <link linkend="uax9">[UAX #9]</link>.
      The <firstterm>XLIFF-defined</firstterm> value <code>auto</code> determines the directionality
      based on the first strong directional character in its scope and
        <firstterm>XLIFF-defined</firstterm> inline directionality markup behaves exactly as
      Explicit Directional Isolate Characters, see <link linkend="uax9">[UAX #9]</link>, <ulink url="http://www.unicode.org/reports/tr9/#Directional_Formatting_Characters">http://www.unicode.org/reports/tr9/#Directional_Formatting_Characters</ulink>.</para>
  <note>
    <para>Please note that this specification does not define explicit markup for inline directional Overrides or Embeddings;
      in case those are needed. <firstterm>Extractors</firstterm> and <firstterm>Modifiers</firstterm> will need
      to use [UAX #9] defined Directional Formatting Characters.</para>
  </note>
    
  </section>

  <section id="contentmodification">
    <title>Target Content Modification</title>

    <para>This section defines the rules <firstterm>Writers</firstterm> need to follow when working
    with the target content of a given segment in order to provide
    interoperability throughout the whole process.</para>

    <para>The <firstterm>Extractor</firstterm> <glossterm>may</glossterm> create the initial target content as it sees
    fit.</para>

    <para>The <firstterm>Merger</firstterm> is assumed to have the same level of processing and
      native format knowledge as the <firstterm>Extractor</firstterm>. Providing an interoperable
    way to convert native documents into XLIFF with one tool and back to the
    native format with another tool without the same level of knowledge is
    outside the scope of this specification.</para>

    <para>The <firstterm>Writers</firstterm> <firstterm>Modifying</firstterm> the target content of an <firstterm>XLIFF Document</firstterm> between
      the <firstterm>Extractor</firstterm> and the <firstterm>Merger</firstterm> ensure interoperability by applying
    specific rules. These rules are separated into two cases: When there is an
    existing target and when there is no existing target.</para>

    <section id="contentmodificationwithouttarget">
      <title>Without an Existing Target</title>

      <para>When there is no existing target, the processing requirements for
      a given segment are the following:</para>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para><firstterm>Writers</firstterm> <glossterm>may</glossterm> leave the segment without a target.</para>
        </listitem>

        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> create a new target as follows:</para>

          <itemizedlist>
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add translation of the source text.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>must</glossterm> put all <link linkend="editinghints">non-removable</link> inline codes in the
              target.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>must</glossterm> preserve the order of all the <link linkend="editinghints">non-reorderable</link> inline
              codes.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> put any <link linkend="editinghints">removable</link> inline code in the
              target.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add inline codes.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add or remove annotations.</para>
            </listitem>

<!--  This is now handled in the Resegmentation section 
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> split the segment into two
              segments.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> join the segment with the following
              one.</para>
            </listitem>
 -->
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> convert any <link linkend="pc"><code>&lt;pc&gt;</code></link> element into a
              pair of <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> convert, if it is possible, any pair of
              <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements into a
              <link linkend="pc"><code>&lt;pc&gt;</code></link> element.</para>
            </listitem>
          </itemizedlist>
        </listitem>
      </itemizedlist>
    </section>

    <section id="contentmodificationwithtarget">
      <title>With an Existing Target</title>

      <para>When working with a segment with content already in the target,
        <firstterm>Writers</firstterm> <glossterm>must</glossterm> choose one of the three behaviors described below:</para>

      <itemizedlist>
        <title>Processing Requirements</title>

        <listitem>
          <para><firstterm>Writers</firstterm> <glossterm>may</glossterm> leave the existing target unchanged.</para>
        </listitem>

        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> modify the existing target as follow:</para>

          <itemizedlist>
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add or <firstterm>Modify</firstterm> translatable text.</para>
            </listitem>

            <listitem>
              <para><firstterm>Writers</firstterm> <glossterm>must</glossterm> preserve all <link linkend="editinghints">non-removable</link> inline codes,
              regardless whether or not they exist in the source.</para>
            </listitem>

            <listitem>
              <para><firstterm>Writers</firstterm> <glossterm>must</glossterm> preserve any <link linkend="editinghints">non-reorderable</link> inline codes in
              the existing target.</para>
            </listitem>

            <listitem>
              <para><firstterm>Writers</firstterm> <glossterm>must not</glossterm> add any <link linkend="editinghints">non-reorderable</link> inline codes to
              the target.</para>
            </listitem>

            <!-- Resegmentation can now be prevented via the canResegment flag if target conent needs protection 
            <listitem>
              <para>User agents <glossterm>must not</glossterm> split the segment. The reason to not
              allow splitting of segments with content in the target node is
              because there is no guarantee that the content in the two nodes
              are linguistically in the same order, performing that operation
              would pose a risk to the integrity of the content.</para>
            </listitem>  -->

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> remove any <link linkend="editinghints">removable</link> inline codes in the
              target.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add inline codes (including copying any
              <link linkend="editinghints">cloneable</link> inline codes of
              the existing target).</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> add or remove annotations.</para>
            </listitem>
            <!--  This is now handled in the Resegmentation section
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> join the segment with the following
              segment.</para>
            </listitem>
 -->
            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> convert any <link linkend="pc"><code>&lt;pc&gt;</code></link> element into a
              pair of <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements.</para>
            </listitem>

            <listitem>
              <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> convert, if it is possible, any pair of
              <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements into a
              <link linkend="pc"><code>&lt;pc&gt;</code></link> element.</para>
            </listitem>
          </itemizedlist>
        </listitem>

        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> delete the existing target and start over as
          if working without an existing target.</para>
        </listitem>
      </itemizedlist>
    </section>
  </section>

  <section>
    <title>Content Comparison</title>

    <para>This specification defines two types of content equality:</para>

    <itemizedlist>
      <listitem>
        <para>Equality type A: Two contents are equal if their normalized forms are equal.</para>
      </listitem>

      <listitem>
        <para>Equality type B: Two contents are equal if, in their normalized forms and with all
          inline code markers replaced by the value of their <link linkend="equiv"><code>equiv</code></link>
          attributes, the resulting strings are equal.</para>
      </listitem>
    </itemizedlist>

    <para>A content is normalized when:</para>

    <itemizedlist>
      <listitem>
        <para>The text nodes are in Unicode Normalized Form C defined in the
        Unicode Annex #15: Unicode Normalization Forms <link linkend="uax15">[UAX #15]</link>.</para>
      </listitem>

      <listitem>
        <para>All annotation markers are removed.</para>
      </listitem>

      <listitem>
        <para>All pairs of <link linkend="sc"><code>&lt;sc&gt;</code></link> and <link linkend="ec"><code>&lt;ec&gt;</code></link> elements that can be
        converted into a <link linkend="pc"><code>&lt;pc&gt;</code></link> element, are
        converted.</para>
      </listitem>

      <listitem>
        <para>All adjacent text nodes are merged into a single text
        node.</para>
      </listitem>

      <listitem>
        <para>For all the text nodes with the white space property set to
        <code>default</code>, all adjacent white spaces are collapsed into a
        single space.</para>
      </listitem>
    </itemizedlist>
  </section>
</section>
    <section id="segmentation">
  <title>Segmentation</title>

  <para>In the context of XLIFF, a segment is content which is either a unit
  of extracted text, or has been created from a unit of extracted text by
  means of a segmentation mechanism such as sentence boundary detection. For
  example, a segment can be a title, the text of a menu item, a paragraph or a
  sentence in a paragraph.</para>

  <para>In the context of XLIFF, other types representations sometimes called
  "segmentation" can be represented using annotations. For example: the terms
  in a segment can be identified and marked up using the <link linkend="termAnnotation">term
  annotation</link>.</para>

  <para>XLIFF does not specify how segmentation is carried out, only how to represent its result.
    Material provisions regarding segmentation can be found for instance in the Segmentation Rules
    eXchange standard <link linkend="biblio_srx">[SRX]</link> or <link linkend="uax29">[UAX #29]</link>.</para>

  <section id="segmentationRepresentation">
    <title>Segments Representation</title>

    <para>In XLIFF each segment of processed content is represented by a <link linkend="segment"><code>&lt;segment&gt;</code></link> element.</para>

    <para>A <link linkend="unit"><code>&lt;unit&gt;</code></link> can comprise a single <link linkend="segment"><code>&lt;segment&gt;</code></link>.</para>

    <para>Each <link linkend="segment"><code>&lt;segment&gt;</code></link> element has one
    <link linkend="source"><code>&lt;source&gt;</code></link> element that
    contains the source content and one <glossterm>optional</glossterm> <link linkend="target"><code>&lt;target&gt;</code></link> element that can be
    empty or contain the translation of the source content at a given
    state.</para>

    <para>Content parts between segments are represented with the <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> element,
    which has the same content model as <link linkend="segment"><code>&lt;segment&gt;</code></link>.</para>

    <para>For example:</para>

    <para><programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment&gt;
  &lt;source&gt;First sentence.&lt;/source&gt;
  &lt;target&gt;Première phrase.&lt;/target&gt;
 &lt;/segment&gt;
 &lt;ignorable&gt;
  &lt;source&gt; &lt;/source&gt;
 &lt;/ignorable&gt;
 &lt;segment&gt;
  &lt;source&gt;Second sentence.&lt;/source&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting></para>
  </section>

  <section id="segorder">
    <title>Segments Order</title>

    <para>Some <firstterm>Agents</firstterm> (e.g. aligner tools) can segment content, so that
    the target segments are not in the same order as the source segments.</para>

    <para>To be able to map order differences, the <link linkend="target"><code>&lt;target&gt;</code></link> element has an <glossterm>optional</glossterm> <link linkend="order"><code>order</code></link> attribute
      that indicates its position in the sequence of segments (and inter-segments). Its value is an
      integer from 1 to N, where N is the sum of the numbers of the <link linkend="segment"><code>&lt;segment&gt;</code></link> and <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> elements within the given enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    <warning><para>When <firstterm>Writers</firstterm> set explicit <code><link linkend="order">order</link></code> on <link linkend="target"><code>&lt;target&gt;</code></link> elements,
      they have to check for conflicts with implicit <code><link linkend="order">order</link></code>, as <link linkend="target"><code>&lt;target&gt;</code></link> elements without explicit
      <code><link linkend="order">order</link></code> correspond to their sibling <link linkend="source"><code>&lt;source&gt;</code></link> elements.
      Beware that moving one <link linkend="target"><code>&lt;target&gt;</code></link> element is likely to cause a renumbering domino effect throughout the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para></warning>

    <para>For example, the following HTML documents have the same paragraph
    with three sentences in different order:<programlisting format="linespecific">&lt;p lang='en'&gt;Sentence A. Sentence B. Sentence C.&lt;/p&gt;</programlisting><programlisting format="linespecific">&lt;p lang='fr'&gt;Phrase B. Phrase C. Phrase A.&lt;/p&gt;</programlisting>The
    XLIFF representation of the content, after segmentation and alignment,
    would be:</para>

    <para><programlisting format="linespecific">&lt;unit id="1"&gt;
 &lt;segment id="1"&gt;
  &lt;source&gt;Sentence A.&lt;/source&gt;
  &lt;target order="5"&gt;Phrase A.&lt;/target&gt;
 &lt;/segment&gt;
 &lt;ignorable&gt;
  &lt;source&gt; &lt;/source&gt;
 &lt;/ignorable&gt;
 &lt;segment id="2"&gt;
  &lt;source&gt;Sentence B.&lt;/source&gt;
  &lt;target order="1"&gt;Phrase B.&lt;/target&gt;
 &lt;/segment&gt;
 &lt;ignorable&gt;
  &lt;source&gt; &lt;/source&gt;
 &lt;/ignorable&gt;
 &lt;segment id="3"&gt;
  &lt;source&gt;Sentence C.&lt;/source&gt;
  &lt;target order="3"&gt;Phrase C.&lt;/target&gt;
 &lt;/segment&gt;
&lt;/unit&gt;</programlisting></para>
  </section>

  <section id="segmentationModification">
    <title>Segmentation Modification</title>
    <para>When <firstterm>Modifying</firstterm> segmentation of a <link linkend="unit"><code>&lt;unit&gt;</code></link>,
      <firstterm>Modifiers</firstterm> <glossterm>must</glossterm> meet the Constraints and follow the Processing Requirements defined below:</para>
    <itemizedlist>
      <title>Constraints</title>
      <listitem>
        <para>Integrity of the inline codes <glossterm>must</glossterm> be preserved. See the section on <link linkend="inlineCodes">Inline Codes</link> and on <link linkend="annotations">Annotations</link> for details.</para>
      </listitem>
      <listitem>
        <para>The entire source content of any one <link linkend="unit"><code>&lt;unit&gt;</code></link> element
          <glossterm>must</glossterm> remain logically unchanged: <link linkend="segment"><code>&lt;segment&gt;</code></link> elements or their data <glossterm>must not</glossterm> be moved or joined across units.</para>
      </listitem>
    </itemizedlist>
    <warning><para>Note that when splitting or joining segments that have both source and target content it is advisable
      to keep the resulting segments linguistically aligned, which is likely to require human linguistic expertise and
      hence manual re-segmentation. If the linguistically correct alignment cannot be guaranteed, discarding the target
      content and retranslating the resulting source segments is worth considering.</para></warning>

    <itemizedlist>
      <title>Processing Requirements</title>

      <listitem>
        <para>When the <firstterm>Modifiers</firstterm> perform a split operation:</para>
        <itemizedlist>
          <listitem>
            <para>Only <link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> elements
              that have their <link linkend="canResegment"><code>canResegment</code></link> value resolved to <code>yes</code>
              <glossterm>may</glossterm> be split.</para>
          </listitem>
          <listitem>
            <para>All new <link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> elements
              created and their <link linkend="source"><code>&lt;source&gt;</code></link> and
              <link linkend="target"><code>&lt;target&gt;</code></link> children <glossterm>must</glossterm> have
              the same attribute values as the original elements they were
              created from, as applicable, except for the <link linkend="id"><code>id</code></link> attributes and, possibly, for the
              <link linkend="order"><code>order</code></link>,
              <link linkend="state"><code>state</code></link> and
              <link linkend="substate"><code>subState</code></link> attributes.</para>
          </listitem>
          <listitem>
            <para>Any new <link linkend="id"><code>id</code></link> attributes <glossterm>must</glossterm> follow the
              <link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>
              <link linkend="id"><code>id</code></link> constraints.</para>
          </listitem>
          <listitem>
            <para>If there was a target content in the original segment and if the <link linkend="state"><code>state</code></link> attribute
              of the original segment was not <code>initial</code>, the <link linkend="state"><code>state</code></link> attributes of the
              segments resulting from the split (and possibly their corresponding <link linkend="substate"><code>subState</code></link>
              attributes) <glossterm>may</glossterm> be
              changed to reflect the fact that the target content <glossterm>may</glossterm> need to be verified as the new segmentation <glossterm>may</glossterm> have desynchronized the alignment between
              the source and target contents.</para>
          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>When the <firstterm>Modifiers</firstterm> perform a join operation:</para>
        <itemizedlist>
          <listitem>
            <para>Only <link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> elements
              that have their <link linkend="canResegment"><code>canResegment</code></link> value resolved to
              <code>yes</code> <glossterm>may</glossterm> be join with other elements.</para>
          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>When the <firstterm>Modifiers</firstterm> or <firstterm>Mergers</firstterm> perform a join operation:</para>
        <itemizedlist>
          <listitem>
            <para>Two elements (<link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>)
              <glossterm>must not</glossterm> be joined if their <link linkend="target"><code>&lt;target&gt;</code></link> have
              resolved <link linkend="order"><code>order</code></link> values that are not consecutive.</para>
          </listitem>
          <listitem>
            <para>The attributes of the elements to be joined (<link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>) and the attributes of their
              <link linkend="source"><code>&lt;source&gt;</code></link> and
              <link linkend="target"><code>&lt;target&gt;</code></link>
              <glossterm>must</glossterm> be carried over in the resulting joined elements.</para>
          </listitem>
          <listitem>
            <para>If attributes of elements to be joined (<link linkend="segment"><code>&lt;segment&gt;</code></link> or
              <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link>) differ, or if the attributes of their
              <link linkend="source"><code>&lt;source&gt;</code></link> or
              <link linkend="target"><code>&lt;target&gt;</code></link> differ,
              the resulting joined elements <glossterm>must</glossterm> comply with following rules:</para>
            <itemizedlist>
              <listitem>
                <para>If the <link linkend="state"><code>state</code></link> attributes of the
                  <link linkend="segment"><code>&lt;segment&gt;</code></link> elements
                  differ: the <link linkend="state"><code>state</code></link> attribute of the joined
                  <link linkend="segment"><code>&lt;segment&gt;</code></link>
                  <glossterm>must</glossterm> be set
                  to the "earliest" of the values specified in the original <link linkend="segment"><code>&lt;segment&gt;</code></link> elements. The sequence of
                  <link linkend="state"><code>state</code></link> values are defined in the following order:
                  1: <code>initial</code>, 2: <code>translated</code>, 3: <code>reviewed</code>, and 4: <code>final</code>.</para>
              </listitem>
              <listitem>
                <para>The <link linkend="substate"><code>subState</code></link> attribute <glossterm>must</glossterm> be the one
                  associated with the
                  <link linkend="state"><code>state</code></link> attribute selected to be used in the joined <link linkend="segment"><code>&lt;segment&gt;</code></link>.
                  If no <link linkend="substate"><code>subState</code></link> attribute is associated with that
                  <link linkend="state"><code>state</code></link>, the joined
                  <link linkend="segment"><code>&lt;segment&gt;</code></link> <glossterm>must not</glossterm>
                  have a <link linkend="substate"><code>subState</code></link>.</para>
              </listitem>
              <listitem>
                <para>If the <link linkend="xml_space"><code>xml:space</code></link> attributes differ:
                  The <link linkend="source"><code>&lt;source&gt;</code></link> and
                  <link linkend="target"><code>&lt;target&gt;</code></link> of the joined element <glossterm>must</glossterm> be
                  set to <code>xml:space="preserve"</code>.</para>
              </listitem>
              <!--  dir killed on source and target in the meeting of Dec 17, 2013 and the follow up discussion to simplify 
                the directionality algorithm and resegmentation PR's <listitem>
                <para>If the <olink targetdoc="../attributes/dir.xml" targetptr="dir"><code>dir</code></olink> attributes of the
                  <olink targetdoc="../elements/structural/source.xml" targetptr="source"><code>&lt;source&gt;</code></olink> or
                  <olink targetdoc="../elements/structural/target.xml" targetptr="target"><code>&lt;target&gt;</code></olink> elements differ: The content of the
                  <olink targetdoc="../elements/structural/source.xml" targetptr="source"><code>&lt;source&gt;</code></olink> or
                  <olink targetdoc="../elements/structural/target.xml" targetptr="target"><code>&lt;target&gt;</code></olink> elements set to a
                  different directionality than the directionality for the
                  <olink targetdoc="../elements/structural/source.xml" targetptr="source"><code>&lt;source&gt;</code></olink> or
                  <olink targetdoc="../elements/structural/target.xml" targetptr="target"><code>&lt;target&gt;</code></olink> elements of the joined segment
                  <glossterm>must</glossterm> be enclosed between Unicode bi-directional control characters reflecting their original directionality.
                  A possible mapping is [[TO BE DEFINED]] U+202A and U+202C for left-to-right spans and U+202B and U+202C for right-to-left spans.</para>
              </listitem>  -->
            </itemizedlist>
          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>When the <firstterm>Modifiers</firstterm> or <firstterm>Mergers</firstterm> perform a join or a split operation:</para>
        <itemizedlist>
          <listitem>
            <para>If any <link linkend="segment"><code>&lt;segment&gt;</code></link> or <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> element of the <link linkend="unit"><code>&lt;unit&gt;</code></link> had a <link linkend="target"><code>&lt;target&gt;</code></link> child with an <link linkend="order"><code>order</code></link>
              attribute prior to the segmentation modification, the <link linkend="target"><code>&lt;target&gt;</code></link> child of all <link linkend="segment"><code>&lt;segment&gt;</code></link> and <link linkend="ignorable"><code>&lt;ignorable&gt;</code></link> elements in the <link linkend="unit"><code>&lt;unit&gt;</code></link>
              <glossterm>must</glossterm> be examined and if necessary their <link linkend="order"><code>order</code></link>
              attributes updated to preserve the ordering of the target content prior the
              segmentation modification.</para>
          </listitem>
        </itemizedlist>
      </listitem>

      <!-- 
      <para>When the value of the <olink targetdoc="../attributes/canResegment.xml" targetptr="canResegment"><code>canResegment</code></olink> flag
          is <code>no</code> on all <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment&gt;</code></olink> elements  within a <olink
            targetdoc="../elements/structural/unit.xml" targetptr="unit"
            ><code>&lt;unit&gt;</code></olink>:</para>
        <itemizedlist>
          <listitem><para><firstterm>Modifiers</firstterm>
              <glossterm>must not</glossterm> split or join either the <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink>,  or the <olink targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"><code>&lt;ignorable></code></olink> elements within that <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink>.</para></listitem>

          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> still reorder the <olink
                targetdoc="../elements/structural/target.xml" targetptr="target"
                ><code>&lt;target&gt;</code></olink> elements within that <olink
                  targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink> using the <glossterm>optional</glossterm>
                <code>order</code> attributes as needed.</para>

          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>When the value of the <olink targetdoc="../attributes/canResegment.xml" targetptr="canResegment"><code>canResegment</code></olink> flag is <code>no</code> on some <olink
          targetdoc="../elements/structural/segment.xml" targetptr="segment"
          ><code>&lt;segment&gt;</code></olink> elements and <code>yes</code> on some other <olink
            targetdoc="../elements/structural/segment.xml" targetptr="segment"
            ><code>&lt;segment&gt;</code></olink> elements within a <olink
            targetdoc="../elements/structural/unit.xml" targetptr="unit"
            ><code>&lt;unit&gt;</code></olink>:</para>
        <itemizedlist>
          <listitem><para><firstterm>Modifiers</firstterm>
              <glossterm>must not</glossterm> split or join the <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> elements that have their <olink
                targetdoc="../attributes/canResegment.xml" targetptr="canResegment"
                  ><code>canResegment</code></olink> flag set to <code>no</code>, even not with
                <olink targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements within that <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink>. </para></listitem>

          <listitem><para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> still split or join the <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink>  elements that have their <olink
                targetdoc="../attributes/canResegment.xml" targetptr="canResegment"
                  ><code>canResegment</code></olink> flag inherited or set to <code>yes</code> or
                <olink targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements within that <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink>. </para></listitem>

          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> still reorder all <olink
                targetdoc="../elements/structural/target.xml" targetptr="target"
                  ><code>&lt;target&gt;</code></olink> elements within that <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink> using the <glossterm>optional</glossterm> <code>order</code>
              attributes as needed.</para>

          </listitem>

          <listitem>
            <para><firstterm>Modifiers</firstterm> splitting or joining <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> or <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements <glossterm>must</glossterm>
              update, add, or remove the <code>order</code> attributes of the <olink
                targetdoc="../elements/structural/target.xml" targetptr="target"
                  ><code>&lt;target&gt;</code></olink> elements as needed.</para>

          </listitem>
        </itemizedlist>
      </listitem>

      <listitem>
        <para>When the value of the <olink targetdoc="../attributes/canResegment.xml" targetptr="canResegment"><code>canResegment</code></olink>
          flag is <code>yes</code> on all <olink
          targetdoc="../elements/structural/segment.xml" targetptr="segment"
          ><code>&lt;segment&gt;</code></olink> elements within a <olink
            targetdoc="../elements/structural/unit.xml" targetptr="unit"
            ><code>&lt;unit&gt;</code></olink>:</para>
      <itemizedlist>
      <listitem><para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> split or join all <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> or  <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements within the same <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink> as needed.</para></listitem>

          <listitem>
            <para><firstterm>Modifiers</firstterm> splitting or joining <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> or <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements <glossterm>must</glossterm>
              update, add or remove the <code>order</code> attributes of the <olink
                targetdoc="../elements/structural/target.xml" targetptr="target"
                  ><code>&lt;target&gt;</code></olink> elements as needed to preserve the existing logical order of the target content.</para>
          </listitem>
          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> reorder all <olink
                targetdoc="../elements/structural/target.xml" targetptr="target"
                  ><code>&lt;target&gt;</code></olink> elements within that <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink> using the <glossterm>optional</glossterm> <code>order</code>
              attributes as needed.</para>
          </listitem>
      </itemizedlist>
      </listitem>

      <listitem>
        <para>Handling of content, elements, and attributes in the <olink
            targetdoc="../elements/structural/segment.xml" targetptr="segment"
              ><code>&lt;segment&gt;</code></olink>, <olink
            targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
              ><code>&lt;ignorable&gt;</code></olink>, <olink targetdoc="../elements/structural/source.xml" targetptr="source"><code>&lt;source&gt;</code></olink>, and
              <olink targetdoc="../elements/structural/target.xml" targetptr="target"><code>&lt;target&gt;</code></olink> elements when splitting <olink
            targetdoc="../elements/structural/segment.xml" targetptr="segment"
              ><code>&lt;segment&gt;</code></olink> elements:</para>
        <itemizedlist>
          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>may</glossterm> split the source and target content as they see fit between
              the split instances, except that the eventually resulting <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> element <glossterm>must not</glossterm> hold translatable content.</para>
          </listitem>
          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>must</glossterm> copy all attributes including values, except for the
                <olink targetdoc="../attributes/id.xml" targetptr="id"><code>id</code></olink> and
                <olink targetdoc="../attributes/order.xml" targetptr="order"
                ><code>order</code></olink> attributes, from their original instances on or within
              the original <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> element onto both instances on and within
              the resulting two <olink targetdoc="../elements/structural/segment.xml"
                targetptr="segment"><code>&lt;segment&gt;</code></olink> or <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements, except for attributes that do
              not have valid instances on the eventually resulting <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> element. </para>
            <itemizedlist><listitem>
                <para>New unique <olink targetdoc="../attributes/id.xml" targetptr="id"><code>id</code></olink>
                  values <glossterm>must</glossterm> be created and assigned as needed to fulfill
                  uniqueness constraints within the enclosing <olink
                    targetdoc="../elements/structural/unit.xml" targetptr="unit"
                      ><code>&lt;unit&gt;</code></olink> element.</para>
              </listitem>
              <listitem>
                <para>The <olink targetdoc="../attributes/order.xml" targetptr="order"
                      ><code>order</code></olink> attributes <glossterm>must</glossterm> be
                  reassigned as needed within the enclosing <olink
                    targetdoc="../elements/structural/unit.xml" targetptr="unit"
                      ><code>&lt;unit&gt;</code></olink> element to ensure the desired target text
                  flow.</para>
              </listitem></itemizedlist>
          </listitem>

          <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>must</glossterm> transform spanning inline codes that start and end in
              different new segments into the non spanning versions according to the <olink
                targetdoc="../inline/inline.xml" targetptr="spanningcodeusage">rules</olink> for
              usage and conversion between the different inline code representations.</para>
          </listitem>
        </itemizedlist>
      </listitem>

        <listitem>
        <para> Handling of content, elements and attributes in the <olink
            targetdoc="../elements/structural/segment.xml" targetptr="segment"
              ><code>&lt;segment&gt;</code></olink>, <olink
            targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
              ><code>&lt;ignorable&gt;</code></olink>, <olink
            targetdoc="../elements/structural/source.xml" targetptr="source"
              ><code>&lt;source&gt;</code></olink>, and <olink
            targetdoc="../elements/structural/target.xml" targetptr="target"
              ><code>&lt;target&gt;</code></olink> elements when joining segment or <olink
            targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
              ><code>&lt;ignorable&gt;</code></olink> elements:</para>
          <itemizedlist>
            <listitem>
              <para><firstterm>Modifiers</firstterm>
              <glossterm>must</glossterm> join the content of the original  <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> and  <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements in the same order as it appeared,
              taking the <code>order</code> attribute into account. Non consecutive <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> or  <olink
                targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"
                  ><code>&lt;ignorable&gt;</code></olink> elements <glossterm>must not</glossterm>
              be joined, again taking the <code>order</code> attribute into account.</para>
            </listitem>
            <listitem>
            <para><firstterm>Modifiers</firstterm>
              <glossterm>must</glossterm> put all attributes that are the same on and within all
              joined <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> elements on  their valid instances on and
              within the resulting <olink targetdoc="../elements/structural/segment.xml"
                targetptr="segment"><code>&lt;segment&gt;</code></olink> element.</para>
            </listitem>
            <listitem>
              <para>The <olink targetdoc="../attributes/order.xml" targetptr="order"
                  ><code>order</code></olink> attributes <glossterm>must</glossterm> be reassigned
              or removed as needed within the enclosing <olink
                targetdoc="../elements/structural/unit.xml" targetptr="unit"
                  ><code>&lt;unit&gt;</code></olink> element to ensure the desired target text flow. </para>
          </listitem>
            <listitem>
              <para>If attributes differ in values on the joined <olink
                targetdoc="../elements/structural/segment.xml" targetptr="segment"
                  ><code>&lt;segment&gt;</code></olink> elements or their children elements,
                <firstterm>Modifiers</firstterm>
              <glossterm>must</glossterm> perform the following transformations, according to which
              attributes actually differ.</para>
              <itemizedlist>
                <listitem>
                  <para>If the <olink targetdoc="../attributes/xml_space.xml" targetptr="xml_space"
                    ><code>xml:space</code></olink> attributes differ in values, the resulting
                    value <glossterm>must</glossterm> be <code>preserve</code>.</para>
                </listitem>
                <listitem>
                  <para>If the <olink targetdoc="../attributes/state.xml" targetptr="state"><code>state</code></olink> attributes differ in values, the resulting <olink
                    targetdoc="../elements/structural/segment.xml" targetptr="segment"
                    ><code>&lt;segment&gt;</code></olink> element <glossterm>must</glossterm> have it set to the "earliest"
                    value set on any of the joined segments.</para>
                  <para>"Earliest" in the above refers to the process state of the segment, the leftmost in the sequence <code>initial</code>,
                    <code>translated</code>, <code>reviewed</code>, <code>final</code> is considered the "earliest".</para>
                </listitem>
                <listitem>
                  <para>If the directionality attributes, <olink targetdoc="../attributes/srcdir.xml" targetptr="srcdir"><code>srcDir</code></olink>,
                    <olink targetdoc="../attributes/trgdir.xml" targetptr="trgdir"><code>trgDir</code></olink>, or
                    <olink targetdoc="../attributes/dir.xml" targetptr="dir"><code>dir</code></olink>
                    differ the <firstterm>Modifier</firstterm> <glossterm>must</glossterm> insert Unicode bidirectional
                    control characters <olink targetdoc="../xliff20.xml" targetptr="uax9">[UAX
                      #9]</olink> to secure proper directionality in the <olink
                        targetdoc="../elements/structural/segment.xml" targetptr="segment"
                        ><code>&lt;segment&gt;</code></olink> and its children.</para>
                </listitem>
              </itemizedlist>
            </listitem>
            <listitem>
              <para><firstterm>Modifiers</firstterm>
                <glossterm>may</glossterm> transform non spanning inline codes that started and
                ended in different segments but now start and end in the same segment into the
                spanning version according to the <olink targetdoc="../inline/inline.xml"
                  targetptr="spanningcodeusage">rules</olink> for usage and conversion between the
                different inline code representations.</para>
            </listitem>
          </itemizedlist>
        </listitem>
 -->
      </itemizedlist>

  </section>
</section>
    <section id="extensions">
    <title>Extension Mechanisms</title>
    <para>XLIFF 2.0 offers two mechanisms for storing custom data in an XLIFF document:</para>
    <orderedlist inheritnum="ignore" continuation="restarts">
        <listitem>
            <para>Using the <link linkend="metadata_module">Metadata 
                module</link> for storing custom data in elements defined by the official XLIFF 
                specification.</para>
        </listitem>
        <listitem>
            <para>Using the standard XML namespace mechanism for storing data in elements or attributes defined in a custom 
            XML Schema.</para>
        </listitem>
    </orderedlist>
    <para>Both mechanisms can be used simultaneously.</para>
    <section>
        <title>Extension Points</title>
        <para>The following <firstterm>XLIFF Core</firstterm> elements allow storing custom data in <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link> elements or in elements from a custom
            XML namespace:</para>
        <simplelist type="vert">
            <member>- <link linkend="file"><code>&lt;file&gt;</code></link></member>
            <member>- <link linkend="group"><code>&lt;group&gt;</code></link></member>
            <member>- <link linkend="unit"><code>&lt;unit&gt;</code></link></member>
        </simplelist>
        <!--  The June F2F meeting decided to allow cusotm elements wherever mda is allowed and vice versa, all modules and custom elements were removed from segment and lower to allow for resegmentation 
            <para>Custom extensions using 
            <olink targetdoc="../elements/metadata/metadata.xml" targetptr="metadata"><code>&lt;mda:metadata></code></olink> 
            are allowed in:</para>
        <simplelist>
            <member>- <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment></code></olink></member>
            <member>- <olink targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"><code>&lt;ignorable></code></olink></member>            
            <member>- <olink targetdoc="../elements/candidates/match.xml" targetptr="match"><code>&lt;mtc:match></code></olink></member>
        </simplelist>
         -->    
        <para>The following <firstterm>XLIFF Core</firstterm> elements accept custom
            attributes:</para>
        <simplelist type="vert">
            <member>- <link linkend="xliff"><code>&lt;xliff&gt;</code></link></member>
            <member>- <link linkend="file"><code>&lt;file&gt;</code></link></member>
            <member>- <link linkend="group"><code>&lt;group&gt;</code></link></member>
            <member>- <link linkend="unit"><code>&lt;unit&gt;</code></link></member>
            <!--  Extensions points have been removed from segment and lower structural levels to allow for resegmentation 
            <member>- <olink targetdoc="../elements/structural/segment.xml" targetptr="segment"><code>&lt;segment></code></olink></member>
            <member>- <olink targetdoc="../elements/structural/ignorable.xml" targetptr="ignorable"><code>&lt;ignorable></code></olink></member>            
            <member>- <olink targetdoc="../elements/structural/source.xml" targetptr="source"><code>&lt;source></code></olink></member>
            <member>- <olink targetdoc="../elements/structural/target.xml" targetptr="target"><code>&lt;target></code></olink></member>
             -->
            <member>- <link linkend="note"><code>&lt;note&gt;</code></link></member>
            <member>- <link linkend="mrk"><code>&lt;mrk&gt;</code></link></member>
            <member>- <link linkend="sm"><code>&lt;sm&gt;</code></link></member>
        </simplelist>
        <section>
            <title>Extensibility of <firstterm>XLIFF Modules</firstterm></title>
        <para>For extensibility of <firstterm>XLIFF Modules</firstterm> please refer to the relevant
            Module Sections.</para></section>
        
    </section>
  
  <section id="ext-constraints">
    <title>Constraints</title>
    <itemizedlist>
      <listitem><para>When using identifiers, an extension <glossterm>must</glossterm> use either an attribute named <code>id</code> or the attribute
        <code>xml:id</code> to specify them.</para></listitem>
      <listitem><para>Extensions identifiers <glossterm>must</glossterm> be unique within their immediate <link linkend="file"><code>&lt;file&gt;</code></link>, <link linkend="group"><code>&lt;group&gt;</code></link> 
        or <link linkend="unit"><code>&lt;unit&gt;</code></link> 
        enclosing element.</para></listitem>
      <listitem><para>Identifier values used in extensions <glossterm>must</glossterm> be of type <code>xs:NMTOKEN</code> or compatible with <code>xs:NMTOKEN</code>
        (e.g. <code>xs:NAME</code> and <code>xs:ID</code> are compatible).</para></listitem>
    </itemizedlist>
    <para>These constraints are needed for the <link linkend="fragid">fragment identification mechanism</link>.</para>
  </section>
  
    <section>
        <title>Processing Requirements</title>
        <itemizedlist>
            <listitem>
                <para>A user extension, whether implemented using <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link> or using a custom namespace,
                        <glossterm>must not</glossterm> provide the same functionality as an
                    existing XLIFF core or module feature, however it <glossterm>may</glossterm>
                    complement an extensible XLIFF core feature or module feature or provide a new
                    functionality at the provided extension points.</para>
            </listitem>
            
            <listitem>
                <para><firstterm>Mergers</firstterm> <glossterm>must not</glossterm> rely on custom namespace extensions, other than the ones possibly defined in <link linkend="skeleton"><code>&lt;skeleton&gt;</code></link>, to create the <firstterm>Translated</firstterm> version of
                    the original document. </para>
            </listitem>
            
            <listitem>
                <para><firstterm>Writers</firstterm> that do not support a given custom namespace based user extension
                        <glossterm>should</glossterm> preserve that extension without
                    <firstterm>Modification</firstterm>.</para>
            </listitem>
        </itemizedlist>
    </section>
</section>



  </section>
  <section id="modules">
    <title>The Modules Specifications</title>
    <para>This section specifies the <glossterm>optional</glossterm> <firstterm>Modules</firstterm> that <glossterm>may</glossterm> be used along with <firstterm>Core</firstterm> for advanced functionality.</para>

    <!-- Module includes -->
      <section id="candidates">
    <title>Translation Candidates Module</title>

    <section>
        <title>Introduction</title>

    <para>The source text of a document can be pre-processed against various translation resources
        (TM, MT, etc.) to provide translation candidates. This module provides an XLIFF capability to store lists of
        possible translations along with information about the similarity of the match, the quality
        of the translation, its provenance, etc. </para>
    </section>
    <section>
        <title>Module Namespace</title>
        <para>The namespace for the Translation Candidates module is: <code>urn:oasis:names:tc:xliff:matches:2.0</code></para>
    </section>

    <section>
        <title>Module Fragment Identification Prefix</title>
        <para>The fragment identification prefix for the Translation Candidates module is:
                <code>mtc</code></para>
    </section>

    <section id="matchAnnotation">
        <title>Translation Candidate Annotation</title>

        <para>This annotation can be used to mark up the scope of a translation candidate within the
            content of a unit. This module can reference any source or even target spans of content
            that are referencable via the XLIFF <link linkend="fragid">Fragment Identification</link> mechanism, however in case the
            corresponding fragment is not suitably delimited, the best way how to mark the relevant
            span is to use the following annotation.</para>

        <para>Usage:</para>

        <itemizedlist spacing="compact">
            <listitem>
                <para>The <link linkend="id"><code>id</code></link> attribute is
                    <glossterm>required</glossterm></para>
            </listitem>

            <listitem>
                <para>The <link linkend="type"><code>type</code></link> attribute is <glossterm>required</glossterm>
                    and set to <code>mtc:match</code></para>
            </listitem>


            <listitem>
                <para>The <link linkend="ref"><code>ref</code></link> attribute is not used.</para>
            </listitem>

            <listitem>
                <para>The <link linkend="translate"><code>translate</code></link> attribute is
                        <glossterm>optional</glossterm></para>
            </listitem>
        </itemizedlist>

        <para>For example:</para>

        <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;mtc:matches&gt;
    &lt;mtc:match ref="#m1"&gt;
      &lt;source&gt;He is my friend.&lt;/source&gt;
      &lt;target&gt;Il est mon ami.&lt;/target&gt;
    &lt;/mtc:match&gt;
    &lt;mtc:match ref="#m1"&gt;
      &lt;source&gt;He is my best friend.&lt;/source&gt;
      &lt;target&gt;Il est mon meilleur ami.&lt;/target&gt;
    &lt;/mtc:match&gt;
  &lt;/mtc:matches&gt;
  &lt;segment&gt;
    &lt;source&gt;&lt;mrk id="m1" type="mtc:match"&gt;He is my friend.&lt;/mrk&gt;&lt;/source&gt;
  &lt;/segment&gt;
  &lt;segment&gt;
    &lt;source&gt;Yet, I barely see him.&lt;/source&gt;
  &lt;/segment&gt;
&lt;/unit&gt;</programlisting>
    </section>

    <section>
        <title>Module Elements</title>
        <para>The elements defined in the Translation Candidates module are:
            <link linkend="matches"><code>&lt;matches&gt;</code></link> and
            <link linkend="match"><code>&lt;match&gt;</code></link>.
        </para>

<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>1 = one</member>
    <member>+ = one or more</member>
    <member>? = zero or one</member>
    <member>* = zero or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="matches"><code>&lt;matches&gt;</code></link>
|
+---<link linkend="match"><code>&lt;match&gt;</code></link> +
  |
  +---<link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link> ?
  |
  +---<link linkend="originaldata"><code>&lt;xlf:originalData&gt;</code></link> ?
  |
  +---<link linkend="source"><code>&lt;xlf:source&gt;</code></link> 1
  |
  +---<link linkend="target"><code>&lt;xlf:target&gt;</code></link> 1
  |
  +---&lt;other&gt; *


  </programlisting>
</section>

        <section id="matches">
    <title>matches</title>
    <para>Collection of matches retrieved from any leveraging system (MT, TM, etc.)</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="match"><code>&lt;match&gt;</code></link> elements</member>
    </simplelist>
</section>
        <section id="match">
    <title>match</title>
    <para>A potential translation suggested for a part of the source content of the enclosing <link linkend="unit"><code>&lt;unit&gt;</code></link> element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
      <member>- Zero or one <link linkend="metadata"><code>&lt;mda:metadata&gt;</code></link> element followed by.</member>
      <member>- Zero or one <link linkend="originaldata"><code>&lt;originalData&gt;</code></link> element followed by</member>
      <member>- One <link linkend="source"><code>&lt;source&gt;</code></link> element followed by</member>
      <member>- One <link linkend="target"><code>&lt;target&gt;</code></link> element followed by</member>
      <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="candidates_id"><code>id</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="matchQuality"><code>matchQuality</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="matchSuitability"><code>matchSuitability</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="origin"><code>origin</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="candidates_ref"><code>ref</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="candidates_reference"><code>reference</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="similarity"><code>similarity</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="candidates_subtype"><code>subType</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="candidates_type"><code>type</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para> When a <link linkend="target"><code>&lt;target&gt;</code></link> element is a child of <link linkend="match"><code>&lt;match&gt;</code></link> and the <link linkend="candidates_reference"><code>reference</code></link> attribute is set to <code>yes</code>, the
          <glossterm>optional</glossterm>
        <link linkend="xml_lang"><code>xml:lang</code></link> attribute's value is not <glossterm>required</glossterm> to
        be equal to the value of the <link linkend="trglang"><code>trgLang</code></link> attribute of the enclosing <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    </listitem>
      <!--  removed per  csprd03 235 xml:lang-related text and Translation Candidate module
      <listitem>
        <para><olink targetdoc="../../attributes/xml_lang.xml" targetptr="xml_lang"><code>xml:lang</code></olink>
          <glossterm>must not</glossterm> be set on the <code>match</code> element.</para>
      </listitem>
       -->
  </itemizedlist>
  <!--  removed per  csprd03 235 xml:lang-related text and Translation Candidate module
  <warning><para>Although the XML namespace is allowed by extensibility on the above constrained extension
      point, setting <code>xml:lang</code> here would conflict with the semantic of <olink
        targetdoc="srclang" targetptr="srclang"><code>srcLang</code></olink>, <olink
        targetdoc="trglang" targetptr="trglang"><code>trgLang</code></olink>, and
        <code>xml:lang</code> as defined in this specification, because of XLIFF being primarily a
      bilingual format.</para></warning>
       -->
</section>
    </section>

    <section>
        <title>Module Attributes</title>
        <para>The attributes defined in the Translation Candidates module are:
            <link linkend="candidates_id"><code>id</code></link>,

            <link linkend="matchQuality"><code>matchQuality</code></link>,
            <link linkend="matchSuitability"><code>matchSuitability</code></link>,
            <link linkend="origin"><code>origin</code></link>,

            <link linkend="candidates_ref"><code>ref</code></link>,

            <link linkend="candidates_reference"><code>reference</code></link>,

            <link linkend="similarity"><code>similarity</code></link>,

            <link linkend="candidates_subtype"><code>subType</code></link>, and

            <link linkend="candidates_type"><code>type</code></link>.
        </para>

        <section id="candidates_id">
  <title>id</title>

  <para>Identifier - a character string used to identify a <link linkend="match"><code>&lt;match&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN. </para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  
  
  <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>.</para>
<itemizedlist>
  <title>Constraints</title>
  <listitem><para>The <link linkend="candidates_id"><code>id</code></link> value <glossterm>must</glossterm> be unique within the enclosing <link linkend="matches"><code>&lt;matches&gt;</code></link> element.</para></listitem>
</itemizedlist>

</section>


        <section id="matchQuality">
    <title>matchQuality</title>
    
    <para>Match quality - indicates the quality of the <link linkend="target"><code>&lt;target&gt;</code></link> child of a <link linkend="match"><code>&lt;match&gt;</code></link> element based on an external benchmark or metric.</para>
    
    <para><emphasis>Value description:</emphasis> a decimal number between 0.0 and 100.0.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>.</para>
    
<note><para>This attribute can carry a human review based metrics score, a Machine Translation
            self-reported confidence score etc.</para></note>
</section>
        <section id="matchSuitability">
    <title>matchSuitability</title>
    
    <para>Match suitability - indicates the general suitability and relevance of its <link linkend="match"><code>&lt;match&gt;</code></link> element based on various external benchmarks or metrics
        pertaining to both the <link linkend="source"><code>&lt;source&gt;</code></link>  and the <link linkend="target"><code>&lt;target&gt;</code></link> children of the <link linkend="match"><code>&lt;match&gt;</code></link>. </para>
    <para> This attribute is intended to carry a value that can be combined from values provided in
            <link linkend="similarity"><code>similarity</code></link> and <link linkend="matchQuality"><code>matchQuality</code></link> attributes based on an externally provided
        algorithm.</para>
    
    <para><emphasis>Value description:</emphasis> a decimal number between 0.0 and 100.0.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>.</para>
    
    <note>
        <para> This attribute is also useful for mapping match-quality as specified in XLIFF 1.2
            because 1.2 is not capable of discerning between the source similarity and the target
            quality.</para>
    </note>
    <itemizedlist>
        <title>Processing Requirements</title>
        <listitem>
            <para><firstterm>Agents</firstterm> processing this module <glossterm>must</glossterm> make use of <link linkend="matchSuitability"><code>matchSuitability</code></link> for match ordering purposes if the attribute is specified.
            </para>
        </listitem>
    </itemizedlist>
</section>
        <section id="origin">
    <title>origin</title>
    
    <para>
		Match origin - indicates the tool, system or repository that generated a <link linkend="match"><code>&lt;match&gt;</code></link>
        element. This is a free text short informative
description. For example, 'Microsoft Translator Hub' or 'tm-client123-v456', or 'MSTH
(52217d25-d9e7-54a2-af44-3d4e4341d112_healthc).'
		
		</para>
    
    <para><emphasis>Value description:</emphasis> Text.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>.</para>
    
</section>

        <section id="candidates_ref">
  <title>ref</title>

  <para>Reference - points to a span of source text within the same unit, to which the translation
    candidate is relevant. </para>

  <para><emphasis>Value description:</emphasis> IRI</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis>
    <link linkend="match"><code>&lt;match&gt;</code></link>.</para>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <link linkend="candidates_ref"><code>ref</code></link> attribute <glossterm>MUST</glossterm> point to a span of text within the same <link linkend="unit"><code>&lt;unit&gt;</code></link> element where the
        <link linkend="match"><code>&lt;match&gt;</code></link> is located.</para>
      
    </listitem>
  </itemizedlist>
</section>

        <section id="candidates_reference">
  <title>reference</title>

  <para>Reference - indicates that the <link linkend="target"><code>&lt;target&gt;</code></link> child of the <link linkend="match"><code>&lt;match&gt;</code></link> element contains a <firstterm>Translation</firstterm> into
    a reference language rather than into the target language. For example, a German translation can
    be used as reference by a Luxembourgish translator.</para>

  <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code>.</para>

  <para><emphasis>Default value:</emphasis> <code>no</code>.</para>
 
  <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link></para>
  
</section>

        <section id="similarity">
    <title>similarity</title>
    
    <para>Similarity - indicates the similarity level between the content of the  
        <link linkend="source"><code>&lt;source&gt;</code></link>
        child of a
        <link linkend="match"><code>&lt;match&gt;</code></link>
        element and the translatable text being matched.</para>
    
    <para><emphasis>Value description:</emphasis> a decimal number between 0.0 and 100.0.</para>
        
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>.</para>
    
</section>
        <section id="candidates_subtype">
  <title>subType</title>

  <para>Sub-type - indicates the sub-type, i.e. a secondary level type, of a <link linkend="match"><code>&lt;match&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> </para>
  <para>The value is composed of a prefix and a sub-value separated by a character : (U+003A). The
    prefix is a string uniquely identifying a collection of values for a specific authority. The
    sub-value is any string value defined by an authority. </para>
  <para>The prefix <code>xlf</code> is reserved for this specification, but no sub-values are defined for it at
    this time. Other prefixes and sub-values <glossterm>may</glossterm> be defined by the users.</para>
  <itemizedlist>
    <listitem>
      <para><emphasis>Default value:</emphasis> undefined</para>
    </listitem>
  </itemizedlist>
  <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>
  </para>
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>If the attribute <link linkend="candidates_subtype"><code>subType</code></link> is used, the attribute <link linkend="candidates_type"><code>type</code></link>
        <glossterm>must</glossterm> be explicitly set.</para>
    </listitem>
  </itemizedlist>
    <itemizedlist>
            <title>Processing Requirements</title>
    <listitem>
      <para><firstterm>Writers</firstterm> updating the attribute <link linkend="candidates_type"><code>type</code></link> <glossterm>must</glossterm> also update or delete <link linkend="candidates_subtype"><code>subType</code></link> .</para>
    </listitem>
  </itemizedlist>
</section>

        <section id="candidates_type">
  <title>type</title>

  <para>Type - indicates the type of a <link linkend="match"><code>&lt;match&gt;</code></link> element, it gives the value providing
    additional information on how the match was generated or qualifying further the relevance of the
    match. The list of pre-defined values is general and user-specific information can be added
    using the <link linkend="candidates_subtype"><code>subType</code></link> attribute.</para>

  <para><emphasis>Value description:</emphasis> </para>

  <table>
    <title>Values</title>
    <tgroup cols="2">
      <thead>
        <row>
          <entry>Value</entry>
          <entry>Description</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry>am</entry>
          <entry>Assembled Match: candidate generated by assembling parts of different translations. For example: constructing a candidate by using the known
            translations of various spans of content of the source.
          </entry>
        </row>
        <row>
          <entry>mt</entry>
          <entry>Machine Translation: candidate generated by a machine translation system.</entry>
        </row>
        <row>
          <entry>icm</entry>
          <entry>In Context Match: candidate for which the content context of the translation was the same as the one of the current source. For example:
            the source text for both contents is also preceded and/or followed by an identical source segment, or both appear as e.g. level 2 headings.</entry>
        </row>
        <row>
          <entry>idm</entry>
          <entry>Identifier-based Match: candidate that has an identifier identical to the one of the source content. For example: the previous
            translation of a given UI component with the same ID. match that has an identifier identical to the source
            content.</entry>
        </row>
        <row>
          <entry>tb</entry>
          <entry>Term Base: candidate obtained from a terminological database, i.e. the whole source segment
            matches with a source term base entry.</entry>
        </row>
        <row>
          <entry>tm</entry>
          <entry>Translation Memory: candidate based on a simple match of the source content.</entry>
        </row>
        <row>
          <entry>other</entry>
          <entry>Candidate of a top level type not covered by any of the above definitions.</entry>
        </row>
      </tbody>
    </tgroup>
  </table>
  <itemizedlist>
    <listitem>
      <para><emphasis>Default value:</emphasis> tm</para>
    </listitem>
  </itemizedlist>
  <para><emphasis>Used in:</emphasis> <link linkend="match"><code>&lt;match&gt;</code></link>
  </para>
  <itemizedlist>
    <title>Processing Requirements</title>
    <listitem>
      <para><firstterm>Writers</firstterm> updating the attribute <link linkend="candidates_type"><code>type</code></link> <glossterm>must</glossterm> also update or delete <link linkend="candidates_subtype"><code>subType</code></link> .</para>
    </listitem>
  </itemizedlist>

</section>


    </section>

    <section>
      <title>Example:</title>

      <programlisting format="linespecific">
&lt;mtc:matches&gt;
   &lt;mtc:match id="[NMTOKEN]"&gt;
      &lt;xlf:source&gt;
         &lt;!-- text data --&gt;
      &lt;/xlf:source&gt;
      &lt;xlf:target&gt;
         &lt;!-- text data --&gt;
      &lt;/xlf:target&gt;
      &lt;xlf:originalData&gt;
         &lt;xlf:data id="[NMTOKEN]"&gt;
            &lt;xlf:cp hex="[required]"&gt;
               &lt;!-- text data --&gt;
            &lt;/xlf:cp&gt;
         &lt;/xlf:data&gt;
      &lt;/xlf:originalData&gt;
      &lt;mda:metadata&gt;
         &lt;mda:metagroup&gt;
            &lt;!-- One or more of mda:metagroup or mda:meta --&gt;
         &lt;/mda:metagroup&gt;
      &lt;/mda:metadata&gt;
      &lt;!-- Zero, one or more elements from any namespace --&gt;
   &lt;/mtc:match&gt;
&lt;/mtc:matches&gt;
      </programlisting>

    </section>

    <section id="candidates_schema">
    <title>XML Schema</title>

    <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/matches.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/matches.xsd</ulink>.
    </para>

<programlisting format="linespecific"><!--  gen. 20140331  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:mtc="urn:oasis:names:tc:xliff:matches:2.0"
    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
    xmlns:mda="urn:oasis:names:tc:xliff:metadata:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:matches:2.0"&gt;

  &lt;!-- Import --&gt;

  &lt;xs:import namespace="urn:oasis:names:tc:xliff:document:2.0"
      schemaLocation="../xliff_core_2.0.xsd"/&gt;
  &lt;xs:import namespace="urn:oasis:names:tc:xliff:metadata:2.0"
      schemaLocation="metadata.xsd"/&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="similarity"&gt;
    &lt;xs:restriction base="xs:decimal"&gt;
      &lt;xs:minInclusive value="0.0"/&gt;
      &lt;xs:maxInclusive value="100.0"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="typeValues"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="am"/&gt;
      &lt;xs:enumeration value="mt"/&gt;
      &lt;xs:enumeration value="icm"/&gt;
      &lt;xs:enumeration value="idm"/&gt;
      &lt;xs:enumeration value="tb"/&gt;
      &lt;xs:enumeration value="tm"/&gt;
      &lt;xs:enumeration value="other"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="matches"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="mtc:match"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="match"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="mda:metadata"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:originalData"/&gt;
        &lt;xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/&gt;
        &lt;xs:element minOccurs="1" maxOccurs="1" ref="xlf:target"/&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="matchQuality" use="optional"
          type="mtc:similarity"/&gt;
      &lt;xs:attribute name="matchSuitability" use="optional"
          type="mtc:similarity"/&gt;
      &lt;xs:attribute name="origin" use="optional"/&gt;
      &lt;xs:attribute name="ref" use="required" type="xs:anyURI"/&gt;
      &lt;xs:attribute name="reference" use="optional" type="xlf:yesNo"
          default="no"/&gt;
      &lt;xs:attribute name="similarity" use="optional"
          type="mtc:similarity"/&gt;
      &lt;xs:attribute name="subType" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute name="type" use="optional" type="mtc:typeValues"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>


</section>

</section>
      <section id="glossary-module">
  <title>Glossary Module</title>
  <section>
    <title>Introduction</title>

  <para>Simple glossaries, consisting of a list of terms with a definition or translation, can
    be optionally embedded in an XLIFF document using the namespace mechanism to include elements
    from the Glossary module.</para>
  </section>

    <section>
            <title>Module Namespace</title>
            <para>The namespace for the Glossary module is: <code>urn:oasis:names:tc:xliff:glossary:2.0</code></para>
    </section>

  <section>
    <title>Module Fragment Identification Prefix</title>
    <para>The fragment identification prefix for the Glossary module is: <code>gls</code></para>
  </section>

    <section>
        <title>Module Elements</title>
        <para>The elements defined in the Glossary module are:
                <link linkend="glossary"><code>&lt;glossary&gt;</code></link>,
                <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link>,
                <link linkend="term"><code>&lt;term&gt;</code></link>,
                <link linkend="translation"><code>&lt;translation&gt;</code></link> and
                <link linkend="definition"><code>&lt;definition&gt;</code></link>.
        </para>

<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>1 = one</member>
    <member>+ = one or more</member>
    <member>? = zero or one</member>
    <member>* = zero, one or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="glossary"><code>&lt;glossary&gt;</code></link>
|
+---<link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> +
  |
  +---<link linkend="term"><code>&lt;term&gt;</code></link> 1
  |
  +---<link linkend="translation"><code>&lt;translation&gt;</code></link> *
  |
  +---<link linkend="definition"><code>&lt;definition&gt;</code></link> ?
  |
  +---&lt;other&gt; *


  </programlisting>
</section>


            <section id="glossary">
    <title>glossary</title>
    <para>Container for a list of glossary terms.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> elements.</member>
    </simplelist>
</section>
            <section id="glossentry">
    <title>glossEntry</title>
    <para>Glossary entry.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One <link linkend="term"><code>&lt;term&gt;</code></link> element followed by </member>
        <member>Zero, one or more <link linkend="translation"><code>&lt;translation&gt;</code></link>
            elements followed by </member>
        <member>- Zero or one <link linkend="definition"><code>&lt;definition&gt;</code></link>
            element followed by </member>
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>
      - <link linkend="gls_id">
        <code>id</code>
        </link>, <glossterm>optional</glossterm>
      </member>
        <member> - <link linkend="gls_ref">
                <code>ref</code>
            </link>, <glossterm>optional</glossterm></member>
      <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
        <title>Constraints</title>
        <listitem>
            <para>A <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> element <glossterm>must</glossterm> contain a
                <link linkend="translation"><code>&lt;translation&gt;</code></link>  or a
                <link linkend="definition"><code>&lt;definition&gt;</code></link> element
                to be valid.</para>
        </listitem>
    </itemizedlist>
</section>
            <section id="term">
    <title>term</title>
    <para>A term in the glossary, expressed in the source language of the enclosing
        <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
    </simplelist>

  <para>
    <emphasis>Attributes:</emphasis>
  </para>
  <simplelist type="vert">
    <member>
      - <link linkend="gls_source">
        <code>source</code>
      </link>, <glossterm>optional</glossterm>
    </member>
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
  </simplelist>

</section>
            <section id="translation">
    <title>translation</title>
    <para>A translation of the sibling <link linkend="term"><code>&lt;term&gt;</code></link>
        element expressed in the target language of the enclosing
        <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element. Multiple translations can be specified as synonyms.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="gls_id"><code>id</code></link>, <glossterm>optional</glossterm></member>
        <member> - <link linkend="gls_ref">
            <code>ref</code>
        </link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="gls_source"><code>source</code></link>, <glossterm>optional</glossterm></member>
      <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

</section>
            <section id="definition">
    <title>definition</title>
    <para>Optional definition in plain text for the term stored in the sibling
        <link linkend="term"><code>&lt;term&gt;</code></link> element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
    </simplelist>

  <para>
    <emphasis>Attributes:</emphasis>
  </para>
  <simplelist type="vert">
    <member>
      - <link linkend="gls_source">
        <code>source</code>
      </link>, <glossterm>optional</glossterm>
    </member>
    <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
  </simplelist>

</section>
        </section>

        <section>
            <title>Module Attributes</title>
            <para>The attributes defined in the Glossary module are:
            <link linkend="gls_id"><code>id</code></link>,
            <link linkend="gls_ref"><code>ref</code></link>,
              and
            <link linkend="gls_source"><code>source</code></link></para>

            <section id="gls_id">
  <title>id</title>

  <para>Identifier - a character string used to identify a <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> or <link linkend="translation"><code>&lt;translation&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> and <link linkend="translation"><code>&lt;translation&gt;</code></link></para>
<itemizedlist>
  <title>Constraints</title>
  <listitem>
    <para>The values of <link linkend="gls_id"><code>id</code></link> attributes <glossterm>must</glossterm> be unique among all <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> 
    and <link linkend="translation"><code>&lt;translation&gt;</code></link> elements within the given enclosing 
      <link linkend="glossary"><code>&lt;glossary&gt;</code></link> element.
    </para>
  </listitem>
</itemizedlist>  


</section>
            <section id="gls_ref">
  <title>ref</title>

  <para>Reference - points to a span of source or target text within the same unit, to which the
    glossary entry is relevant.</para>

  <para><emphasis>Value description:</emphasis> IRI</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis>
    <link linkend="glossentry"><code>&lt;glossEntry&gt;</code></link> and <link linkend="translation"><code>&lt;translation&gt;</code></link>.</para>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <link linkend="gls_ref"><code>ref</code></link> attribute <glossterm>MUST</glossterm> point to a span of text
        within the same <link linkend="unit"><code>&lt;unit&gt;</code></link> element, where the enclosing <link linkend="glossary"><code>&lt;glossary&gt;</code></link> element is located.</para>
      
    </listitem>
  </itemizedlist>
</section>
            <section id="gls_source">
  <title>source</title>

  <para>Source - indicates the origin of the content of the element where the attribute is
    defined.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="term"><code>&lt;term&gt;</code></link>, 
  <link linkend="translation"><code>&lt;translation&gt;</code></link>, and 
  <link linkend="definition"><code>&lt;definition&gt;</code></link>.</para>
  
</section>
        </section>



    <section>
      <title>Example:</title>

<programlisting format="linespecific">
  <!-- 
&lt;unit id="1"&gt;
  &lt;segment&gt;
    &lt;source&gt;Press the &lt;mrk id="m1" type="term"&gt;TAB key&lt;/mrk&gt;.&lt;/source&gt;
    &lt;target&gt;Drücken Sie die &lt;mrk id="m2" type="term"&gt;TAB-TASTE&lt;/mrk&gt;.&lt;/target&gt;
  &lt;/segment&gt;
  &lt;gls:glossary&gt;
    &lt;gls:glossentry ref="#m1"&gt;
      &lt;gls:term source="publicTermbase"&gt;TAB key&lt;/gls:term&gt;
      &lt;gls:translation id="1" source="myTermbase"&gt;Tabstopptaste&lt;/gls:translation&gt;
      &lt;gls:translation ref="#m2" source="myTermbase"&gt;TAB-TASTE&lt;/gls:translation&gt;
      &lt;gls:definition source="publicTermbase"&gt;A keyboard key that is traditionally used to insert tab characters into a document.&lt;/gls:definition&gt;
    &lt;/gls:glossentry&gt;
  &lt;/gls:glossary&gt;
&lt;/unit&gt;
 -->
     &lt;unit id="1"&gt;
     &lt;gls:glossary&gt;
       &lt;gls:glossEntry ref="#m1"&gt;
         &lt;gls:term source="publicTermbase"&gt;TAB key&lt;/gls:term&gt;
         &lt;gls:translation id="1" source="myTermbase"&gt;Tabstopptaste
         &lt;/gls:translation&gt;
         &lt;gls:translation ref="#m2" source="myTermbase"&gt;TAB-TASTE
         &lt;/gls:translation&gt;
         &lt;gls:definition source="publicTermbase"&gt;A keyboard key that is
             traditionally used to insert tab characters into a document.
         &lt;/gls:definition&gt;
       &lt;/gls:glossEntry&gt;
     &lt;/gls:glossary&gt;
     &lt;segment&gt;
       &lt;source&gt;Press the &lt;mrk id="m1" type="term"&gt;TAB key&lt;/mrk&gt;.&lt;/source&gt;
       &lt;target&gt;Drücken Sie die &lt;mrk id="m2" type="term"&gt;TAB-TASTE&lt;/mrk&gt;.
       &lt;/target&gt;
     &lt;/segment&gt;
   &lt;/unit&gt;
</programlisting>

    </section>

        <section id="glossary_schema">
    <title>XML Schema</title>
    <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/glossary.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/glossary.xsd</ulink>.
    </para>

<programlisting format="linespecific"><!--  gen. 20140318  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:gls="urn:oasis:names:tc:xliff:glossary:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:glossary:2.0"&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="glossary"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded"
            ref="gls:glossEntry"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="glossEntry"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="1" ref="gls:term"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="unbounded"
            ref="gls:translation"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="gls:definition"/&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="ref" use="optional" type="xs:anyURI"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="term"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="source" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="translation"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="ref" use="optional" type="xs:anyURI"/&gt;
      &lt;xs:attribute name="source" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="definition"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="source" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>


</section>

</section>
      <section id="fs-mod">
<title>Format Style Module</title>

<section>
<title>Introduction</title>
<para>This is intended as a namespace mechanism to carry inside an XLIFF document information needed for generating
a quick at a glance HTML preview of XLIFF content using a predefined set of simple HTML formatting elements.</para>
</section>
<section>
<title>Module Namespace</title>
<para>The namespace for the Format style module is: <code>urn:oasis:names:tc:xliff:fs:2.0</code></para>
</section>
<section>
<title>Module Fragment Identification Prefix</title>
<para>Format Style module does not have a fragment identification prefix. Prefix <code>fs</code> is reserved 
in case it became needed in the future developments of this module.</para>
</section>
<section>
<title>Module Specification</title>

<para>Format Style module consists of just two attributes: <link linkend="fs"><code>fs</code></link> and <link linkend="subFs"><code>subFs</code></link>. It does not specify any elements.</para>
<para>Format Style allows most structural and inline XLIFF core elements to convey basic formatting
information using a predefined subset of HTML formatting elements. It primarily enables the
generation of HTML pages or snippets for preview and review purposes. It <glossterm>must not</glossterm>
be used to prescribe a roundtrip to a source document format.</para>
<para>The <link linkend="fs"><code>fs</code></link> attribute holds the name of an HTML formatting element. If additional style
information is needed, the <glossterm>optional</glossterm> <link linkend="subFs"><code>subFs</code></link> attribute is provided.</para>
<itemizedlist>
<title>Constraints</title>
<listitem>
<para>The Format Style attributes <glossterm>must</glossterm> be configured in such a way that the HTML <link linkend="HTML5">[HTML5]</link> snippet resulting at the <link linkend="file"><code>&lt;file&gt;</code></link> level is valid.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Processing Requirements</title>
<listitem>
<para><firstterm>Extractors</firstterm> and <firstterm>Enrichers</firstterm> <glossterm>should</glossterm> use the following method to validate their HTML snippets:</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<listitem>
<para>Parse the snippet with the <link linkend="HTML5">[HTML5]</link> fragment parsing algorithm, see <ulink url="http://www.w3.org/TR/html5/syntax.html#parsing-html-fragments">http://www.w3.org/TR/html5/syntax.html#parsing-html-fragments</ulink>.</para>
</listitem>
<listitem>
<para>the result <glossterm>must</glossterm> be a valid DOM tree as per <link linkend="HTML5">[HTML5]</link>, see <ulink url="http://www.w3.org/TR/html5/infrastructure.html#tree-order">http://www.w3.org/TR/html5/infrastructure.html#tree-order</ulink>.
</para>
</listitem>
</orderedlist>
</listitem>
</itemizedlist>

<note>
<para>The above constraint and validation method will make sure that the snippets are renderable by
standard HTML browsers.</para>
</note>
</section>
<section>
<title>Module Attributes</title>
<para>The attributes defined in the <link linkend="fs-mod">Format Style</link> module are:
<link linkend="fs"><code>fs</code></link>,
<link linkend="subFs"><code>subFs</code></link>.
</para>

<section id="fs">
<title>fs</title>
<para>Format style attribute, fs - allows most structural and inline XLIFF core elements to convey
basic formatting information using a predefined subset of HTML formatting elements (for example,
HTML elements names like &lt;script&gt; are not included). It enables the generation of HTML pages
or snippets for preview and review purposes. If additional style information is needed, the <glossterm>optional</glossterm>
<link linkend="subFs"><code>subFs</code></link> attribute is
provided.</para>
<para><emphasis>Value description:</emphasis><table>
<title>Values</title>
<tgroup cols="2">
<colspec colname="col1"/>
<colspec colname="col2"/>
<tbody>
<row><entry colname="col1">a</entry><entry colname="col2">anchor</entry></row><row>
<entry>	b	</entry>
<entry>	bold text style	</entry>
</row>

<row>
<entry>	bdo	</entry>
<entry>	I18N BiDi over-ride	</entry>
</row>
<row>
<entry>	big	</entry>
<entry>	large text style	</entry>
</row>
<row>
<entry>	blockquote	</entry>
<entry>	long quotation	</entry>
</row>
<row>
<entry>	body	</entry>
<entry>	document body	</entry>
</row>
<row>
<entry>	br	</entry>
<entry>	forced line break	</entry>
</row>
<row>
<entry>	button	</entry>
<entry>	push button	</entry>
</row>
<row>
<entry>	caption	</entry>
<entry>	table caption	</entry>
</row>
<row>
<entry>	center	</entry>
<entry>	shorthand for DIV align=center	</entry>
</row>
<row>
<entry>	cite	</entry>
<entry>	citation	</entry>
</row>
<row>
<entry>	code	</entry>
<entry>	computer code fragment	</entry>
</row>
<row>
<entry>	col	</entry>
<entry>	table column	</entry>
</row>
<row>
<entry>	colgroup	</entry>
<entry>	table column group	</entry>
</row>
<row>
<entry>	dd	</entry>
<entry>	definition description	</entry>
</row>
<row>
<entry>	del	</entry>
<entry>	deleted text	</entry>
</row>
<row>
<entry>	div	</entry>
<entry>	generic language/style container	</entry>
</row>
<row>
<entry>	dl	</entry>
<entry>	definition list	</entry>
</row>
<row>
<entry>	dt	</entry>
<entry>	definition term	</entry>
</row>
<row>
<entry>	em	</entry>
<entry>	emphasis	</entry>
</row>

<row>
<entry>	h1	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	h2	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	h3	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	h4	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	h5	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	h6	</entry>
<entry>	heading	</entry>
</row>
<row>
<entry>	head	</entry>
<entry>	document head	</entry>
</row>
<row>
<entry>	hr	</entry>
<entry>	horizontal rule	</entry>
</row>
<row>
<entry>	html	</entry>
<entry>	document root element	</entry>
</row>
<row>
<entry>	i	</entry>
<entry>	italic text style	</entry>
</row>

<row><entry>img</entry><entry>image</entry></row><row>
<entry>	label	</entry>
<entry>	form field label text	</entry>
</row>
<row>
<entry>	legend	</entry>
<entry>	fieldset legend	</entry>
</row>
<row>
<entry>	li</entry>
<entry>	list item	</entry>
</row>
<row>
<entry>	ol	</entry>
<entry>	ordered list	</entry>
</row>
<row>
<entry>	p	</entry>
<entry>	paragraph	</entry>
</row>
<row>
<entry>	pre	</entry>
<entry>	preformatted text	</entry>
</row>
<row>
<entry>	q	</entry>
<entry>	short inline quotation	</entry>
</row>
<row>
<entry>	s	</entry>
<entry>	strike-through text style	</entry>
</row>
<row>
<entry>	samp	</entry>
<entry>	sample program output, scripts, etc.	</entry>
</row>
<row>
<entry>	select	</entry>
<entry>	option selector	</entry>
</row>
<row>
<entry>	small	</entry>
<entry>	small text style	</entry>
</row>
<row>
<entry>	span	</entry>
<entry>	generic language/style container	</entry>
</row>
<row>
<entry>	strike	</entry>
<entry>	strike-through text	</entry>
</row>
<row>
<entry>	strong	</entry>
<entry>	strong emphasis	</entry>
</row>

<row>
<entry>	sub	</entry>
<entry>	subscript	</entry>
</row>
<row>
<entry>	sup	</entry>
<entry>	superscript	</entry>
</row>
<row>
<entry>	table	</entry>
<entry>		</entry>
</row>
<row>
<entry>	tbody	</entry>
<entry>	table body	</entry>
</row>
<row>
<entry>	td	</entry>
<entry>	table data cell	</entry>
</row>

<row>
<entry>	tfoot	</entry>
<entry>	table footer	</entry>
</row>
<row>
<entry>	th	</entry>
<entry>	table header cell	</entry>
</row>
<row>
<entry>	thead	</entry>
<entry>	table header	</entry>
</row>
<row>
<entry>	title	</entry>
<entry>	document title	</entry>
</row>
<row>
<entry>	tr	</entry>
<entry>	table row	</entry>
</row>
<row>
<entry>	tt	</entry>
<entry>	teletype or monospaced text style	</entry>
</row>
<row>
<entry>	u	</entry>
<entry>	underlined text style	</entry>
</row>
<row>
<entry>	ul	</entry>
<entry>	unordered list	</entry>
</row>
</tbody>
</tgroup>
</table>
 </para>
<para><emphasis>Default value:</emphasis> undefined.</para>
<para><emphasis>Used in:</emphasis>
<link linkend="file"><code>&lt;file&gt;</code></link>,
<link linkend="unit"><code>&lt;unit&gt;</code></link>,


<!--  modules not allowed in segment

<olink targetdoc="../elements/structural/segment.xml"
targetptr="segment"><code>&lt;segment&gt;</code></olink>,
 -->


 <link linkend="note"><code>&lt;note&gt;</code></link>,



<!--  modules not allowed in segment
<olink
targetdoc="../elements/structural/source.xml" targetptr="source"
><code>&lt;source&gt;</code></olink>, <olink targetdoc="../elements/structural/target.xml"
targetptr="target"><code>&lt;target&gt;</code></olink>,

 -->

<link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>, <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="mrk"><code>&lt;mrk&gt;</code></link>, and  <link linkend="sm"><code>&lt;sm&gt;</code></link>. </para>

<warning><para>The <link linkend="fs"><code>fs</code></link> attribute is not intended to facilitate <firstterm>Merging</firstterm> back into the original format. </para></warning>

<itemizedlist>
<title>Constraints</title>
<listitem><para>The <link linkend="fs"><code>fs</code></link> <glossterm>must</glossterm> only be used with <link linkend="ec"><code>&lt;ec&gt;</code></link> in cases where the <code>isolated</code> attribute is set to 'yes'.</para>
</listitem>

</itemizedlist>


<itemizedlist>
<title>Processing Requirements</title>
<listitem>
<para><firstterm>Writers</firstterm> updating the attribute <link linkend="fs"><code>fs</code></link> <glossterm>must</glossterm> also update or delete <link linkend="subFs"><code>subFs</code></link>.</para>
</listitem>
</itemizedlist>

<para><emphasis>Example: </emphasis>To facilitate HTML preview, <link linkend="fs">fs</link> can be applied to XLIFF like this like:</para>
<!--  seems like a stray
<programlisting>&lt;ph id="ph1" fs:fs="img" fs:subFs="src,smileface.png" /></programlisting>
 -->

<programlisting format="linespecific">&lt;xliff xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0"&gt;
 &lt;file fs:fs="html"&gt;
  &lt;unit id="1" fs:fs="p"&gt;
   &lt;segment&gt;
    &lt;source&gt;Mick Jones renewed his interest in the Vintage
        &lt;pc id="1" fs:fs="strong"&gt;'72 Telecaster Thinline &lt;/pc&gt; guitar.
        &lt;ph id="ph2" fs:fs="br" /&gt;He says &lt;pc fs:fs="q"&gt;I love 'em&lt;/pc&gt;
        &lt;ph id="ph1" fs:fs="img" fs:subFs="src,smileface.png" /&gt;&lt;/source&gt;
  &lt;/segment&gt;
  &lt;/unit&gt;
 &lt;/file&gt;
&lt;/xliff&gt;</programlisting>


<para>With an XSL stylesheet like this: </para>

<programlisting format="linespecific">&lt;xsl:template match="*" priority="2"
    xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0"&gt;
 &lt;xsl:choose&gt;
  &lt;xsl:when test="@fs:fs"&gt;
   &lt;xsl:element name="{@fs:fs}"&gt;
    &lt;xsl:if test="@fs:subFs"&gt;
	 &lt;xsl:variable name="att_name" select="substring-before(@fs:subFs,',')" /&gt;
	 &lt;xsl:variable name="att_val" select="substring-after(@fs:subFs,',')" /&gt;
	 &lt;xsl:attribute name="{$att_name}"&gt;
	  &lt;xsl:value-of select="$att_val" /&gt;
	 &lt;/xsl:attribute&gt;
	&lt;/xsl:if&gt;
    &lt;xsl:apply-templates /&gt;
   &lt;/xsl:element&gt;
  &lt;/xsl:when&gt;
  &lt;xsl:otherwise&gt;
   &lt;xsl:apply-templates /&gt;
  &lt;/xsl:otherwise&gt;
 &lt;/xsl:choose&gt;
&lt;/xsl:template&gt;</programlisting>

<para>You can generate a an HTML page like this: </para>

<programlisting format="linespecific">&lt;html&gt;
   &lt;p&gt;Mick Jones renewed his interest in the Vintage
      &lt;strong&gt;'72 Telecaster Thinline &lt;/strong&gt; guitar.
      &lt;br/&gt;He says &lt;q&gt;I love 'em&lt;/q&gt;
      &lt;img src="smileface.png"/&gt;
   &lt;/p&gt;
&lt;/html&gt;</programlisting>

<!--  move to subFS
<para>For complex HTML previews that require more than one attribute on an HTML preview element, attribute pairs are separated by backslashes (\). Any literal comma or backslash in an attribute value <glossterm>must</glossterm> be escaped with a backslash.</para>

<para>For example, we would use this convention:</para>

<programlisting>&lt;ph id=”p1” fs=”img” subFs=”src,c:\\docs\\images\\smile.png\alt,My Happy Smile\title,Smiling faces\, are nice” /></programlisting>

<para>To produce this HTML preview:</para>

<programlisting>&lt;img src=”c:\docs\images\smile.png” alt=”My Happy Smile” title=”Smiling faces, are nice” /></programlisting>
 -->
</section>
<section id="subFs">
<title>subFs</title>
<para>Sub-format style, subFs - allows extra metadata, like URL for example, to be added in concert
with the <link linkend="fs"><code>fs</code></link> attribute. </para>

<para><emphasis>Value description:</emphasis> The subFs attribute is used to specify the HTML
        attributes to use along with the HTML element declared in the <link linkend="fs"><code>fs</code></link> attribute. It is
        a list of name/value pairs. Each pair is separated from the next with a backslash (\). The
        name and the value of a pair are separated with a comma (,). Both literal backslash and
        comma characters are escaped with a backslash prefix.
        <!--  was
 The subFs <glossterm>must</glossterm> only be used to carry attribute name/value
comma-delimited pairs for attributes that are valid for the HTML element identified by the
accompanied <olink targetdoc="../attributes/fs.xml" targetptr="fs"><code>fs</code></olink> attribute.
 -->
    </para>
<!--  this is now redundant
<para>Example:<code> fs:fs="img" fs:subFs="src,smileface.png"</code>. </para> -->
<para><emphasis>Default value:</emphasis> undefined.</para>
<para><emphasis>Used in:</emphasis>
<link linkend="file"><code>&lt;file&gt;</code></link>, <!-- <olink targetdoc="../elements/structural/skeleton.xml"
targetptr="skeleton"><code>&lt;skeleton&gt;</code></olink>, [does not make sense for skeleton IMHO] -->
<link linkend="unit"><code>&lt;unit&gt;</code></link>,





 <link linkend="note"><code>&lt;note&gt;</code></link>, <!-- -
<olink targetdoc="../elements/candidates/match.xml"
targetptr="match"><code>&lt;match&gt;</code></olink>, [I'd consider having it on this module as well] -->





<link linkend="source"><code>&lt;source&gt;</code></link>, <link linkend="target"><code>&lt;target&gt;</code></link>,






<link linkend="sc"><code>&lt;sc&gt;</code></link>, <link linkend="ec"><code>&lt;ec&gt;</code></link>, <link linkend="ph"><code>&lt;ph&gt;</code></link>, <link linkend="pc"><code>&lt;pc&gt;</code></link>, <link linkend="mrk"><code>&lt;mrk&gt;</code></link>, and <link linkend="sm"><code>&lt;sm&gt;</code></link>. </para>
<warning><para>The <link linkend="subFs"><code>subFs</code></link> attribute is not intended to facilitate <firstterm>Merging</firstterm> back into the original format. </para></warning>

<itemizedlist>
<title>Constraints</title>
<listitem><para>Commas (<code>,</code>) and backslashes (<code>\</code>) in the value parts of the <link linkend="subFs"><code>subFs</code></link> <glossterm>must</glossterm> be escaped with a
backslash (<code>\</code>).</para>
</listitem>
<listitem>
<para>If the attribute <link linkend="subFs"><code>subFs</code></link> is used, the attribute <link linkend="fs"><code>fs</code></link>
<glossterm>must</glossterm> be specified as well.</para>
</listitem>
<listitem><para>The <link linkend="subFs"><code>subFs</code></link> <glossterm>must</glossterm> only be used with <link linkend="ec"><code>&lt;ec&gt;</code></link> in cases where the <code>isolated</code> attribute is set to 'yes'.</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>Processing Requirements</title>
<listitem>
<para><firstterm>Writers</firstterm> updating the attribute <link linkend="fs"><code>fs</code></link> <glossterm>must</glossterm> also update or delete <link linkend="subFs"><code>subFs</code></link>.</para>
</listitem>


</itemizedlist>
<!--  moved from fs section  -->



<para><emphasis>Example: </emphasis>For complex HTML previews that require more than one attribute on an HTML preview element, attribute pairs are separated by backslashes (\). Any literal comma or backslash in an attribute value <glossterm>must</glossterm> be escaped with a backslash.</para>

<para>For example, we would use this convention:</para>

<programlisting format="linespecific">&lt;ph id="p1" fs="img" subFs="src,c:\\docs\\images\\smile.png\alt,
    My Happy Smile\title,Smiling faces\, are nice" /&gt;</programlisting>

<para>To produce this HTML preview:</para>

<programlisting format="linespecific">&lt;img src="c:\docs\images\smile.png" alt="My Happy Smile"
    title="Smiling faces, are nice" /&gt;</programlisting>

</section>

</section>

<section id="fs_schema">
    <title>XML Schema</title>

    <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/fs.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/fs.xsd</ulink>.
    </para>

<programlisting format="linespecific"><!--  gen. 20140318  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:fs:2.0"&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="fs_type"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="a"/&gt;
      &lt;xs:enumeration value="b"/&gt;
      &lt;xs:enumeration value="bdo"/&gt;
      &lt;xs:enumeration value="big"/&gt;
      &lt;xs:enumeration value="blockquote"/&gt;
      &lt;xs:enumeration value="body"/&gt;
      &lt;xs:enumeration value="br"/&gt;
      &lt;xs:enumeration value="button"/&gt;
      &lt;xs:enumeration value="caption"/&gt;
      &lt;xs:enumeration value="center"/&gt;
      &lt;xs:enumeration value="cite"/&gt;
      &lt;xs:enumeration value="code"/&gt;
      &lt;xs:enumeration value="col"/&gt;
      &lt;xs:enumeration value="colgroup"/&gt;
      &lt;xs:enumeration value="dd"/&gt;
      &lt;xs:enumeration value="del"/&gt;
      &lt;xs:enumeration value="div"/&gt;
      &lt;xs:enumeration value="dl"/&gt;
      &lt;xs:enumeration value="dt"/&gt;
      &lt;xs:enumeration value="em"/&gt;
      &lt;xs:enumeration value="h1"/&gt;
      &lt;xs:enumeration value="h2"/&gt;
      &lt;xs:enumeration value="h3"/&gt;
      &lt;xs:enumeration value="h4"/&gt;
      &lt;xs:enumeration value="h5"/&gt;
      &lt;xs:enumeration value="h6"/&gt;
      &lt;xs:enumeration value="head"/&gt;
      &lt;xs:enumeration value="hr"/&gt;
      &lt;xs:enumeration value="html"/&gt;
      &lt;xs:enumeration value="i"/&gt;
      &lt;xs:enumeration value="img"/&gt;
      &lt;xs:enumeration value="label"/&gt;
      &lt;xs:enumeration value="legend"/&gt;
      &lt;xs:enumeration value="li"/&gt;
      &lt;xs:enumeration value="ol"/&gt;
      &lt;xs:enumeration value="p"/&gt;
      &lt;xs:enumeration value="pre"/&gt;
      &lt;xs:enumeration value="q"/&gt;
      &lt;xs:enumeration value="s"/&gt;
      &lt;xs:enumeration value="samp"/&gt;
      &lt;xs:enumeration value="select"/&gt;
      &lt;xs:enumeration value="small"/&gt;
      &lt;xs:enumeration value="span"/&gt;
      &lt;xs:enumeration value="strike"/&gt;
      &lt;xs:enumeration value="strong"/&gt;
      &lt;xs:enumeration value="sub"/&gt;
      &lt;xs:enumeration value="sup"/&gt;
      &lt;xs:enumeration value="table"/&gt;
      &lt;xs:enumeration value="tbody"/&gt;
      &lt;xs:enumeration value="td"/&gt;
      &lt;xs:enumeration value="tfoot"/&gt;
      &lt;xs:enumeration value="th"/&gt;
      &lt;xs:enumeration value="thead"/&gt;
      &lt;xs:enumeration value="title"/&gt;
      &lt;xs:enumeration value="tr"/&gt;
      &lt;xs:enumeration value="tt"/&gt;
      &lt;xs:enumeration value="u"/&gt;
      &lt;xs:enumeration value="ul"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Attributes --&gt;

  &lt;xs:attribute name="fs" type="fs:fs_type"/&gt;

  &lt;xs:attribute name="subFs" type="xs:string"/&gt;

&lt;/xs:schema&gt;
</programlisting>


</section> 
</section>
      <section id="metadata_module">
    <title>Metadata Module</title>
    <section>
        <title>Introduction</title>
        <para>The Metadata module provides a mechanism for storing custom metadata using elements that are part of the official XLIFF specification.</para>
    </section>

    <section>
        <title>Module Namespace</title>
        <para>The namespace for the Metadata module is: <code>urn:oasis:names:tc:xliff:metadata:2.0</code></para>
    </section>
    <section>
        <title>Module Fragment Identification Prefix</title>
        <para>The fragment identification prefix for the Metadata module is: <code>mda</code></para>
    </section>

    <section>
        <title>Module Elements</title>
        <para>The elements defined in the Metadata module are: <link linkend="metadata"><code>&lt;metadata&gt;</code></link>, <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link>, and <link linkend="meta"><code>&lt;meta&gt;</code></link>. </para>
<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>+ = one or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="metadata"><code>&lt;metadata&gt;</code></link>
|
+---<link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> +
  |
  +---At least one of (<link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> OR <link linkend="meta"><code>&lt;meta&gt;</code></link>)
      |
      +---<link linkend="meta"><code>&lt;meta&gt;</code></link>


  </programlisting>
</section>
        <section id="metadata">
    <title>metadata</title>
    <para>Container for metadata associated with the enclosing element.</para>
   <para><emphasis>Contains:</emphasis></para>
   <simplelist type="vert">
      <member>- One or more <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> elements</member>
   </simplelist>
 <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
	     <member>- <link linkend="meta_id"><code>id</code></link>,
                <glossterm>optional</glossterm></member>

  </simplelist>
    <para><emphasis>Example:</emphasis> Metadata can be used to store XML attribute names and values
      for <firstterm>XLIFF Documents</firstterm> that do not use a skeleton. The following XML
      sample contains attributes on the<code> &lt;document&gt;</code> and <code>&lt;row&gt;</code>
      elements.</para>
    <programlisting format="linespecific">&lt;document version="3" phase="draft"&gt;
   &lt;table&gt;
    &lt;row style="head"&gt;&lt;cell&gt;Name&lt;/cell&gt;&lt;cell&gt;Position&lt;/cell&gt;&lt;/row&gt;
	&lt;row&gt;&lt;cell&gt;Patrick K.&lt;/cell&gt;&lt;cell&gt;Right Wing&lt;/cell&gt;&lt;/row&gt;
	&lt;row&gt;&lt;cell&gt;Bryan B.&lt;/cell&gt;&lt;cell&gt;Left Wing&lt;/cell&gt;&lt;/row&gt;
   &lt;/table&gt;
&lt;/document&gt;</programlisting>
    <para>The Metadata module can be used to preserve these attributes for a round trip without
      using a skeleton:</para>
    <programlisting format="linespecific">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;xliff xmlns="urn:oasis:names:tc:xliff:document:2.0"
       xmlns:fs="urn:oasis:names:tc:xliff:fs:2.0"
       xmlns:mda="urn:oasis:names:tc:xliff:metadata:2.0"
       version="2.0" srcLang="en"&gt;
   &lt;file id="f1"&gt;
      &lt;group id="g1" name="document"&gt;
         &lt;mda:metadata&gt;
            &lt;mda:metaGroup category="document_xml_attribute"&gt;
               &lt;mda:meta type="version"&gt;3&lt;/mda:meta&gt;
               &lt;mda:meta type="phase"&gt;draft&lt;/mda:meta&gt;
            &lt;/mda:metaGroup&gt;
         &lt;/mda:metadata&gt;
         &lt;group id="g2" name="table"&gt;
            &lt;group id="g3" name="row"&gt;
               &lt;mda:metadata&gt;
                  &lt;mda:metaGroup category="row_xml_attribute"&gt;
                     &lt;mda:meta type="style"&gt;head&lt;/mda:meta&gt;
                  &lt;/mda:metaGroup&gt;
               &lt;/mda:metadata&gt;
               &lt;unit id="u1" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Name&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
               &lt;unit id="u2" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Position&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
            &lt;/group&gt;
            &lt;group id="g4" name="row"&gt;
               &lt;unit id="u3" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Patrick K.&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
               &lt;unit id="u4" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Right Wing&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
            &lt;/group&gt;
            &lt;group id="g5" name="row"&gt;
               &lt;unit id="u5" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Bryan B.&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
               &lt;unit id="u6" name="cell"&gt;
                  &lt;segment&gt;
                     &lt;source&gt;Left Wing&lt;/source&gt;
                  &lt;/segment&gt;
               &lt;/unit&gt;
            &lt;/group&gt;
         &lt;/group&gt;
      &lt;/group&gt;
   &lt;/file&gt;
&lt;/xliff&gt;</programlisting>

</section>
        <section id="metagroup">
    <title>metaGroup</title>
    <para>Provides a way to organize metadata into a structured hierarchy.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> or <link linkend="meta"><code>&lt;meta&gt;</code></link> elements in any order.</member>
    </simplelist>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
	     <member>- <link linkend="meta_id"><code>id</code></link>,
                <glossterm>optional</glossterm></member>
        <member>- <link linkend="meta_category"><code>category</code></link>, <glossterm>optional</glossterm>
    </member>
	<member>- <link linkend="meta_appliesto"><code>appliesTo</code></link>, <glossterm>optional</glossterm>
    </member>
  </simplelist>
</section>
        <section id="meta">
    <title>meta</title>
    <para>Container for a single metadata component.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Non-translatable text</member>
    </simplelist>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="meta_type"><code>type</code></link>, <glossterm>required</glossterm></member>
    </simplelist>
</section>
    </section>

    <section>
        <title>Module Attributes</title>
        <para>The attributes defined in the Metadata module are:
            <link linkend="meta_appliesto"><code>appliesTo</code></link>,
            <link linkend="meta_category"><code>category</code></link>,
            <link linkend="meta_id"><code>id</code></link>, and
            <link linkend="meta_type"><code>type</code></link>.
         </para>
        <section id="meta_appliesto">
    <title>appliesTo</title>

    <para>Indicates the element to which the content of the metagroup applies.</para>

    <para><emphasis>Value description:</emphasis> <code>source</code>, <code>target</code>, or <code>ignorable</code>.</para>

    <para><emphasis>Default value:</emphasis> undefined.</para>

    <para><emphasis>Used in:</emphasis>
        <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link>.</para>

</section>
        <section id="meta_category">
  <title>category</title>

  <para>category - indicates a category for metadata contained in the enclosing <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> element.</para>
  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined.</para>


  <para><emphasis>Used in:</emphasis>
    <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link>.</para>
</section>
        <section id="meta_id">
  <title>id</title>

  <para>Identifier - a character string used to identify a <link linkend="metadata"><code>&lt;metadata&gt;</code></link> or <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="metadata"><code>&lt;metadata&gt;</code></link> and <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link></para>
<itemizedlist>
  <title>Constraints</title>
  <listitem>
    <para>The values of <link linkend="meta_id"><code>id</code></link> attributes <glossterm>must</glossterm> be unique among all <link linkend="metagroup"><code>&lt;metaGroup&gt;</code></link> 
      and <link linkend="metadata"><code>&lt;metadata&gt;</code></link> elements within the given enclosing 
      <link linkend="metadata"><code>&lt;metadata&gt;</code></link> element.
    </para>
  </listitem>
</itemizedlist>  


</section>
        <section id="meta_type">
  <title>type</title>

  <para>type - indicates the type of metadata contained by the enclosing element.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined.</para>


  <para><emphasis>Used in:</emphasis> <link linkend="meta"><code>&lt;meta&gt;</code></link>.</para>
</section>

    </section>

    <!--   Exmaple removed as per comment 229 <section>
      <title>Example:</title>

      <programlisting format="linespecific">
&lt;mda:metadata&gt;
   &lt;mda:metaGroup&gt;
      &lt;!- - One or more of mda:metaGroup or mda:meta - -&gt;
   &lt;/mda:metaGroup&gt;
&lt;/mda:metadata&gt;
      </programlisting>

    </section> -->

    <section id="metadata_schema">
    <title>XML Schema</title>
    <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/metadata.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/metadata.xsd</ulink>.
    </para>

<programlisting format="linespecific"><!--  gen. 20140318  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:mda="urn:oasis:names:tc:xliff:metadata:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:metadata:2.0"&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="appliesTo"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="source"/&gt;
      &lt;xs:enumeration value="target"/&gt;
      &lt;xs:enumeration value="ignorable"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="metadata"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded"
            ref="mda:metaGroup"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="metaGroup"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:choice minOccurs="1" maxOccurs="unbounded"&gt;
          &lt;xs:element ref="mda:metaGroup"/&gt;
          &lt;xs:element ref="mda:meta"/&gt;
        &lt;/xs:choice&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="category" use="optional"/&gt;
      &lt;xs:attribute name="appliesTo" use="optional" type="mda:appliesTo"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="meta"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="type" use="required" type="xs:string"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>

</section>
      <section id="resourceData_module">
  <title>Resource Data Module</title>
    <section>
      <title>Introduction</title>
      <para>The Resource Data module provides a mechanism for referencing external resource data that <glossterm>may</glossterm> need
        to be modified or used as contextual reference during translation.</para>
    </section>
  <section>
        <title>Module Namespace</title>
        <para>The namespace for the Resource Data module is: <code>urn:oasis:names:tc:xliff:resourcedata:2.0</code></para>
    </section>

  <section>
    <title>Module Fragment Identification Prefix</title>
    <para>The fragment identification prefix for the Resource Data module is: <code>res</code></para>
  </section>

    <section>
    <title>Module Elements</title>
    <para>The elements defined in the Resource Data module are: <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>, <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link>, <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>, <link linkend="res_source"><code>&lt;source&gt;</code></link>, <link linkend="res_target"><code>&lt;target&gt;</code></link>, and <link linkend="res_reference"><code>&lt;reference&gt;</code></link>. </para>
<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>? = zero or one</member>
    <member>* = zero, one or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>
|
+---<link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link> *
|
+---<link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> *
  |
  +---<link linkend="res_source"><code>&lt;source&gt;</code></link> ?
  | |
  | +---&lt;other&gt; *
  |
  +---<link linkend="res_target"><code>&lt;target&gt;</code></link> ?
  | |
  | +---&lt;other&gt; *
  |
  +---<link linkend="res_reference"><code>&lt;reference&gt;</code></link> *


  </programlisting>
</section>
    <section id="res_resourceData">
    <title>resourceData</title>
    <para>Parent container for resource data associated with the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <para>At least one of the following</para>
    <simplelist type="vert">
        <member>- Zero, one or more <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link> elements.</member>
        <member>- Zero, one or more <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> elements.</member>
    </simplelist>  
</section>
          <section id="res_resourceItemRef">
    <title>resourceItemRef</title>
    <para>Specifies a reference to an associated <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> element located at the <link linkend="file"><code>&lt;file&gt;</code></link> level.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>This element is always empty.</member>
    </simplelist>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="res_id"><code>id</code></link>, <glossterm>optional</glossterm></member>
      <member>- <link linkend="res_ref"><code>ref</code></link>, <glossterm>required</glossterm></member>
      <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>The value of the <glossterm>optional</glossterm> <link linkend="res_id">id</link> attribute
        <glossterm>must</glossterm> be unique among all <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>
        and <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link>
        elements of the enclosing <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link> element.</para>
    </listitem>
    
  </itemizedlist>
    <itemizedlist>
      <title>Processing Requirements</title>
      
    <listitem>
      <para><firstterm>Modifiers</firstterm>
        <glossterm>must</glossterm> remove <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link> when removing
        the referenced <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>.</para>
    </listitem>
    
  </itemizedlist>
</section>
    <section id="res_resourceItem">
    <title>resourceItem</title>
    <para>Container for specific resource data that is either intended for
      <firstterm>Modification</firstterm>, or to be used as contextual reference during
      <firstterm>Translation</firstterm>.</para>
    <para><emphasis>Contains:</emphasis></para>
    <para>At least one of the following</para>
    <simplelist type="vert">
        <member>- Zero or one <link linkend="res_source"><code>&lt;source&gt;</code></link> element followed by</member>
        <member>- Zero or one <link linkend="res_target"><code>&lt;target&gt;</code></link> element followed by</member>
        <member>- Zero, one or more <link linkend="res_reference"><code>&lt;reference&gt;</code></link> elements</member>
    </simplelist>
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="res_mimeType"><code>mimeType</code></link>, <glossterm>optional</glossterm></member>
      <member>- <link linkend="res_id"><code>id</code></link>, <glossterm>optional</glossterm></member>
      <member>- <link linkend="res_context"><code>context</code></link>, <glossterm>optional</glossterm></member>
       <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>

    </simplelist>
  <itemizedlist>
    <title>Constraints</title>
    <listitem><para>The <link linkend="res_mimeType"><code>mimeType</code></link> attribute is <glossterm>required</glossterm> if <link linkend="res_target"><code>&lt;target&gt;</code></link> and <link linkend="res_source"><code>&lt;source&gt;</code></link> child elements are empty, otherwise it is
          <glossterm>optional</glossterm>.</para></listitem>
    <listitem>
      <para>The value of the <glossterm>optional</glossterm> <link linkend="res_id">id</link> attribute
        <glossterm>must</glossterm> be unique among all <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>
        and <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link>
        elements of the enclosing <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link> element.</para>
    </listitem>
  </itemizedlist>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para>If a <firstterm>Modifier</firstterm> does not understand how to process the <link linkend="res_mimeType"><code>mimeType</code></link> attribute, or the file it references, the <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> element <glossterm>may</glossterm>
        be ignored, but still <glossterm>must</glossterm> be preserved.</para>
    </listitem>

    <listitem>
      <para>The <link linkend="res_mimeType"><code>mimeType</code></link> attribute <glossterm>should</glossterm> only be modified or removed if the referenced files are modified or removed.</para>
    </listitem>

    <listitem>
      <para>For each instance of <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> containing only <link linkend="res_source"><code>&lt;source&gt;</code></link>:</para>

        <itemizedlist>
          <listitem>
            <para><firstterm>Modifiers</firstterm>
            <glossterm>may</glossterm> leave <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> unchanged, i.e. they are not <glossterm>required</glossterm> to
            create <link linkend="res_target"><code>&lt;target&gt;</code></link> or <link linkend="res_reference"><code>&lt;reference&gt;</code></link>.</para>
          </listitem>
          <listitem>
            <para><firstterm>Modifiers</firstterm>
            <glossterm>may</glossterm> create <link linkend="res_target"><code>&lt;target&gt;</code></link> or <link linkend="res_reference"><code>&lt;reference&gt;</code></link> as a siblings of <link linkend="res_source"><code>&lt;source&gt;</code></link>.</para>
          </listitem>
        </itemizedlist>

    </listitem>

  </itemizedlist>
</section>
    <section id="res_source">
    <title>source</title>
  <para>References the actual resource data that is either intended for
    <firstterm>Modification</firstterm>, or to be used as contextual reference during
    <firstterm>Translation</firstterm>.</para>
    <para><emphasis>Contains:</emphasis></para>
    <para>Either</para>
    <simplelist type="vert">
        <member>- elements from other namespaces</member>
    </simplelist>
    <para>or</para>
    <simplelist type="vert">
        <member>- is empty.</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="res_href"><code>href</code></link>, <glossterm>optional</glossterm></member>
      <member>- <link linkend="res_xml_lang"><code>xml:lang</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>

      <para>The attribute <link linkend="res_href"><code>href</code></link> is <glossterm>required</glossterm> if and
        only if <link linkend="res_source"><code>&lt;source&gt;</code></link> is empty.</para>
    </listitem>

    <listitem>
      <para>When the <glossterm>optional</glossterm> <link linkend="res_xml_lang"><code>xml:lang</code></link>
        attribute is present, its value <glossterm>must</glossterm> be equal to the value of the <link linkend="srclang"><code>srcLang</code></link> attribute
        of the enclosing <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    </listitem>
  </itemizedlist>


  <itemizedlist>
    <title>Processing Requirements</title>


    <listitem>
      <para>When the <link linkend="res_context"><code>context</code></link>
        attribute of <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> is set to <code>yes</code>:</para>
      <itemizedlist>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> create
            <link linkend="res_source"><code>&lt;source&gt;</code></link>
            if not already present.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>should not</glossterm> change
            <link linkend="res_source"><code>&lt;source&gt;</code></link>.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> remove
            <link linkend="res_source"><code>&lt;source&gt;</code></link>.</para>
        </listitem>
      </itemizedlist>
    </listitem>

    <listitem>
      <para>When the <link linkend="res_context"><code>context</code></link>
        attribute of <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>
        is set to <code>no</code>:</para>
      <itemizedlist>
        <listitem>
          <para><link linkend="res_source"><code>&lt;source&gt;</code></link>
            <glossterm>must</glossterm> be present.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>must not</glossterm> change
            <link linkend="res_source"><code>&lt;source&gt;</code></link>.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>must not</glossterm> remove
            <link linkend="res_source"><code>&lt;source&gt;</code></link>.</para>
        </listitem>
      </itemizedlist>
    </listitem>
  </itemizedlist>
</section>
    <section id="res_target">
    <title>target</title>
    <para>References the localized counterpart of the sibling <link linkend="res_source"><code>&lt;source&gt;</code></link> element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <para>Either</para>
    <simplelist type="vert">
        <member>- elements from other namespaces</member>
    </simplelist>
    <para>or</para>
    <simplelist type="vert">
        <member>- is empty.</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
      <member>- <link linkend="res_href"><code>href</code></link>, <glossterm>optional</glossterm></member>
      <member>- <link linkend="res_xml_lang"><code>xml:lang</code></link>, <glossterm>optional</glossterm></member>
       <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>


  <itemizedlist>
    <title>Constraints</title>

    <listitem>

      <para>The attribute <link linkend="res_href"><code>href</code></link>
        is <glossterm>required</glossterm> if and only if
    <link linkend="res_target"><code>&lt;target&gt;</code></link> is empty.</para>
    </listitem>

    <listitem>
      <para>When the <glossterm>optional</glossterm> <link linkend="res_xml_lang"><code>xml:lang</code></link>
        attribute is present, its value <glossterm>must</glossterm> be equal to the value of the
        <link linkend="trglang"><code>trgLang</code></link> attribute of the enclosing <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    </listitem>

  </itemizedlist>
  <itemizedlist>
    <title>Processing Requirements</title>


    <listitem>
      <para>When the <link linkend="res_context"><code>context</code></link>
        attribute of <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>
        is set to <code>yes</code>:</para>
      <itemizedlist>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> create <link linkend="res_target"><code>&lt;target&gt;</code></link> if not already present.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>should not</glossterm> change <link linkend="res_target"><code>&lt;target&gt;</code></link>.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> remove <link linkend="res_target"><code>&lt;target&gt;</code></link>.</para>
        </listitem>
      </itemizedlist>
    </listitem>

    <listitem>
      <para>When the <link linkend="res_context"><code>context</code></link>
        attribute of <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link>
        is set to <code>no</code>:</para>
      <itemizedlist>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> create
            <link linkend="res_target"><code>&lt;target&gt;</code></link>
            if not already present.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> leave
            <link linkend="res_target"><code>&lt;target&gt;</code></link> unchanged.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> change
            <link linkend="res_target"><code>&lt;target&gt;</code></link>.</para>
        </listitem>
        <listitem>
          <para><firstterm>Modifiers</firstterm>
            <glossterm>may</glossterm> replace an existing <link linkend="res_target"><code>&lt;target&gt;</code></link>, i.e. the previously populated <link linkend="res_target"><code>&lt;target&gt;</code></link>
            <glossterm>must not</glossterm> be left blank.</para>
        </listitem>
      </itemizedlist>
    </listitem>

  </itemizedlist>
</section>
    <section id="res_reference">
    <title>reference</title>
    <para>References contextual data relating to the sibling <link linkend="res_source"><code>&lt;source&gt;</code></link> and <link linkend="res_target"><code>&lt;target&gt;</code></link> elements, such as a German screenshot for a Luxembourgish translator.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- This element is always empty.</member>
    </simplelist>
    
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="res_href"><code>href</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="res_xml_lang"><code>xml:lang</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Constraints</title>

    <listitem>
      <para>When the <glossterm>optional</glossterm> <link linkend="res_xml_lang"><code>xml:lang</code></link> attribute is present, its value does not need to be equal to the value of the <link linkend="srclang"><code>srcLang</code></link> or <link linkend="trglang"><code>trgLang</code></link> attribute of the enclosing <link linkend="xliff"><code>&lt;xliff&gt;</code></link> element.</para>
    </listitem>
  </itemizedlist>
    <itemizedlist>
      <title>Processing Requirements</title>
      
    <listitem>
      <para><firstterm>Writers</firstterm> <glossterm>may</glossterm> create <link linkend="res_reference"><code>&lt;reference&gt;</code></link> if not already present.</para>
    </listitem>

    <listitem>
      <para><firstterm>Modifiers</firstterm> <glossterm>should not</glossterm> change <link linkend="res_reference"><code>&lt;reference&gt;</code></link>.</para>
    </listitem>
  
    <listitem>
      <para><firstterm>Modifiers</firstterm> <glossterm>may</glossterm> remove <link linkend="res_reference"><code>&lt;reference&gt;</code></link>.</para>
    </listitem>
     
  </itemizedlist>
</section>
  </section>

    <section>
    <title>Module Attributes</title>
    <para>The attributes defined in the Resource Data module are: <link linkend="res_id"><code>id</code></link>, <link linkend="res_xml_lang"><code>xml:lang</code></link>, <link linkend="res_mimeType"><code>mimeType</code></link>, <link linkend="res_context"><code>context</code></link>, <link linkend="res_href"><code>href</code></link>, and <link linkend="res_ref"><code>ref</code></link>. </para>
    <section id="res_id">
  <title>id</title>

  <para>Identifier - A character string used to identify a <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> and <link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link></para>
  
</section>
    <section id="res_xml_lang">
    <title>xml:lang</title>
    
    <para>Language - The xml:lang attribute specifies the language variant of the text of a given element. 
        For example: <code>xml:lang="fr-FR"</code> indicates the French language as spoken in France.</para>
    
    <para><emphasis>Value description:</emphasis> A language code as described in <link linkend="bcp47">[BCP 47]</link>.</para>
    
    <para><emphasis>Default value:</emphasis> undefined</para>
    
    <para><emphasis>Used in:</emphasis> <link linkend="res_source"><code>&lt;source&gt;</code></link>, 
        <link linkend="res_target"><code>&lt;target&gt;</code></link>, and 
        <link linkend="res_reference"><code>&lt;reference&gt;</code></link>.</para>
</section>
    <section id="res_mimeType">
  <title>mimeType</title>

  <para>MIME type, mimeType - indicates the type of a resource object. This generally corresponds to
    the content type of <ulink url="http://tools.ietf.org/rfc/rfc2045.txt">[RFC 2045]</ulink>, the
    MIME specification; e.g. mimeType="text/xml" indicates the resource data is a text file of XML
    format.</para>

  <para><emphasis>Value description:</emphasis> A MIME type. An existing MIME type <glossterm>must</glossterm> be used from
    a <ulink url="http://www.iana.org/assignments/media-types">list of standard values</ulink>.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link></para>
  <note><para>If you cannot use any of the standard MIME type values as specified above, a new MIME type can be registered according to <ulink url="http://tools.ietf.org/rfc/rfc2048.txt">[RFC
    2048]</ulink>.</para></note>

</section>
    <section id="res_context">
  <title>context</title>

  <para>Contextual Information - Indicates whether an external resource is to be used for context only and not modified.</para>

  <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code></para>

  <para><emphasis>Default value:</emphasis> <code>yes</code></para>

  <para><emphasis>Used in:</emphasis><link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link></para>

</section>
    <section id="res_href">
  <title>href</title>

  <para>Hypertext Reference, href - IRI referencing an external resource.</para>

  <para><emphasis>Value description:</emphasis> IRI.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="res_source"><code>&lt;source&gt;</code></link>, <link linkend="res_target"><code>&lt;target&gt;</code></link>, and <link linkend="res_reference"><code>&lt;reference&gt;</code></link></para>
  
</section>
    <section id="res_ref">
  <title>ref</title>

  <para>Resource Item Reference - holds a reference to an associated <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> element located at the <link linkend="file"><code>&lt;file&gt;</code></link>
    level.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN</para> 

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="res_resourceItemRef"><code>&lt;resourceItemRef&gt;</code></link></para>
  
<itemizedlist>
  <title>Constraints</title>
  <listitem><para>The <link linkend="res_ref"><code>ref</code></link> attribute value <glossterm>must</glossterm> be the value of the <link linkend="res_id"><code>id</code></link> attribute of the <link linkend="res_resourceItem"><code>&lt;resourceItem&gt;</code></link> element being referenced.</para></listitem>
</itemizedlist>
  
</section>
  </section>

    <section>
      <title>Examples:</title>

      <para>In this example, the <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>
      module at <link linkend="file"><code>&lt;file&gt;</code></link> level references external XML that contains resource data
      for a user interface control. The control is the container for the text “Load Registry Config” and needs to be resized to accommodate the increased length of
      the string due to translation. The <link linkend="res_resourceData"><code>&lt;resourceItemRef&gt;</code></link>
      element contained in the <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>
      module at <link linkend="unit"><code>&lt;unit&gt;</code></link> level provides the reference between them.
      The name attribute of the <link linkend="unit"><code>&lt;unit&gt;</code></link> element could serve as the key for
      an editor to associate <link linkend="res_source"><code>&lt;source&gt;</code></link> and
      <link linkend="res_target"><code>&lt;target&gt;</code></link> text with the resource data contained in the referenced
      XML and display it for modification.</para>

<programlisting format="linespecific">
<!-- 
&lt;file&gt;
  &lt;res:resourceData&gt;
    &lt;res:resourceItem id="r1" mimeType="text/xml" context="no"&gt;
      &lt;res:source href="resources\en\registryconfig.resources.xml" /&gt;
      &lt;res:target href="resources\de\registryconfig.resources.xml" /&gt;
    &lt;/res:resourceItem&gt;
  &lt;/res:resourceData&gt;
  &lt;unit id="1" name="130;WIN_DLG_CTRL_"&gt;
    &lt;segment id="1" state="translated"&gt;
      &lt;source&gt;Load Registry Config&lt;/source&gt;
      &lt;target&gt;Registrierungskonfiguration laden&lt;/target&gt;
    &lt;/segment&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItemRef ref="r1" /&gt;
    &lt;/res:resourceData&gt;
  &lt;/unit&gt;
&lt;/file&gt;
 -->
  &lt;file id="f1"&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItem id="r1" mimeType="text/xml" context="no"&gt;
        &lt;res:source href="resources\en\registryconfig.resources.xml" /&gt;
        &lt;res:target href="resources\de\registryconfig.resources.xml" /&gt;
      &lt;/res:resourceItem&gt;
    &lt;/res:resourceData&gt;
    &lt;unit id="1" name="130;WIN_DLG_CTRL_"&gt;
      &lt;res:resourceData&gt;
        &lt;res:resourceItemRef ref="r1" /&gt;
      &lt;/res:resourceData&gt;
      &lt;segment id="1" state="translated"&gt;
        &lt;source&gt;Load Registry Config&lt;/source&gt;
        &lt;target&gt;Registrierungskonfiguration laden&lt;/target&gt;
      &lt;/segment&gt;
    &lt;/unit&gt;
  &lt;/file&gt;
</programlisting>

      <para>In this example, the <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>
      module at the <link linkend="unit"><code>&lt;unit&gt;</code></link> level contains elements from another
      namespace (abc), which could be displayed for modification in an editor that understands how to process the namespace.</para>

<programlisting format="linespecific">
<!-- 
&lt;file&gt;
  &lt;unit id="1"&gt;
    &lt;segment id="1" state="translated"&gt;
      &lt;source&gt;Load Registry Config&lt;/source&gt;
      &lt;target&gt;Registrierungskonfiguration laden&lt;/target&gt;
    &lt;/segment&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItem id="r1" context="no"&gt;
        &lt;res:source&gt;
          &lt;abc:resourceType&gt;button&lt;/abc:resourceType&gt;
          &lt;abc:resourceHeight&gt;40&lt;/abc:resourceHeight&gt;
          &lt;abc:resourceWidth&gt;75&lt;/abc:resourceWidth&gt;
        &lt;/res:source&gt;
        &lt;res:target&gt;
          &lt;abc:resourceType&gt;button&lt;/abc:resourceType&gt;
          &lt;abc:resourceHeight&gt;40&lt;/abc:resourceHeight&gt;
          &lt;abc:resourceWidth&gt;150&lt;/abc:resourceWidth&gt;
        &lt;/res:target&gt;
      &lt;/res:resourceItem&gt;
    &lt;/res:resourceData&gt;
  &lt;/unit&gt;
&lt;/file&gt;
 -->
&lt;file id="f2" xmlns:abc="urn:abc"&gt;
  &lt;unit id="1"&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItem id="r1" context="no"&gt;
        &lt;res:source&gt;
          &lt;abc:resourceType&gt;button&lt;/abc:resourceType&gt;
          &lt;abc:resourceHeight&gt;40&lt;/abc:resourceHeight&gt;
          &lt;abc:resourceWidth&gt;75&lt;/abc:resourceWidth&gt;
        &lt;/res:source&gt;
        &lt;res:target&gt;
          &lt;abc:resourceType&gt;button&lt;/abc:resourceType&gt;
          &lt;abc:resourceHeight&gt;40&lt;/abc:resourceHeight&gt;
          &lt;abc:resourceWidth&gt;150&lt;/abc:resourceWidth&gt;
        &lt;/res:target&gt;
      &lt;/res:resourceItem&gt;
    &lt;/res:resourceData&gt;
    &lt;segment id="1" state="translated"&gt;
      &lt;source&gt;Load Registry Config&lt;/source&gt;
      &lt;target&gt;Registrierungskonfiguration laden&lt;/target&gt;
    &lt;/segment&gt;
  &lt;/unit&gt;
&lt;/file&gt;
</programlisting>

      <para>In this example, the <link linkend="res_resourceData"><code>&lt;resourceData&gt;</code></link>
      module references multiple static images that an editor can make use of as context while translating or reviewing.</para>

<programlisting format="linespecific">
<!-- 
&lt;file&gt;
  &lt;res:resourceData&gt;
    &lt;res:resourceItem id="r1" mimeType="image/jpeg" context="yes"&gt;
      &lt;res:source xml:lang="en-us" href="resources\en\registryconfig1.resources.jpg" /&gt;
      &lt;res:target xml:lang="lb-lu" href="resources\lb\registryconfig1.resources.jpg" /&gt;
      &lt;res:reference xml:lang="de-de" href="resources\de\registryconfig1.resources.jpg" /&gt;
    &lt;/res:resourceItem&gt;
    &lt;res:resourceItem id="r2" mimeType="image/jpeg" context="yes"&gt;
      &lt;res:source xml:lang="en-us" href="resources\en\registryconfig2.resources.jpg" /&gt;
      &lt;res:target xml:lang="lb-lu" href="resources\lb\registryconfig2.resources.jpg" /&gt;
    &lt;/res:resourceItem&gt;
  &lt;/res:resourceData&gt;
  &lt;unit id="1"&gt;
    &lt;segment id="1" state="translated"&gt;
      &lt;source&gt;Remove Registry Config&lt;/source&gt;
      &lt;target&gt;Registrierungskonfiguration entfernen&lt;/target&gt;
    &lt;/segment&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItemRef ref="r1" /&gt;
      &lt;res:resourceItemRef ref="r2" /&gt;
    &lt;/res:resourceData&gt;
  &lt;/unit&gt;
&lt;/file&gt;
 -->
&lt;file id="f3"&gt;
  &lt;res:resourceData&gt;
    &lt;res:resourceItem id="r1" mimeType="image/jpeg" context="yes"&gt;
      &lt;res:source xml:lang="en-us"
          href="resources\en\registryconfig1.resources.jpg" /&gt;
      &lt;res:target xml:lang="lb-lu"
          href="resources\lb\registryconfig1.resources.jpg" /&gt;
      &lt;res:reference xml:lang="de-de"
          href="resources\de\registryconfig1.resources.jpg" /&gt;
    &lt;/res:resourceItem&gt;
    &lt;res:resourceItem id="r2" mimeType="image/jpeg" context="yes"&gt;
      &lt;res:source xml:lang="en-us"
          href="resources\en\registryconfig2.resources.jpg" /&gt;
      &lt;res:target xml:lang="lb-lu"
          href="resources\lb\registryconfig2.resources.jpg" /&gt;
    &lt;/res:resourceItem&gt;
  &lt;/res:resourceData&gt;
  &lt;unit id="1"&gt;
    &lt;res:resourceData&gt;
      &lt;res:resourceItemRef ref="r1" /&gt;
      &lt;res:resourceItemRef ref="r2" /&gt;
    &lt;/res:resourceData&gt;
    &lt;segment id="1" state="translated"&gt;
      &lt;source&gt;Remove Registry Config&lt;/source&gt;
      &lt;target&gt;Registrierungskonfiguration entfernen&lt;/target&gt;
    &lt;/segment&gt;
  &lt;/unit&gt;
&lt;/file&gt;
</programlisting>

    </section>
  <section id="resourcedata_schema">
    <title>XML Schema</title>
  <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/resource_data.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/resource_data.xsd</ulink>.
  </para>

<programlisting format="linespecific"><!--  gen. 20140401  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:res="urn:oasis:names:tc:xliff:resourcedata:2.0"
    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:resourcedata:2.0"&gt;

  &lt;!-- Import --&gt;

  &lt;xs:import namespace="urn:oasis:names:tc:xliff:document:2.0"
      schemaLocation="../xliff_core_2.0.xsd"/&gt;
  &lt;xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="informativeCopiesOf3rdPartySchemas/w3c/xml.xsd"/&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="resourceData"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="unbounded"
            ref="res:resourceItemRef"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="unbounded"
            ref="res:resourceItem"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="resourceItemRef"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="ref" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="resourceItem"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="res:source"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="res:target"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="unbounded"
            ref="res:reference"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="mimeType" use="optional"/&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="context" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="source"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="href" use="optional"/&gt;
      &lt;xs:attribute ref="xml:lang" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="target"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="href" use="optional"/&gt;
      &lt;xs:attribute ref="xml:lang" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="reference"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="href" use="required"/&gt;
      &lt;xs:attribute ref="xml:lang" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>

</section>
      <section id="changeTracking_module">
  <title>Change Tracking Module</title>
    <section>
      <title>Introduction</title>
      <para>The Change Tracking module is used to store revision information for XLIFF elements and attributes.</para>
    </section>
  <section>
        <title>Module Namespace</title>
        <para>The namespace for the Change Tracking module is: <code>urn:oasis:names:tc:xliff:changetracking:2.0</code></para>
    </section>

  <section>
    <title>Module Fragment Identification Prefix</title>
    <para>The fragment identification prefix for the Change Tracking module is: <code>ctr</code></para>
  </section>

    <section>
    <title>Module Elements</title>
    <para>The elements defined in the Change Tracking module are: <link linkend="changeTrack"><code>&lt;changeTrack&gt;</code></link>, <link linkend="revisions"><code>&lt;revisions&gt;</code></link>, <link linkend="revision"><code>&lt;revision&gt;</code></link>, and <link linkend="item"><code>&lt;item&gt;</code></link>.</para>
<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>+ = one or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="changeTrack"><code>&lt;changeTrack&gt;</code></link>
|
+---<link linkend="revisions"><code>&lt;revisions&gt;</code></link> +
  |
  +---<link linkend="revision"><code>&lt;revision&gt;</code></link> +
    |
    +---<link linkend="item"><code>&lt;item&gt;</code></link> +


  </programlisting>
</section>
    <section id="changeTrack">
    <title>changeTrack</title>
    <para>Parent container for change tracking information associated with a sibling element, or a child of a sibling element, to the change track module within the scope of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="revisions"><code>&lt;revisions&gt;</code></link> elements.</member>
    </simplelist>  
</section>
    <section id="revisions">
    <title>revisions</title>
    <para>Container for logical groups of revisions associated with a sibling element, or a child of a sibling element, to the change track module within the scope of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="revision"><code>&lt;revision&gt;</code></link> elements.</member>
    </simplelist>
    
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="ctr_appliesTo"><code>appliesTo</code></link>, <glossterm>required</glossterm></member>
        <member>- <link linkend="ctr_ref"><code>ref</code></link>, <glossterm>optional</glossterm></member> 
        <member>- <link linkend="ctr_currentVersion"><code>currentVersion</code></link>, <glossterm>optional</glossterm></member> 
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para>Modifying agents <glossterm>may</glossterm> create <link linkend="revisions"><code>&lt;revisions&gt;</code></link> elements with attributes.</para>
    </listitem>

    <listitem>
      <para>Modifying agents <glossterm>should not</glossterm> modify <link linkend="revisions"><code>&lt;revisions&gt;</code></link> and its attributes defined in this module,
        except in the case where the <link linkend="ctr_currentVersion"><code>currentVersion</code></link> attribute is used.
        This attribute <glossterm>should</glossterm> be updated when a new revision becomes the most current.</para>
     </listitem>
    
     <listitem>
       <para>Modifying agents <glossterm>should not</glossterm> remove <link linkend="revisions"><code>&lt;revisions&gt;</code></link> and its attributes defined in this module.</para>
     </listitem>

    <listitem>
      <para>When the <link linkend="ctr_appliesTo"><code>appliesTo</code></link> attribute refers to an element that is a multiple instance within
        the enclosing element, the <link linkend="ctr_ref"><code>ref</code></link> attribute <glossterm>must</glossterm> be used to reference an individual
        instance if and only if the referenced instance has an id. Using <link linkend="notes"><code>&lt;notes&gt;</code></link> as an example:</para>
      <programlisting format="linespecific">
      &lt;notes&gt;
        &lt;note id="n1"&gt;new note&lt;/note&gt;
        &lt;note id="n2"&gt;another note&lt;/note&gt;  
      &lt;/notes&gt;
      &lt;ctr:changeTrack&gt;
        &lt;ctr:revisions appliesTo="note" ref="n1"&gt;
          &lt;ctr:revision&gt;
            &lt;ctr:item property="content"&gt;old note&lt;/ctr:item&gt;
          &lt;/ctr:revision&gt;
        &lt;/ctr:revisions&gt;
      &lt;/ctr:changeTrack&gt;
      </programlisting>
     </listitem>  
    
  </itemizedlist>
</section>
    <section id="revision">
    <title>revision</title>
    <para>Container for specific revisions associated with a sibling element, or a child of a sibling element, to the change track module within the scope of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="item"><code>&lt;item&gt;</code></link> elements.</member>
    </simplelist>
    
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="ctr_author"><code>author</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="ctr_datetime"><code>datetime</code></link>, <glossterm>optional</glossterm></member> 
        <member>- <link linkend="ctr_version"><code>version</code></link>, <glossterm>optional</glossterm></member> 
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para>Modifying agents <glossterm>may</glossterm> create <link linkend="revision"><code>&lt;revision&gt;</code></link> elements with attributes.</para>
    </listitem>
    
    <listitem>
      <para>Modifying agents <glossterm>should not</glossterm> modify <link linkend="revision"><code>&lt;revision&gt;</code></link> and its attributes defined in this module.</para>
    </listitem>

    <listitem>
      <para>Modifying agents <glossterm>may</glossterm> remove <link linkend="revision"><code>&lt;revision&gt;</code></link> and its attributes defined in this module 
        if and only if there is more than one instance of <link linkend="revision"><code>&lt;revision&gt;</code></link> present. For example, a user agent can decide
        to preserve only the most current revision.</para>
    </listitem>

  </itemizedlist>
</section>
    <section id="item">
    <title>item</title>
    <para>Container for a specific revision associated with a sibling element, or a child of a sibling element, to the change track module within the scope of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Text</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="ctr_property"><code>property</code></link>, <glossterm>required</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

  <itemizedlist>
    <title>Processing Requirements</title>

    <listitem>
      <para>Modifying agents <glossterm>may</glossterm> create <link linkend="item"><code>&lt;item&gt;</code></link> elements with attributes.</para>
    </listitem>

    <listitem>
      <para>Modifying agents <glossterm>should not</glossterm> modify <link linkend="item"><code>&lt;item&gt;</code></link> and its attribute defined in this module.</para>
    </listitem>

    <listitem>
      <para>Modifying agents <glossterm>should not</glossterm> remove <link linkend="item"><code>&lt;item&gt;</code></link> and its attribute defined in this module,
        unless they are removed as part of a <link linkend="revision"><code>&lt;revision&gt;</code></link> element removed according to its own processing requirements.</para>
     </listitem>

  </itemizedlist>
</section>
  </section>

    <section>
    <title>Module Attributes</title>
    <para>The attributes defined in the Change Tracking module are: <link linkend="ctr_appliesTo"><code>appliesTo</code></link>, <link linkend="ctr_author"><code>author</code></link>, <link linkend="ctr_currentVersion"><code>currentVersion</code></link>, <link linkend="ctr_datetime"><code>datetime</code></link>, <link linkend="ctr_ref"><code>ref</code></link>, <link linkend="ctr_property"><code>property</code></link>, and <link linkend="ctr_version"><code>version</code></link>.


      </para>
    <section id="ctr_appliesTo">
  <title>appliesTo</title>

  <para>appliesTo – Indicates a specific XLIFF element which is a sibling, or a child of a sibling element, to the change track module within the scope of the enclosing element.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN name of any valid XLIFF element which is a
    sibling, or a child of a sibling element, to the change track module within the scope of the
    enclosing element. </para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="revisions"><code>&lt;revisions&gt;</code></link></para>
  
</section>
    <section id="ctr_author">
  <title>author</title>

  <para>author - Indicates the user or agent that created or modified the referenced element or its
    attributes.</para>

  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="revision"><code>&lt;revision&gt;</code></link>.</para>
  
</section>
    <section id="ctr_currentVersion">
  <title>currentVersion</title>

  <para>currentVersion - holds a reference to the most current version of a revision.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN</para> 

  <para><emphasis>Default value:</emphasis> none</para>

  <para><emphasis>Used in:</emphasis><link linkend="revisions"><code>&lt;revisions&gt;</code></link>.</para>

<itemizedlist>
  <title>Constraints</title>
  <listitem><para>The value of the <link linkend="ctr_currentVersion"><code>currentVersion</code></link> attribute <glossterm>must</glossterm> be 
    the value of the <link linkend="ctr_version"><code>version</code></link> attribute of one 
    of the <link linkend="revision"><code>&lt;revision&gt;</code></link> elements 
    listed in the same <link linkend="revisions"><code>&lt;revisions&gt;</code></link> element.</para></listitem>
</itemizedlist>
  
</section>
    <section id="ctr_datetime">
  <title>datetime</title>

  <para>Date and Time, datetime - Indicates the date and time the referenced element or its
    attributes were created or modified.</para>

  <para><emphasis>Value description:</emphasis> Date in one of the formats defined in <link linkend="bib_datetime">[NOTE-datetime]</link>.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="revision"><code>&lt;revision&gt;</code></link>.</para>
  
</section>
    <section id="ctr_ref">
  <title>ref</title>

  <para>Reference - Holds a reference to a single instance of an element that has
    multiple instances within the enclosing element.</para>

  <para><emphasis>Value description:</emphasis> An <link linkend="XMLSchema2">[XML Schema Datatypes]</link> NMTOKEN</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="revisions"><code>&lt;revisions&gt;</code></link></para>
  
<itemizedlist>
  <title>Constraints</title>
  <listitem><para> The value of the <link linkend="ctr_ref"><code>ref</code></link> attribute <glossterm>must</glossterm> be the value of the <link linkend="id"><code>id</code></link> attribute of a single instance of an element that is a multiple instance within the enclosing element.</para></listitem>
</itemizedlist>
  
</section>
    <section id="ctr_property">
  <title>property</title>

  <para>property – Indicates the type of revision data.</para>

  <para><emphasis>Value description:</emphasis> The value <glossterm>must</glossterm> be either <code>content</code> to signify the content of an element, or the name of the attribute relating to the revision data.</para>

  <para><emphasis>Default value:</emphasis> none</para>

  <para><emphasis>Used in:</emphasis><link linkend="item"><code>&lt;item&gt;</code></link>.</para>
  
</section>
    <section id="ctr_version">
  <title>version</title>

  <para>version - Indicates the version of the referenced element or its attributes that were
    created or modified.</para>

  <para><emphasis>Value description:</emphasis> NMTOKEN.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="revision"><code>&lt;revision&gt;</code></link>.</para>
  
</section>
  </section>

  <section>
      <title>Example:</title>

<para>The following example shows change tracking for <link linkend="source"><code>&lt;source&gt;</code></link>,
<link linkend="target"><code>&lt;target&gt;</code></link>, and
<link linkend="notes"><code>&lt;notes&gt;</code></link>. Current and previous versions are both stored in the Change Tracking module.</para>

<programlisting format="linespecific">
  <!-- 
&lt;unit id="1"&gt;
    &lt;segment&gt;
      &lt;source&gt;Hello World&lt;/source&gt;
      &lt;target&gt;Guten Tag Welt&lt;/target&gt;
    &lt;/segment&gt;
    &lt;notes&gt;
      &lt;note category="instruction" id="n1"&gt;The translation should be formal&lt;/note&gt;
      &lt;note category="comment" id="n2"&gt;Please Review my translation&lt;/note&gt;
    &lt;/notes&gt;
    &lt;changeTrack&gt;
      &lt;revisions appliesTo="source" currentVersion="r1"&gt;
        &lt;revision author="system" datetime="2013-07-15T10:00:00+8:00" version="r1"&gt;
          &lt;item property="content"&gt;Hello World&lt;/item&gt;&gt;
        &lt;/revision&gt;
        &lt;revision author="system" datetime="2013-06-15T10:00:00+8:00" version="r2"&gt;
          &lt;item property="content"&gt;Hello&lt;/item&gt;&gt;
        &lt;/revision&gt;
        &lt;revision author="system" datetime="2013-05-15T10:00:00+8:00" version="r3"&gt;
          &lt;item property="content"&gt;Hi&lt;/item&gt;
        &lt;/revision&gt;
      &lt;/revisions&gt;
      &lt;revisions appliesTo="target" currentVersion="r1"&gt;
       &lt;revision author="Frank" datetime="2013-07-17T11:00:00+8:00" version="r1"&gt;
          &lt;item property="content"&gt;Guten Tag Welt&lt;/item&gt;
        &lt;/revision&gt;
        &lt;revision author="Frank" datetime="2013-06-17T11:00:00+8:00" version="r2"&gt;
          &lt;item property="content"&gt;Hallo&lt;/item&gt;
        &lt;/revision&gt;
        &lt;revision author="Frank" datetime="2013-05-17T11:00:00+8:00" version="r3"&gt;
          &lt;item property="content"&gt;Grüsse&lt;/item&gt;
        &lt;/revision&gt;
      &lt;/revisions&gt;
      &lt;revisions appliesTo="note" nid="n1" currentVersion="r1"&gt;
        &lt;revision author="Bob" datetime="2013-07-16T10:30:00+8:00" version="r1"&gt;
          &lt;item property="content"&gt;The translation should be formal&lt;/item&gt;
          &lt;item property="category"&gt;instruction&lt;/item&gt;
        &lt;/revision&gt;
        &lt;revision author="Bob" datetime="2013-05-16T10:30:00+8:00" version="r2"&gt;
          &lt;item property="content"&gt;The translation should be informal&lt;/item&gt;
          &lt;item property="category"&gt;comment&lt;/item&gt;
        &lt;/revision&gt;
      &lt;/revisions&gt;
      &lt;revisions appliesTo="note" nid="n2" currentVersion="r1"&gt;
        &lt;revision author="Bob" datetime="2013-07-18T10:30:00+8:00" version="r1"&gt;
          &lt;item property="content"&gt;Please Review my translation&lt;/item&gt;
        &lt;/revision&gt;
      &lt;/revisions&gt;
    &lt;/changeTrack&gt;
 &lt;/unit&gt;
  -->
     &lt;unit id="1"&gt;
     &lt;ctr:changeTrack&gt;
       &lt;ctr:revisions appliesTo="source" currentVersion="r1"&gt;
         &lt;ctr:revision author="system" datetime="2013-07-15T10:00:00+8:00"
             version="r1"&gt;
           &lt;ctr:item property="content"&gt;Hello World&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
         &lt;ctr:revision author="system" datetime="2013-06-15T10:00:00+8:00"
             version="r2"&gt;
           &lt;ctr:item property="content"&gt;Hello&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
         &lt;ctr:revision author="system" datetime="2013-05-15T10:00:00+8:00"
             version="r3"&gt;
           &lt;ctr:item property="content"&gt;Hi&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
       &lt;/ctr:revisions&gt;
       &lt;ctr:revisions appliesTo="target" currentVersion="r1"&gt;
         &lt;ctr:revision author="Frank" datetime="2013-07-17T11:00:00+8:00"
             version="r1"&gt;
           &lt;ctr:item property="content"&gt;Guten Tag Welt&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
         &lt;ctr:revision author="Frank" datetime="2013-06-17T11:00:00+8:00"
             version="r2"&gt;
           &lt;ctr:item property="content"&gt;Hallo&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
         &lt;ctr:revision author="Frank" datetime="2013-05-17T11:00:00+8:00"
             version="r3"&gt;
           &lt;ctr:item property="content"&gt;Grüsse&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
       &lt;/ctr:revisions&gt;
       &lt;ctr:revisions appliesTo="note" ref="n1" currentVersion="r1"&gt;
         &lt;ctr:revision author="Bob" datetime="2013-07-16T10:30:00+8:00"
             version="r1"&gt;
           &lt;ctr:item property="content"&gt;The translation should be formal
           &lt;/ctr:item&gt;
           &lt;ctr:item property="category"&gt;instruction&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
         &lt;ctr:revision author="Bob" datetime="2013-05-16T10:30:00+8:00"
             version="r2"&gt;
           &lt;ctr:item property="content"&gt;The translation should be informal
           &lt;/ctr:item&gt;
           &lt;ctr:item property="category"&gt;comment&lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
       &lt;/ctr:revisions&gt;
       &lt;ctr:revisions appliesTo="note" ref="n2" currentVersion="r1"&gt;
         &lt;ctr:revision author="Bob" datetime="2013-07-18T10:30:00+8:00"
             version="r1"&gt;
           &lt;ctr:item property="content"&gt;Please Review my translation
           &lt;/ctr:item&gt;
         &lt;/ctr:revision&gt;
       &lt;/ctr:revisions&gt;
     &lt;/ctr:changeTrack&gt;
     &lt;notes&gt;
       &lt;note category="instruction" id="n1"&gt;The translation should be
       formal&lt;/note&gt;
       &lt;note category="comment" id="n2"&gt;Please Review my translation&lt;/note&gt;
     &lt;/notes&gt;
     &lt;segment&gt;
       &lt;source&gt;Hello World&lt;/source&gt;
       &lt;target&gt;Guten Tag Welt&lt;/target&gt;
     &lt;/segment&gt;
   &lt;/unit&gt;
</programlisting>

</section>
  <section id="change-tracking_schema">
    <title>XML Schema</title>
  <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/change_tracking.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/change_tracking.xsd</ulink>.
  </para>

<programlisting format="linespecific"><!--  gen. 20140318  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:ctr="urn:oasis:names:tc:xliff:changetracking:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:changetracking:2.0"&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="changeTrack"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded"
            ref="ctr:revisions"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="revisions"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded"
            ref="ctr:revision"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="appliesTo" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="ref" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="currentVersion" use="optional"
          type="xs:NMTOKEN"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="revision"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="ctr:item"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="author" use="optional"/&gt;
      &lt;xs:attribute name="datetime" use="optional"/&gt;
      &lt;xs:attribute name="version" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="item"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="property" use="required"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>

</section>
      <section id="size_restriction_module">
    <title>Size and Length Restriction Module</title>

        <section>
        <title>Introduction</title>
            <para>The Size and Length Restriction module provides a mechanism to annotate the XLIFF content with information on storage and general
                size restrictions.</para>
            <para>The restriction framework has support for two distinct types of restrictions; storage
            size restrictions and general size restriction. The reason for this is that it is often
            common to have separate restrictions between storage and display / physical
            representation of data. Since it would be impossible to define all restrictions here a
            concept of restriction profile is introduced. The profiles for storage size and general
            size are independent. The information related to restriction profiles are stored in the
            processing invariant part of the XLIFF file like the <link linkend="file"><code>&lt;xlf:file&gt;</code></link>, <link linkend="group"><code>&lt;xlf:group&gt;</code></link> and <link linkend="unit"><code>&lt;xlf:unit&gt;</code></link> elements and contained within elements
            defined in this module. The information regarding the specific restrictions are stored
            on the processing invariant parts and on the inline elements as attributes or attributes
            referencing data in the elements defined in this module. To avoid issues with
            segmentation no information regarding size restrictions is present on <link linkend="segment"><code>&lt;xlf:segment&gt;</code></link>, <link linkend="source"><code>&lt;xlf:source&gt;</code></link> and <link linkend="target"><code>&lt;xlf:target&gt;</code></link> elements. The module defines a namespace
            for all the elements and attributes it introduces, in the rest of the module
            specification elements and attributes are in this namespace unless stated otherwise. In
            other parts of the XLIFF specification the prefix "slr" is used to refer to this module's
            namespace. For clarity the prefix "xlf" will be used for <firstterm>XLIFF Core</firstterm> elements and
            attributes. Profile names use the same namespace-like naming convention as user defined values in the
            <firstterm>XLIFF Core</firstterm> specification. The names <glossterm>should</glossterm> be composed of two components separated by a
            colon. &lt;authority&gt;:&lt;name&gt;. The authority "xliff" is reserved for profiles defined
            by the OASIS XLIFF Technical Committee.</para>
    </section>
    <section>
        <title>Module Namespace</title>
        <para>The namespace for the Size and Length restriction module is:
                <code>urn:oasis:names:tc:xliff:sizerestriction:2.0</code></para>
    </section>

    <section>
        <title>Module Fragment Identification Prefix</title>
        <para>The fragment identification prefix for the Size and Length restriction module is: <code>slr</code></para>
    </section>

    <section>
        <title>Module Elements</title>
        <para>The elements defined in the Size and Length restriction module are: <link linkend="slr_profiles"><code>&lt;profiles&gt;</code></link>, <link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link> and <link linkend="slr_data"><code>&lt;data&gt;</code></link>. </para>
<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>? = zero or one</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="slr_profiles"><code>&lt;profiles&gt;</code></link>
|
+---<link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link> ?
|
+---&lt;other&gt; *


  </programlisting>
</section>
        <section id="slr_profiles">
    <title>profiles</title>
    <para>This element selects the restriction profiles to use in the document. If no storage or general profile is specified the default values (empty) of those elements will disable restriction checking in the file.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- Zero or one <link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link> element
            followed by</member>
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="slr_general_profile"><code>generalProfile</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="slr_storage_profile"><code>storageProfile</code></link>, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
    <title>Processing Requirements</title>
    <listitem>
      <para>Any overall configuration or settings related to the selected profile <glossterm>must</glossterm> be placed in child elements of this element.</para>
    </listitem>
        <listitem>
      <para>Data not related to the configuration of the selected profiles <glossterm>must not</glossterm> be placed in this element.</para>
    </listitem>
  </itemizedlist>

</section>
        <section id="slr_normalization">
    <title>normalization</title>
    <para>This element is used to hold the attributes specifying the normalization form to apply to
    storage and size restrictions defined in the standard profiles.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>This element is always empty.</member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="slr_general"><code>general</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="slr_storage"><code>storage</code></link>, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
    <title>Processing Requirements</title>
    <listitem>
      <para>If this element is not present no normalization <glossterm>should</glossterm> be performed for the standard profiles.</para>
    </listitem>
    <listitem>
      <para>Other profiles <glossterm>may</glossterm> use this element in its specified form but <glossterm>must not</glossterm> add new extensions to it.</para>
    </listitem>
  </itemizedlist>

</section>
        <section id="slr_data">
    <title>data</title>
    <para>This elements act as a container for data needed by the specified profile to check the part of the XLIFF document that is a sibling or descendant of a sibling of this element. It is not used by the default profiles.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- elements from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="slr_profile"><code>profile</code></link>, <glossterm>required</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>

    <itemizedlist>
    <title>Processing Requirements</title>
    <listitem>
      <para>Third party profiles <glossterm>must</glossterm> place all  data in this element instead of using other extension points if the data serves no other purpose in the processing of the document.</para>
    </listitem>
    <listitem>
      <para>Data not used by the specified profile <glossterm>must not</glossterm> be placed in this element.</para>
    </listitem>
  </itemizedlist>

</section>
    </section>
    <section>
        <title>Module Attributes</title>
        <para>The attributes defined in the Size and Length restriction module are: <link linkend="slr_storage_profile"><code>storageProfile</code></link>, <link linkend="slr_general_profile"><code>generalProfile</code></link>, <link linkend="slr_storage"><code>storage</code></link>, <link linkend="slr_general"><code>general</code></link>, <link linkend="slr_profile"><code>profile</code></link>, <link linkend="slr_storage_restriction"><code>storageRestriction</code></link>, <link linkend="slr_size_restriction"><code>sizeRestriction</code></link>, <link linkend="slr_equiv_storage"><code>equivStorage</code></link> , <link linkend="slr_size_info"><code>sizeInfo</code></link> and <link linkend="slr_size_info_ref"><code>sizeInfoRef</code></link>. </para>
        <section id="slr_storage_profile">
  <title>storageProfile</title>

  <para>This attribute specifies, which profile to use while checking storage size restrictions.
    Empty string means that no restrictions are applied.</para>

  <para><emphasis>Value description:</emphasis> Name of restriction profile to use for storage size restrictions.</para>

  <para><emphasis>Default value:</emphasis> empty string</para>

  <para><emphasis>Used in:</emphasis><link linkend="slr_profiles"><code>&lt;profiles&gt;</code></link>.</para>
</section>
        <section id="slr_general_profile">
  <title>generalProfile</title>

  <para>This attribute specifies, which profile to use while checking the general size restrictions.
    Empty string means that no restrictions apply.</para>

  <para><emphasis>Value description:</emphasis> Name of restriction profile to use for general size restrictions.</para>

  <para><emphasis>Default value:</emphasis> empty string</para>

  <para><emphasis>Used in:</emphasis><link linkend="slr_profiles"><code>&lt;profiles&gt;</code></link>.</para>
</section>
        <section id="slr_storage">
  <title>storage</title>

  <para>This attribute specifies the normalization form to apply for storage size restrictions. Only
    the normalization forms C and D as specified by the Unicode Consortium are supported, see <ulink url="http://unicode.org/reports/tr15/">Unicode Standard Annex #15</ulink>.</para>

  <para><emphasis>Value description:</emphasis> normalization to apply.</para>
  <table>
    <title>Values</title>
    <tgroup cols="2">
      <thead>
        <row>
          <entry>Value</entry>
          <entry>Description</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry>none</entry>
          <entry>No additional normalization <glossterm>should</glossterm> be done, content
              <glossterm>should</glossterm> be used as represented in the document. It is possible
            that other <firstterm>Agents</firstterm> have already done some type of normalization when <firstterm>Modifying</firstterm> content.
            This means that this setting could give different results depending on what <firstterm>Agents</firstterm> are
            used to perform a specific action on the <firstterm>XLIFF Document</firstterm>.</entry>
        </row>
        <row>
          <entry>nfc</entry>
          <entry>Normalization Form C <glossterm>must</glossterm> be used</entry>
        </row>
        <row>
          <entry>nfd</entry>
          <entry>Normalization Form D <glossterm>must</glossterm> be used</entry>
        </row>
      </tbody>
    </tgroup>
  </table>


  <para><emphasis>Default value:</emphasis> <code>none</code></para>

  <para><emphasis>Used in:</emphasis> <link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link>.</para>
</section>
        <section id="slr_general">
  <title>general</title>

  <para>This attribute specifies the normalization to apply for general size restrictions. Only the
    normalization forms C and D as specified by the Unicode Consortium are supported, see <ulink url="http://unicode.org/reports/tr15/">Unicode Standard Annex #15</ulink>.</para>

  <para><emphasis>Value description:</emphasis> normalization to apply.</para>
  <table>
    <title>Values</title>
    <tgroup cols="2">
      <thead>
        <row>
          <entry>Value</entry>
          <entry>Description</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry>none</entry>
          <entry>No additional normalization <glossterm>should</glossterm> be done, content
              <glossterm>should</glossterm> be used as represented in the document. It is possible
            that other <firstterm>Agents</firstterm> have already done some type of normalization
            when <firstterm>Modifying</firstterm> content. This means that this setting could give
            different results depending on what <firstterm>Agents</firstterm> are used to perform a
            specific action on the <firstterm>XLIFF Document</firstterm>.</entry>
        </row>
        <row>
          <entry>nfc</entry>
          <entry>Normalization Form C <glossterm>must</glossterm> be used</entry>
        </row>
        <row>
          <entry>nfd</entry>
          <entry>Normalization Form D <glossterm>must</glossterm> be used</entry>
        </row>
     </tbody>
    </tgroup>
  </table>

  <para><emphasis>Default value:</emphasis> <code>none</code></para>

  <para><emphasis>Used in:</emphasis><link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link>.</para>
</section>
        <section id="slr_profile">
  <title>profile</title>

  <para>This attribute is used on the <code>&lt;data&gt;</code> element to indicate what profile the contents of that element apply to.</para>

  <para><emphasis>Value description:</emphasis> Name of a restriction profile</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis><link linkend="slr_data"><code>&lt;data&gt;</code></link>.</para>
</section>
        <section id="slr_storage_restriction">
  <title>storageRestriction</title>

  <para>This attribute specifies the storage restriction to apply to the collection descendants of the element it is defined on.</para>

  <para><emphasis>Value description:</emphasis> Interpretation of the value is dependent on selected <link linkend="slr_storage_profile"><code>storageProfile</code></link>. It <glossterm>must</glossterm> represent the restriction to apply to the indicated sub part of the document.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>,
    <link linkend="group"><code>&lt;group&gt;</code></link>,
    <link linkend="unit"><code>&lt;unit&gt;</code></link>,
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link>,
    <link linkend="sm"><code>&lt;sm&gt;</code></link>,
    <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="sc"><code>&lt;sc&gt;</code></link>.
  </para>
</section>
        <section id="slr_size_restriction">
  <title>sizeRestriction</title>

  <para>This attribute specifies the size restriction to apply to the collection descendants of the element it is defined on.</para>

  <para><emphasis>Value description:</emphasis> Interpretation of the value is dependent on selected <link linkend="slr_general_profile"><code>generalProfile</code></link>. It <glossterm>must</glossterm> represent the restriction to apply to the indicated sub part of the document.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>,
    <link linkend="group"><code>&lt;group&gt;</code></link>,
    <link linkend="unit"><code>&lt;unit&gt;</code></link>,
    <link linkend="mrk"><code>&lt;mrk&gt;</code></link>,
    <link linkend="sm"><code>&lt;sm&gt;</code></link>,
    <link linkend="pc"><code>&lt;pc&gt;</code></link> and
    <link linkend="sc"><code>&lt;sc&gt;</code></link>.
  </para>
</section>
        <section id="slr_equiv_storage">
  <title>equivStorage</title>

  <para>This attribute provides a means to specify how much storage space an inline element will use in the native format. This size contribution is then added to the size contributed by the textual parts.
    This attribute is only allowed on the <link linkend="ec"><code>&lt;ec&gt;</code></link> element if that element has the <link linkend="isolated"><code>isolated</code></link> attribute set to <code>yes</code>. Otherwise the attribute on the paired <link linkend="sc"><code>&lt;sc&gt;</code></link>
    element also cover its partner <link linkend="ec"><code>&lt;ec&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> Interpretation of the value is dependent on selected <link linkend="slr_storage_profile"><code>storageProfile</code></link>. It <glossterm>must</glossterm> represent the equivalent storage size represented by the inline element.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>

  <para><emphasis>Used in:</emphasis>
    <link linkend="pc"><code>&lt;pc&gt;</code></link>,
    <link linkend="sc"><code>&lt;sc&gt;</code></link>,
    <link linkend="ec"><code>&lt;ec&gt;</code></link>,
    <link linkend="ph"><code>&lt;ph&gt;</code></link> and
  </para>
</section>
        <section id="slr_size_info">
  <title>sizeInfo</title>

  <para>This attribute is used to associate profile specific information to inline elements so that size information can be decoupled from the native format or represented when the native data is not available in the XLIFF document. 
  It can be used on both inline elements and structural elements to provide information on things like GUI dialog or control sizes, expected padding or margins to consider for size, what font is used for contained text and so on.
  This attribute is only allowed on the <link linkend="ec"><code>&lt;ec&gt;</code></link> element if that element has the <link linkend="isolated"><code>isolated</code></link> attribute set to <code>yes</code>. Otherwise the attribute on the paired <link linkend="sc"><code>&lt;sc&gt;</code></link>
    element also cover its partner <link linkend="ec"><code>&lt;ec&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> Interpretation of the value is dependent on selected
    <link linkend="slr_general_profile"><code>generalProfile</code></link>. It
      <glossterm>must</glossterm> represent information related to how the element it is attached to
    contributes to the size of the text or entity in which it occurs or represents.</para>

  <para><emphasis>Default value:</emphasis> undefined</para>
  
  
  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>,
    <link linkend="group"><code>&lt;group&gt;</code></link>,
    <link linkend="unit"><code>&lt;unit&gt;</code></link>,
    <link linkend="pc"><code>&lt;pc&gt;</code></link>,
    <link linkend="sc"><code>&lt;sc&gt;</code></link>, 
    <link linkend="ec"><code>&lt;ec&gt;</code></link>, and
    <link linkend="ph"><code>&lt;ph&gt;</code></link>.
  </para>

<itemizedlist>
  <title>Constraints</title>
  <listitem>
  <para>This attribute <glossterm>must not</glossterm> be specified
    if and only if <link linkend="slr_size_info_ref"><code>sizeInfoRef</code></link> is used. They <glossterm>must not</glossterm> be specified at the same time.</para>
</listitem></itemizedlist>
</section>
        <section id="slr_size_info_ref">
  <title>sizeInfoRef</title>

  <para>This attribute is used to point to data that provide the same function as the <link linkend="slr_size_info"><code>sizeInfo</code></link>
    attribute does, but with the data stored outside the inline content of the XLIFF segment.
    This attribute is only allowed on the <link linkend="ec"><code>&lt;ec&gt;</code></link> element if that element has the
    <link linkend="isolated"><code>isolated</code></link> attribute set to <code>yes</code>.
    Otherwise the attribute on the paired <link linkend="sc"><code>&lt;sc&gt;</code></link>
    element also cover its partner <link linkend="ec"><code>&lt;ec&gt;</code></link> element.</para>

  <para><emphasis>Value description:</emphasis> a reference to data that provide the same information that could be otherwise put in a
    <link linkend="slr_size_info"><code>sizeInfo</code></link> attribute. 
  The reference <glossterm>must</glossterm> point to an element in a
    <link linkend="slr_data"><code>&lt;data&gt;</code></link> element
    that is a sibling to the element this attribute is attached to or a sibling to one of its ancestors. </para>

  <para><emphasis>Default value:</emphasis> undefined</para>

 
  <para><emphasis>Used in:</emphasis>
    <link linkend="file"><code>&lt;file&gt;</code></link>,
    <link linkend="group"><code>&lt;group&gt;</code></link>,
    <link linkend="unit"><code>&lt;unit&gt;</code></link>,
    <link linkend="pc"><code>&lt;pc&gt;</code></link>,
    <link linkend="sc"><code>&lt;sc&gt;</code></link>,
    <link linkend="ec"><code>&lt;ec&gt;</code></link>, and
    <link linkend="ph"><code>&lt;ph&gt;</code></link>,
  </para>
 
  <itemizedlist>
    <title>Constraints</title>
    <listitem>
      <para>This attribute <glossterm>must not</glossterm> be specified
        if and only if <link linkend="slr_size_info"><code>sizeInfo</code></link> is used. They <glossterm>must not</glossterm> be specified at the same time.</para>
    </listitem></itemizedlist> 
  
  
</section>
    </section>
    <section>
        <title>Standard profiles</title>
        <section>
            <title>General restriction profile ”xliff:codepoints”</title>
            <para>This profile implements a simple string length restriction based on the number of
                Unicode code points. It is <glossterm>optional</glossterm> to specify if normalization is to be applied
                using the <link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link> element
                and the <link linkend="slr_general"><code>general</code></link> attribute. This profile
                makes use of the following attributes from this module:</para>
            <section>
                <title>sizeRestriction</title>
                <para>The value of this attribute holds the ”maximum” or ”minimum and maximum” size
                    of the string. Either size <glossterm>must</glossterm> be an integer. The maximum size <glossterm>may</glossterm> also be ’*’ to
                    denote that there is no maximum restriction. If only a maximum is specified it
                    is implied that the minimum is 0 (empty string). The format of the value is the
                    <glossterm>optional</glossterm> minimum size and a coma followed by a maximum size
                    (”[minsize,]maxsize”). The default value is ’*’ which evaluates to a string with
                    unbounded size.</para>
            </section>
            <section>
                <title>sizeInfo</title>
                <para>The value of this attribute is an integer representing how many code points
                    the element it is set on is considered to contribute to the total size. If
                    empty, the default for all elements is 0.</para>
            </section>
        </section>
        <section>
            <title>Storage restriction profiles ”xliff:utf8”, ”xliff:utf16” and
                ”xliff:utf32”</title>
            <para>These three profiles define the standard size restriction profiles for the common
                Unicode character encoding schemes. It is <glossterm>optional</glossterm> to specify if normalization is to be
                applied using the <link linkend="slr_normalization"><code>&lt;normalization&gt;</code></link>element and
                the <link linkend="slr_storage"><code>storage</code></link>. All sizes are represented
                in 8bit bytes. The size of text for these profiles is the size of the text converted
                to the selected encoding without any byte order marks attached. The encodings are
                specified by the Unicode Consortium in <ulink url="http://www.unicode.org/versions/Unicode6.2.0/ch02.pdf">chapter 2.5 of the
                    Unicode Standard</ulink> <link linkend="Unicode">[Unicode]</link>.</para>
            <table>
                <title>Profiles</title>
                <tgroup cols="2">
                    <thead>
                        <row>
                            <entry>Name</entry>
                            <entry>Description</entry>
                        </row>
                    </thead>
                    <tbody>
                        <row>
                            <entry>xliff:utf8</entry>
                            <entry>The number of 8bit bytes needed to represent the string encoded
                                as UTF-8 as specified by the Unicode consortium.</entry>
                        </row>
                        <row>
                            <entry>xliff:utf16</entry>
                            <entry>The number of 8bit bytes needed to represent the string encoded
                                as UTF-16 as specified by the Unicode consortium.</entry>
                        </row>
                        <row>
                            <entry>xliff:utf32</entry>
                            <entry>The number of 8bit bytes needed to represent the string encoded
                                as UTF-32 as specified by the Unicode consortium.</entry>
                        </row>
                    </tbody>
                </tgroup>
            </table>
            <para>These profiles make use of the following attributes from this module:</para>
            <section>
                <title>storageRestriction</title>
                <para>The value of this attribute holds the ”maximum” or ”minimum and maximum” size
                    of the string. Either size <glossterm>must</glossterm> be an integer. The maximum size <glossterm>may</glossterm> also be ’*’
                    to denote that there is no maximum restriction. If only a maximum is specified
                    it is implied that the minimum is 0 (empty string). The format of the value is
                    the <glossterm>optional</glossterm> minimum size and a coma followed by a maximum size
                    (”[minsize,]maxsize”). The default value is ’*’ which evaluates to a string with
                    unbounded size.</para>
            </section>
            <section>
                <title>equivStorage</title>
                <para>The value of this attribute is an integer representing how many bytes the
                    element it is set on is considered to contribute to the total size. If
                    empty the default is 0. The <link linkend="cp"><code>&lt;cp&gt;</code></link> is always converted to its representation in
                    the profiles encoding and the size of that representation is used as the size
                    contributed by the <link linkend="cp"><code>&lt;cp&gt;</code></link>. </para>
            </section>
        </section>
    </section>
    <section>
        <title>Third party profiles</title>
        <para>The general structure of this module together with the extensibility mechanisms
            provided has been designed with the goal to cater for all practically thinkable size
            restriction schemes. For example, to represent two dimensional data, a profile can adopt
            a coordinate style for the values of the general restriction attributes. For instance
                <code>{x,y}</code> to represent width and height, or <code>{{x1,y1},{x2,y2}}</code>
            to represent a bounding box. It is also possible to embed information necessary to drive
            for instance a display simulator and attach that data to text in order to be able to
            perform device specific checking. Providing font information and checking glyph based
            general size are other feasible options.</para>
    </section>
    <section>
        <title>Conformance</title>
        <para>To claim conformance to the XLIFF size and length restriction module an
                <firstterm>Agent</firstterm>
            <glossterm>must</glossterm> meet the following criteria:</para>
        <itemizedlist spacing="compact">
            <listitem>
                <para><glossterm>must</glossterm> be compliant with the schema of the
                        <firstterm>XLIFF Core</firstterm> specification and its extensions provided
                    in this module.</para>
            </listitem>
            <listitem>
                <para><glossterm>must</glossterm> follow all processing requirements set forth in
                    this module specification regarding the general use of elements and
                    attributes.</para>
            </listitem>
            <listitem>
                <para><glossterm>must</glossterm> support all standard profiles with normalization
                    set to <code>none</code>.</para>
            </listitem>
            <listitem>
                <para><glossterm>should</glossterm> support all standard profiles with all modes of
                    normalization.</para>
            </listitem>
            <listitem>
                <para><glossterm>may</glossterm> support additional third party profiles for storage
                    or general restrictions.</para>
            </listitem>
            <listitem>
                <para><glossterm>must</glossterm> provide at least one of the following:</para>
                <itemizedlist spacing="compact">
                    <listitem>
                        <para>add size and length restriction information to an <firstterm>XLIFF
                                Document</firstterm></para>
                    </listitem>
                    <listitem>
                        <para>if it supports the profile(s) specified in the <firstterm>XLIFF
                                Document</firstterm> it <glossterm>must</glossterm> provide a way to
                            check if the size and length restrictions in the document are met
                            according to the profile(s) requirements.</para>
                    </listitem>
                </itemizedlist>
            </listitem>
        </itemizedlist>
    </section>
    <section>
        <title>Example</title>
        <para>A short example on how this module can be used is provided here with inline XML comments explaining the usage of the module features.
	<programlisting format="linespecific">
	&lt;xliff version="2.0" srcLang="en-us"
    xmlns="urn:oasis:names:tc:xliff:document:2.0"
    xmlns:slr="urn:oasis:names:tc:xliff:sizerestriction:2.0"&gt;
    &lt;file id="f1"&gt;
        &lt;slr:profiles generalProfile="xliff:codepoints"
            storageProfile="xliff:utf8"&gt;
            &lt;!-- Select standard UTF-8 storage encoding and standard
                codepoint size restriction both with NFC normalization--&gt;
            &lt;slr:normalization general="nfc" storage="nfc" /&gt;
        &lt;/slr:profiles&gt;
        &lt;!-- The group should not require more than 255 bytes of storage
             And have at most 90 codepoints. Note that the sum of the unit
             sizes are larger than this the total content of the group
             must still be at most 90 codepoints. --&gt;
        &lt;group id="g1" slr:storageRestriction="255"
            slr:sizeRestriction="90"&gt;
            &lt;!-- This unit must not contain more than 60 code points --&gt;
            &lt;unit id="u1" slr:sizeRestriction="60"&gt;
                &lt;segment&gt;
                    &lt;!-- The spanning &lt;pc&gt; element require 7 bytes of
                        storage in the native format. Its content must not
                        have more than 25 codepoints --&gt;
                &lt;source&gt;This is a small &lt;pc equivStorage="7"
                    slr:sizeRestriction="25"&gt;size restriction&lt;/pc&gt; example.
                &lt;/source&gt;
                &lt;/segment&gt;
            &lt;/unit&gt;
            &lt;!-- This unit must not have more than 35 codepoints --&gt;
            &lt;unit id="u2" slr:sizeRestriction="35"&gt;
                &lt;segment&gt;
                    &lt;source&gt;With a group structure.&lt;/source&gt;
                &lt;/segment&gt;
            &lt;/unit&gt;
        &lt;/group&gt;
    &lt;/file&gt;
&lt;/xliff&gt;
	</programlisting>
	</para>
     </section>
    <section id="slr_schema">
    <title>XML Schema</title>

    <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/size_restriction.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/size_restriction.xsd</ulink>.
    </para>

<programlisting format="linespecific"><!--  gen. 20140318  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:slr="urn:oasis:names:tc:xliff:sizerestriction:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:sizerestriction:2.0"&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="normalization_type"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="none"/&gt;
      &lt;xs:enumeration value="nfc"/&gt;
      &lt;xs:enumeration value="nfd"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Attributes --&gt;

  &lt;xs:attribute name="equivStorage" type="xs:string"/&gt;

  &lt;xs:attribute name="sizeInfo" type="xs:string"/&gt;

  &lt;xs:attribute name="sizeInfoRef" type="xs:NMTOKEN"/&gt;

  &lt;xs:attribute name="sizeRestriction" type="xs:string"/&gt;

  &lt;xs:attribute name="storageRestriction" type="xs:string"/&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="profiles"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="slr:normalization"/&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="generalProfile" use="optional"/&gt;
      &lt;xs:attribute name="storageProfile" use="optional"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="normalization"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="general" use="optional"
          type="slr:normalization_type" default="none"/&gt;
      &lt;xs:attribute name="storage" use="optional"
          type="slr:normalization_type" default="none"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="data"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="profile" use="required"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>
</section>
      <section id="validation_module">
  <title>Validation Module</title>
  <section>
    <title>Introduction</title>
    <para>This module defines a specific set of validation rules that can be applied to target text both globally and locally. Further constraints can be defined that allow rules to be applied to target text based on conditions in the source text or disabled to override a global scope.</para>
  </section>
    <section>
        <title>Module Namespace</title>
        <para>The namespace for the Validation module is:
        <code>urn:oasis:names:tc:xliff:validation:2.0</code></para>
    </section>

    <section>
      <title>Module Fragment Identification Prefix</title>
      <para>The fragment identification prefix for the Validation module is: <code>val</code></para>
    </section>

    <section>
    <title>Module Elements</title>
    <para>The elements defined in the Validation module are:
        <link linkend="validation"><code>&lt;validation&gt;</code></link> and
        <link linkend="rule"><code>&lt;rule&gt;</code></link>.</para>
<section><!--  gen. 20140318  -->
  <title>Tree Structure</title>
  <para>Legend:</para>
  <simplelist type="vert">
    <member>+ = one or more</member>
  </simplelist>
  <programlisting format="linespecific">
<link linkend="validation"><code>&lt;validation&gt;</code></link>
|
+---<link linkend="rule"><code>&lt;rule&gt;</code></link> +


  </programlisting>
</section>
    <section id="validation">
    <title>validation</title>
    <para>Parent container for a list of rules and constraints to apply to the target text of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- One or more <link linkend="rule"><code>&lt;rule&gt;</code></link> elements.</member>
    </simplelist>
  
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>
    
  <itemizedlist>
    <title>Processing Requirements</title>

     <listitem>
      <para>When the <link linkend="validation"><code>&lt;validation&gt;</code></link> element occurs at the 
        <link linkend="file"><code>&lt;file&gt;</code></link> level, rules <glossterm>must</glossterm> be applied to all 
      <link linkend="target"><code>&lt;target&gt;</code></link> elements within the scope of that  
      <link linkend="file"><code>&lt;file&gt;</code></link> element, except where overrides are specified at the 
      <link linkend="group"><code>&lt;group&gt;</code></link> or 
      <link linkend="unit"><code>&lt;unit&gt;</code></link> level.</para>
    </listitem>
    
    <listitem>
      <para>When <link linkend="validation"><code>&lt;validation&gt;</code></link> occurs at the 
        <link linkend="group"><code>&lt;group&gt;</code></link> level, rules <glossterm>must</glossterm> be applied to all 
      <link linkend="target"><code>&lt;target&gt;</code></link> elements within the scope of that 
      <link linkend="group"><code>&lt;group&gt;</code></link>, except where overrides are specified in a nested 
      <link linkend="group"><code>&lt;group&gt;</code></link> element, or at the 
      <link linkend="unit"><code>&lt;unit&gt;</code></link> level.</para>
    </listitem>
    
    <listitem>
      <para>When <link linkend="validation"><code>&lt;validation&gt;</code></link> occurs at the 
        <link linkend="unit"><code>&lt;unit&gt;</code></link> level, rules <glossterm>must</glossterm> be applied to all 
      <link linkend="target"><code>&lt;target&gt;</code></link> elements within the scope of that 
      <link linkend="unit"><code>&lt;unit&gt;</code></link>.</para>
    </listitem>
   
  </itemizedlist>
</section>
    <section id="rule">
    <title>rule</title>
    <para>A specific rule and constraint to apply to the target text of the enclosing element.</para>
    <para><emphasis>Contains:</emphasis></para>
    <simplelist type="vert">
        <member>- This element is always empty.</member>
    </simplelist>
  
    <para><emphasis>Attributes:</emphasis></para>
    <simplelist type="vert">
        <member>- <link linkend="val_isPresent"><code>isPresent</code></link>, <glossterm>optional</glossterm></member> 
        <member>- <link linkend="val_occurs"><code>occurs</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_isNotPresent"><code>isNotPresent</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_startsWith"><code>startsWith</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_endsWith"><code>endsWith</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_existsInSource"><code>existsInSource</code></link>, <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_caseSensitive"><code>caseSensitive</code></link>,  <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_normalization"><code>normalization</code></link>,  <glossterm>optional</glossterm></member>
        <member>- <link linkend="val_disabled"><code>disabled</code></link>, <glossterm>optional</glossterm></member>
        <member>- attributes from other namespaces, <glossterm>optional</glossterm></member>
    </simplelist>
    
    <itemizedlist>
        <title>Constraints</title>
        <listitem><para>Exactly one of the following attributes: <itemizedlist>
                    <listitem>
                        <para><link linkend="val_isPresent"><code>isPresent</code></link></para>
                    </listitem>
                    <listitem>
                        <para><link linkend="val_isNotPresent"><code>isNotPresent</code></link></para>
                    </listitem>
                    <listitem>
                        <para><link linkend="val_startsWith"><code>startsWith</code></link></para>
                    </listitem>
                    <listitem>
                        <para><link linkend="val_endsWith"><code>endsWith</code></link></para>
                    </listitem>
                    <listitem>
                        <para>a custom rule defined by attributes from any namespace</para>
                    </listitem>
                </itemizedlist>is <glossterm>required</glossterm> in any one <link linkend="rule"><code>&lt;rule&gt;</code></link> element.</para></listitem>
    </itemizedlist>
        <itemizedlist>
    <title>Processing Requirements</title>
      
            <listitem><para><firstterm>Writers</firstterm>
                <glossterm>may</glossterm> create and add new <link linkend="rule"><code>&lt;rule&gt;</code></link> elements, provided that the new rules do not
                contradict rules already present.</para></listitem>
            <listitem><para><firstterm>Modifiers</firstterm>
                <glossterm>must not</glossterm> change attributes defined in this module that are
                already present in any <link linkend="rule"><code>&lt;rule&gt;</code></link> element.</para></listitem>
            <listitem><para><firstterm>Modifiers</firstterm> <glossterm>must not</glossterm> remove either <link linkend="rule"><code>&lt;rule&gt;</code></link> elements or their attributes defined in this
                module.</para></listitem>
       </itemizedlist>
</section>
    </section>

    <section>
    <title>Module Attributes</title>
    <para>The attributes defined in the Validation module are:
         <link linkend="val_isPresent"><code>isPresent</code></link>,
         <link linkend="val_occurs"><code>occurs</code></link>,
         <link linkend="val_isNotPresent"><code>isNotPresent</code></link>,
         <link linkend="val_startsWith"><code>startsWith</code></link>,
         <link linkend="val_endsWith"><code>endsWith</code></link>,
         <link linkend="val_existsInSource"><code>existsInSource</code></link>,
         <link linkend="val_caseSensitive"><code>caseSensitive</code></link>,
         <link linkend="val_normalization"><code>normalization</code></link>, and
         <link linkend="val_disabled"><code>disabled</code></link>.
      </para>

    <section id="val_isPresent">
  <title>isPresent</title>

  <para>This rule attribute specifies that a string <glossterm>must</glossterm> be present in the target text <emphasis>at least once</emphasis>.</para>
  <para>For example, the following is valid:</para>

  <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isPresent="online" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>Whereas the following is invalid:</para>
    <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isPresent="loja" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na online store.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>Other rule attributes can be combined with <link linkend="val_isPresent"><code>isPresent</code></link> to produce the following results:</para>
  <simplelist type="vert">
<member>isPresent=”loja” - loja is found in the target text at least once.</member>
<member>isPresent=”loja” occurs=”1” - loja is found in the target text exactly once.</member>
<member>isPresent=”loja” existsInSource=”yes” - loja is found in both source and target text the same number of times.</member>
<member>isPresent=”loja” existsInSource=”yes” occurs=”1” - loja is found in both source and target text and occurs in target text exactly once.</member>
</simplelist>

    <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> none</para>

  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

</section>
    <section id="val_occurs">
  <title>occurs</title>

  <para>This rule attribute is used with the <link linkend="val_isPresent"><code>isPresent</code></link> rule attribute to specify the exact
    number of times a string <glossterm>must</glossterm> be present in the target text. When this
    rule attribute is not used, then the string <glossterm>must</glossterm> be present in the target
    text <emphasis>at least once</emphasis>.</para>

   <para>For example, the following is valid:</para>

<programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isPresent="loja" occurs="2" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose a store option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção de loja na loja online.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>Whereas the following is invalid:</para>
<programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isPresent="loja" occurs="2" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose a store option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção de loja na online store.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>

  <para><emphasis>Value description:</emphasis> A number of 1 or greater.</para>
  <para><emphasis>Default value:</emphasis> none</para>
  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

</section>
    <section id="val_isNotPresent">
  <title>isNotPresent</title>

  <para>This rule attribute specifies that a string <glossterm>must not</glossterm> be present in the target text.</para>
  <para>For example, the following is valid:</para>
<programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isNotPresent="store" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
 <para>Whereas the following is invalid:</para>
<programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule isNotPresent="store" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na online store.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para><emphasis>Value description:</emphasis> Text.</para>
  <para><emphasis>Default value:</emphasis> none</para>
  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

</section>
    <section id="val_startsWith">
  <title>startsWith</title>

  <para>This rule attribute specifies that a string <glossterm>must</glossterm> start with a specific value.</para>

  <para>For example, the following is valid:</para>

  <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule startsWith="*" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;*Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;*Escolha uma opção na loja online.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>Whereas the following is invalid:</para>
  <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule startsWith="*" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;*Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>
    <emphasis>Value description:</emphasis> Text.
  </para>

  <para>
    <emphasis>Default value:</emphasis> none
  </para>

  <para>
    <emphasis>Used in:</emphasis>
    <link linkend="rule"><code>&lt;rule&gt;</code></link>
  </para>

</section>
    <section id="val_endsWith">
  <title>endsWith</title>

  <para>This rule attribute specifies that a string <glossterm>must</glossterm> end with a specific value.</para>

  <para>For example, the following is valid:</para>

  <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule endsWith=":" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store:&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online:&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para>Whereas the following is invalid:</para>
  <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule endsWith=":" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store:&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na online store.&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para><emphasis>Value description:</emphasis> Text.</para>

  <para><emphasis>Default value:</emphasis> none</para>

  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

</section>
    <section id="val_existsInSource">
  <title>existsInSource</title>

  <para>When this rule attribute is used with another rule attribute and is set to <code>yes</code>, it specifies that for the rule to succeed, the condition
  <glossterm>must</glossterm> be satisfied in both source and target text. This rule attribute is valid only when used with one of the following rule attributes:
      <link linkend="val_isPresent"><code>isPresent</code></link>,
      <link linkend="val_startsWith"><code>startsWith</code></link>, or
      <link linkend="val_endsWith"><code>endsWith</code></link>.</para>

<para>When <link linkend="val_existsInSource"><code>existsInSource</code></link> is set to
    <code>no</code>, it will have no impact on execution of rules, except for overriding rules where
    <link linkend="val_existsInSource"><code>existsInSource</code></link> is set to <code>yes</code> on a higher level.</para>
    <para>For example, the following are valid:</para>
 <programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule endsWith=":" existsInSource="yes" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store:&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online:&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
...
&lt;unit id="2"&gt;
  &lt;val:validation&gt;
    &lt;val:rule endsWith=":" existsInSource="no" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online:&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
<para>Whereas the following is invalid:</para>
<programlisting format="linespecific">
&lt;unit id="1"&gt;
  &lt;val:validation&gt;
    &lt;val:rule endsWith=":" existsInSource="yes" /&gt;
  &lt;/val:validation&gt;
  &lt;segment id="1"&gt;
    &lt;source&gt;Choose an option in the online store.&lt;/source&gt;
    &lt;target&gt;Escolha uma opção na loja online:&lt;/target&gt;
  &lt;/segment&gt;
&lt;/unit&gt;
</programlisting>
  <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code></para>
  <para><emphasis>Default value:</emphasis> <code>no</code></para>
  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

  <itemizedlist>
    <title>Constraints</title>

    <listitem><para>
      When <link linkend="val_existsInSource"><code>existsInSource</code></link> is specified, exactly one of
      <itemizedlist>
        <listitem><para><link linkend="val_isPresent"><code>isPresent</code></link></para></listitem>
        <listitem><para><link linkend="val_startsWith"><code>startsWith</code></link></para></listitem>
        <listitem><para><link linkend="val_endsWith"><code>endsWith</code></link></para></listitem>
      </itemizedlist>
      is <glossterm>required</glossterm> in the same <link linkend="rule"><code>&lt;val:rule&gt;</code></link> element.
    </para></listitem>
    <!-- 
    <listitem><para>When one of the following:
      <itemizedlist>
        <listitem><para><olink targetdoc="../../attributes/validation/val_mustLoc.xml" targetptr="val_mustLoc"><code>mustLoc</code></olink></para></listitem>
        <listitem><para><olink targetdoc="../../attributes/validation/val_noLoc.xml" targetptr="val_noLoc"><code>noLoc</code></olink></para></listitem>
      </itemizedlist>
      is specified, the attribute <link linkend="val_existsInSource"><code>existsInSource</code></link> <glossterm>must not</glossterm>
      occur in the same <olink targetdoc="../../elements/validation/rule.xml" targetptr="rule"><code>&lt;val:rule></code></olink> element.
      </para></listitem>
       -->
  </itemizedlist>

</section>

    <!-- <xi:include href="../../attributes/validation/val_mustLoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -->
    <!-- <xi:include href="../../attributes/validation/val_noLoc.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/> -->
    <section id="val_caseSensitive">
  <title>caseSensitive</title>

  <para>This rule attribute specifies whether the test defined within that rule is case sensitive or not.</para>

  <para><emphasis>Value description:</emphasis> <code>yes</code> if the test is case sensitive, <code>no</code> if the test is case insensitive.</para>

  <para><emphasis>Default value:</emphasis> <code>yes</code>.</para>

  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>


</section>
    <section id="val_normalization">
  <title>normalization</title>

  <para>This rule attribute specifies the normalization type to apply when validating a rule. Only the
    normalization forms C and D as specified in  <link linkend="uax15">[UAX #15]</link>.</para>

  <para><emphasis>Value description:</emphasis> The allowed values are listed in the table below
    along with their corresponding types of normalization to be applied.</para>
  <table>
    <title>Values</title>
    <tgroup cols="2">
      <thead>
        <row>
          <entry>Value</entry>
          <entry>Description</entry>
        </row>
      </thead>
      <tbody>
        <row>
          <entry>none</entry>
          <entry>No normalization <glossterm>should</glossterm> be done.</entry>
        </row>
        <row>
          <entry>nfc</entry>
          <entry>Normalization Form C <glossterm>must</glossterm> be used.</entry>
        </row>
        <row>
          <entry>nfd</entry>
          <entry>Normalization Form D <glossterm>must</glossterm> be used.</entry>
        </row>
     </tbody>
    </tgroup>
  </table>

  <para><emphasis>Default value:</emphasis> <code>nfc</code></para>

  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>


</section>
    <section id="val_disabled">
  <title>disabled</title>

  <para>This rule attribute determines whether a rule <glossterm>must</glossterm> or <glossterm>must
      not</glossterm> be applied within the scope of its enclosing element. For example, a rule
    defined at the <link linkend="file"><code>&lt;file&gt;</code></link> level can be disabled at the <link linkend="unit"><code>&lt;unit&gt;</code></link>
    level.</para>
  <para>This attribute is provided to allow for overriding execution of rules set at higher levels,
    see <link linkend="validation"><code>&lt;val:validation&gt;</code></link>.</para>

  <para>In the following example, the isNotPresent rule is applied in its entirety to the first unit, but not to the second.</para>

<programlisting format="linespecific">
&lt;file id="f1"&gt;
 &lt;val:validation&gt;
    &lt;val:rule isPresent="store" /&gt;
 &lt;/val:validation&gt;
 &lt;unit id="1"&gt;
   &lt;segment id="1"&gt;
     &lt;source&gt;Choose an option in the online store:&lt;/source&gt;
     &lt;target&gt;Escolha uma opção na loja online:&lt;/target&gt;
   &lt;/segment&gt;
 &lt;/unit&gt;
 &lt;unit id="2"&gt;
    &lt;val:validation&gt;
      &lt;val:rule isPresent="store" disabled="yes" /&gt;
    &lt;/val:validation&gt;
    &lt;segment id="1"&gt;
      &lt;source&gt;Choose an option in the application store:&lt;/source&gt;
      &lt;target&gt;Escolha uma opção na application store:&lt;/target&gt;
    &lt;/segment&gt;
  &lt;/unit&gt;
&lt;/file&gt;
</programlisting>

  <para><emphasis>Value description:</emphasis> <code>yes</code> or <code>no</code></para>

  <para><emphasis>Default value:</emphasis> <code>no</code></para>

  <para><emphasis>Used in:</emphasis> <link linkend="rule"><code>&lt;rule&gt;</code></link></para>

</section>
  </section>

    <!--  example placeholder obsolete becuase the module spec contains specific examples at attribute locations<section>
      <title>Example:</title>

      <programlisting format="linespecific">
&lt;val:validation&gt;
   &lt;val:rule&gt;
      &lt;!- - text data - -&gt;
   &lt;/val:rule&gt;
&lt;/val:validation&gt;
      </programlisting>

    </section> -->

  <section id="validation_schema">
    <title>XML Schema</title>
  <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/validation.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/modules/validation.xsd</ulink>.
  </para>

<programlisting format="linespecific"><!--  gen. 20140401  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:val="urn:oasis:names:tc:xliff:validation:2.0"
    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:validation:2.0"&gt;

  &lt;!-- Import --&gt;

  &lt;xs:import namespace="urn:oasis:names:tc:xliff:document:2.0"
      schemaLocation="../xliff_core_2.0.xsd"/&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="normalization_type"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="none"/&gt;
      &lt;xs:enumeration value="nfc"/&gt;
      &lt;xs:enumeration value="nfd"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Elements --&gt;

  &lt;xs:element name="validation"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="val:rule"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="rule"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="isPresent" use="optional"/&gt;
      &lt;xs:attribute name="occurs" use="optional"
          type="xs:positiveInteger"/&gt;
      &lt;xs:attribute name="isNotPresent" use="optional"/&gt;
      &lt;xs:attribute name="startsWith" use="optional"/&gt;
      &lt;xs:attribute name="endsWith" use="optional"/&gt;
      &lt;xs:attribute name="existsInSource" use="optional"
          type="xlf:yesNo" default="no"/&gt;
      &lt;xs:attribute name="caseSensitive" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="normalization" use="optional"
          type="val:normalization_type" default="nfc"/&gt;
      &lt;xs:attribute name="disabled" use="optional" type="xlf:yesNo"
          default="no"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>

</section>
  </section>

  <appendix role="informative" id="coreListings">
    <title>XML Schemas and Catalog Listings</title>
    <para>This section contains listings of the core schema and catalogue for the whole specification
      along with an informative tree. In case any of these are in conflict with the actual schemas or catalogue
      that form a multipart product with this specification, the attached machine readable artifacts have precedence
      over the listings provided here for reading convenience.</para>
    <para>The grammar of XLIFF 2.0 is defined using nine (9) XML Schemas and one (1) XML catalog.
      The module schemas are referenced from their respective modules.</para>

    <section id="schema_tree">
    <title>XML Schemas Tree</title>
                         
<programlisting format="linespecific">
<link linkend="core_schema"><code>Core XML Schema</code></link>
   |
   +---<link linkend="candidates_schema"><code>Candidates Module XML Schema</code></link>
   |
   +---<link linkend="glossary_schema"><code>Glossary Module XML Schema</code></link>
   |
   +---<link linkend="fs_schema"><code>Format Style Module XML Schema</code></link>    
   |
   +---<link linkend="metadata_schema"><code>Metadatata Module XML Schema</code></link>
   |
   +---<link linkend="resourcedata_schema"><code>Resource Data Module XML Schema</code></link>
   |
   +---<link linkend="change-tracking_schema"><code>Change Tracking Module XML Schema</code></link>
   |
   +---<link linkend="slr_schema"><code>Size and Length Restriction Module XML Schema</code></link>
   |
   +---<link linkend="validation_schema"><code>Validation Module XML Schema</code></link>    
</programlisting>
                         
</section>


    <section id="xml_catalog">
    <title>XML Catalog</title>

    <para> The catalog listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/catalog.xml">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/catalog.xml</ulink>.
    </para>
<programlisting format="linespecific">
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:document:2.0"
        uri="xliff_core_2.0.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:changetracking:2.0"
        uri="modules/change_tracking.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:fs:2.0"
        uri="modules/fs.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:glossary:2.0"
        uri="modules/glossary.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:matches:2.0"
        uri="modules/matches.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:metadata:2.0"
        uri="modules/metadata.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:resourcedata:2.0"
        uri="modules/resource_data.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:sizerestriction:2.0"
        uri="modules/size_restriction.xsd"/&gt;
    &lt;uri name="urn:oasis:names:tc:xliff:validation:2.0"
        uri="modules/validation.xsd"/&gt;
&lt;/catalog&gt;

</programlisting>


</section>

    <section id="core_schema">
    <title>Core XML Schema</title>
  <para> The schema listed below for reading convenience is accessible at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/xliff_core_2.0.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/xliff_core_2.0.xsd</ulink>.
  </para>

<programlisting format="linespecific"><!--  gen. 20140401  -->
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    xmlns:xlf="urn:oasis:names:tc:xliff:document:2.0"
    targetNamespace="urn:oasis:names:tc:xliff:document:2.0"&gt;

  &lt;!-- Import --&gt;

  &lt;xs:import namespace="http://www.w3.org/XML/1998/namespace"
      schemaLocation="informativeCopiesOf3rdPartySchemas/w3c/xml.xsd"/&gt;

  &lt;!-- Element Group --&gt;

  &lt;xs:group name="inline"&gt;
    &lt;xs:choice&gt;
      &lt;xs:element ref="xlf:cp"/&gt;
      &lt;xs:element ref="xlf:ph"/&gt;
      &lt;xs:element ref="xlf:pc"/&gt;
      &lt;xs:element ref="xlf:sc"/&gt;
      &lt;xs:element ref="xlf:ec"/&gt;
      &lt;xs:element ref="xlf:mrk"/&gt;
      &lt;xs:element ref="xlf:sm"/&gt;
      &lt;xs:element ref="xlf:em"/&gt;
    &lt;/xs:choice&gt;
  &lt;/xs:group&gt;

  &lt;!-- Attribute Types --&gt;

  &lt;xs:simpleType name="yesNo"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="yes"/&gt;
      &lt;xs:enumeration value="no"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="yesNoFirstNo"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="yes"/&gt;
      &lt;xs:enumeration value="firstNo"/&gt;
      &lt;xs:enumeration value="no"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="dirValue"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="ltr"/&gt;
      &lt;xs:enumeration value="rtl"/&gt;
      &lt;xs:enumeration value="auto"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="appliesTo"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="source"/&gt;
      &lt;xs:enumeration value="target"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="userDefinedValue"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:pattern value="[^\s:]+:[^\s:]+"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="attrType_type"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="fmt"/&gt;
      &lt;xs:enumeration value="ui"/&gt;
      &lt;xs:enumeration value="quote"/&gt;
      &lt;xs:enumeration value="link"/&gt;
      &lt;xs:enumeration value="image"/&gt;
      &lt;xs:enumeration value="other"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="typeForMrkValues"&gt;
    &lt;xs:restriction base="xs:NMTOKEN"&gt;
      &lt;xs:enumeration value="generic"/&gt;
      &lt;xs:enumeration value="comment"/&gt;
      &lt;xs:enumeration value="term"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="attrType_typeForMrk"&gt;
    &lt;xs:union memberTypes="xlf:typeForMrkValues xlf:userDefinedValue"/&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="priorityValue"&gt;
    &lt;xs:restriction base="xs:positiveInteger"&gt;
      &lt;xs:minInclusive value="1"/&gt;
      &lt;xs:maxInclusive value="10"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;xs:simpleType name="stateType"&gt;
    &lt;xs:restriction base="xs:string"&gt;
      &lt;xs:enumeration value="initial"/&gt;
      &lt;xs:enumeration value="translated"/&gt;
      &lt;xs:enumeration value="reviewed"/&gt;
      &lt;xs:enumeration value="final"/&gt;
    &lt;/xs:restriction&gt;
  &lt;/xs:simpleType&gt;

  &lt;!-- Structural Elements --&gt;

  &lt;xs:element name="xliff"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:file"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="version" use="required"/&gt;
      &lt;xs:attribute name="srcLang" use="required"/&gt;
      &lt;xs:attribute name="trgLang" use="optional"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional" default="default"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="file"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:skeleton"/&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/&gt;
        &lt;xs:choice minOccurs="1" maxOccurs="unbounded"&gt;
          &lt;xs:element ref="xlf:unit"/&gt;
          &lt;xs:element ref="xlf:group"/&gt;
        &lt;/xs:choice&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="canResegment" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="original" use="optional"/&gt;
      &lt;xs:attribute name="translate" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="srcDir" use="optional" type="xlf:dirValue"
          default="auto"/&gt;
      &lt;xs:attribute name="trgDir" use="optional" type="xlf:dirValue"
          default="auto"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="skeleton"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="href" use="optional"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="group"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/&gt;
        &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
          &lt;xs:element ref="xlf:unit"/&gt;
          &lt;xs:element ref="xlf:group"/&gt;
        &lt;/xs:choice&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="name" use="optional"/&gt;
      &lt;xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="translate" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute name="type" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="unit"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:any minOccurs="0" maxOccurs="unbounded" namespace="##other"
            processContents="lax"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:notes"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:originalData"/&gt;
        &lt;xs:choice minOccurs="1" maxOccurs="unbounded"&gt;
          &lt;xs:element ref="xlf:segment"/&gt;
          &lt;xs:element ref="xlf:ignorable"/&gt;
        &lt;/xs:choice&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="name" use="optional"/&gt;
      &lt;xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="translate" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="srcDir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute name="trgDir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional"/&gt;
      &lt;xs:attribute name="type" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="segment"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="canResegment" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="state" use="optional" type="xlf:stateType"
          default="initial"/&gt;
      &lt;xs:attribute name="subState" use="optional"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="ignorable"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="1" ref="xlf:source"/&gt;
        &lt;xs:element minOccurs="0" maxOccurs="1" ref="xlf:target"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="notes"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:note"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="note"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="appliesTo" use="optional" type="xlf:appliesTo"/&gt;
      &lt;xs:attribute name="category" use="optional"/&gt;
      &lt;xs:attribute name="priority" use="optional" type="xlf:priorityValue"
          default="1"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="originalData"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="1" maxOccurs="unbounded" ref="xlf:data"/&gt;
      &lt;/xs:sequence&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="data"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:sequence&gt;
        &lt;xs:element minOccurs="0" maxOccurs="unbounded" ref="xlf:cp"/&gt;
      &lt;/xs:sequence&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dir" use="optional" type="xlf:dirValue"
          default="auto"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional" fixed="preserve"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="source"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/&gt;
      &lt;xs:attribute ref="xml:lang" use="optional"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="target"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/&gt;
      &lt;xs:attribute ref="xml:lang" use="optional"/&gt;
      &lt;xs:attribute ref="xml:space" use="optional"/&gt;
      &lt;xs:attribute name="order" use="optional"
          type="xs:positiveInteger"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;!-- Inline Elements --&gt;

  &lt;xs:element name="cp"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="hex" use="required" type="xs:hexBinary"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="ph"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="canCopy" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canDelete" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canReorder" use="optional" type="xlf:yesNoFirstNo" default="yes"/&gt;
      &lt;xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="disp" use="optional"/&gt;
      &lt;xs:attribute name="equiv" use="optional"/&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/&gt;
      &lt;xs:attribute name="subType" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute name="type" use="optional" type="xlf:attrType_type"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="pc"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/&gt;
      &lt;xs:attribute name="canCopy" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canDelete" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="canReorder" use="optional"
          type="xlf:yesNoFirstNo" default="yes"/&gt;
      &lt;xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dispEnd" use="optional"/&gt;
      &lt;xs:attribute name="dispStart" use="optional"/&gt;
      &lt;xs:attribute name="equivEnd" use="optional"/&gt;
      &lt;xs:attribute name="equivStart" use="optional"/&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dataRefEnd" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dataRefStart" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="subFlowsEnd" use="optional" type="xs:NMTOKENS"/&gt;
      &lt;xs:attribute name="subFlowsStart" use="optional"
          type="xs:NMTOKENS"/&gt;
      &lt;xs:attribute name="subType" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute name="type" use="optional" type="xlf:attrType_type"/&gt;
      &lt;xs:attribute name="dir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="sc"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="canCopy" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canDelete" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canReorder" use="optional"
          type="xlf:yesNoFirstNo" default="yes"/&gt;
      &lt;xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute name="disp" use="optional"/&gt;
      &lt;xs:attribute name="equiv" use="optional"/&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="isolated" use="optional" type="xlf:yesNo"
          default="no"/&gt;
      &lt;xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/&gt;
      &lt;xs:attribute name="subType" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute name="type" use="optional" type="xlf:attrType_type"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="ec"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="canCopy" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canDelete" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canOverlap" use="optional" type="xlf:yesNo"
          default="yes"/&gt;
      &lt;xs:attribute name="canReorder" use="optional"
          type="xlf:yesNoFirstNo" default="yes"/&gt;
      &lt;xs:attribute name="copyOf" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dataRef" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="dir" use="optional" type="xlf:dirValue"/&gt;
      &lt;xs:attribute name="disp" use="optional"/&gt;
      &lt;xs:attribute name="equiv" use="optional"/&gt;
      &lt;xs:attribute name="id" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="isolated" use="optional" type="xlf:yesNo"
          default="no"/&gt;
      &lt;xs:attribute name="startRef" use="optional" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="subFlows" use="optional" type="xs:NMTOKENS"/&gt;
      &lt;xs:attribute name="subType" use="optional"
          type="xlf:userDefinedValue"/&gt;
      &lt;xs:attribute name="type" use="optional" type="xlf:attrType_type"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="mrk"&gt;
    &lt;xs:complexType mixed="true"&gt;
      &lt;xs:group ref="xlf:inline" minOccurs="0" maxOccurs="unbounded"/&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="translate" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="type" use="optional"
          type="xlf:attrType_typeForMrk"/&gt;
      &lt;xs:attribute name="ref" use="optional" type="xs:anyURI"/&gt;
      &lt;xs:attribute name="value" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="sm"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="id" use="required" type="xs:NMTOKEN"/&gt;
      &lt;xs:attribute name="translate" use="optional" type="xlf:yesNo"/&gt;
      &lt;xs:attribute name="type" use="optional"
          type="xlf:attrType_typeForMrk"/&gt;
      &lt;xs:attribute name="ref" use="optional" type="xs:anyURI"/&gt;
      &lt;xs:attribute name="value" use="optional"/&gt;
      &lt;xs:anyAttribute namespace="##other" processContents="lax"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

  &lt;xs:element name="em"&gt;
    &lt;xs:complexType mixed="false"&gt;
      &lt;xs:attribute name="startRef" use="required" type="xs:NMTOKEN"/&gt;
    &lt;/xs:complexType&gt;
  &lt;/xs:element&gt;

&lt;/xs:schema&gt;
</programlisting>

</section>

    <section>
      <title>Support Schemas</title>
      <para>Third party support schemas that are normatively referenced from this specification or
        from the machine readable artifacts that are a part of this multipart product are distributed
        along with the <firstterm>XLIFF-defined</firstterm> schemas in a subfolder named
        <code>informativeCopiesOf3rdPartySchemas</code> and further subdivided in folders according to the
      owner maintainer of the schema.</para>
      <warning>
      <para>Schema copies in this sub-folder are provided solely for implementers convenience and are NOT a part of the OASIS multipart product.
        These schemas belong to their respective owners and their use is governed by their owners' respective IPR policies.
        The support schemas are organized in folders per owner/maintainer.
        It is the implementer's sole responsibility to ensure that their local copies of all schemas are the appropriate up to date versions.</para></warning>

        <para>Currently the only included third party support schema is
          <ulink url="http://www.w3.org/2001/xml.xsd">http://www.w3.org/2001/xml.xsd</ulink> [<ulink url="http://www.w3.org/2009/01/xml.xsd">http://www.w3.org/2009/01/xml.xsd</ulink>] at <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd">http://docs.oasis-open.org/xliff/xliff-core/v2.0/os/schemas/informativeCopiesOf3rdPartySchemas/w3c/xml.xsd</ulink> in this distribution.</para>
    </section>

  </appendix>


  <appendix role="informative" id="specChangeTracking">
    <title>Specification Change Tracking</title>
    <section id="ReviewChangeTrack">
<title>Tracking of changes made in response to Public Reviews</title>
<para>This is to facilitate human tracking of changes in the specification made since the first Public Review publication on 16th April 2013.
</para>
<!--  <xi:include href="cos01.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>  -->
    <section id="cos01">
<title>Tracking of changes in response to the Candidate OASIS Standard Public Review</title>
<para>This section tracks all changes made to this specification compared to the Candidate OASIS
    Standard 01 <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/cos01/xliff-core-v2.0-cos01.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/cos01/xliff-core-v2.0-cos01.html</ulink>.
    The 60 day Public Review took place from 7th May 2014 until 5th July 2014. All
    changes recorded in this section are deemed to be of editorial and non-substantive character by
    the TC.</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<!--  Add new change track items to the bottom of the list  -->
    <listitem>
        <para>In response to comment 304, the informative description of the <code>gls:source</code> attribute has been clarified.</para>
    </listitem>
    <listitem>
        <para>In response to comment 303, the Contstraint expressed on <code>mtc:subType</code> has been fixed and clarified.</para>
    </listitem>
    <listitem>
            <para>In response to comment 302, wrongly exemplified chracter "/" (slash) has been
                replaced with the intended chracter "\" (backslash) in the value desription for
                    <code>fs:subFs</code>, which is consistent with all subsequent
                occurrences.</para>
        </listitem>
        <listitem>
            <para>In response to comment 301, the mechanism of determining implicit values of the
                    <code>order</code> attribute was clarified. An informative Warning has been
                added to the related usage description.</para>
        </listitem>
  
<!--  Add new change track items to the bottom of the list
<listitem>
<para>[This is a suggested wording for your change track item:] In response to comment(s) nnn, nnn, and nnn, following changes have been made to
feature XYZ: [description of changes]... </para>
</listitem>
 -->

</orderedlist>

</section>
    <section id="csprd03">
<title>Tracking of changes in response to the 3rd Public Review</title>
<para>This section tracks all changes made to this specification compared to the Committee
        Specification Draft 03 / Public Review Draft 03 <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd03/xliff-core-v2.0-csprd03.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd03/xliff-core-v2.0-csprd03.html</ulink>.
        The 15 day Public Review took place from 11th February 2014 until 25th February 2014. All
        changes recorded in this section are deemed to be of editorial and non-substantive character
        by the TC.</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<!--  Add new change track items to the bottom of the list  -->
    <listitem>
        <para>Minor Front Matter fixes have been implemented in response to comments 216 and
                205.</para>
    </listitem>
  <listitem>
    <para>Minor spelling, style and consistency errors have been fixed in response to comments 202,
                203, 204, 206, 208, 209, 217, 218, 219, 224, 225, 229, 232 and 240.</para>
  </listitem>
  <listitem>
            <para>Updated the "Translation Candidate Annotation" section in response to comments
                214.</para>
        </listitem>
  <listitem>
    <para>The Acknowledgments Appendix has been brought up to date in response to comment
      223.</para>
  </listitem>
  <listitem>
    <para>Updated where xml:lang is allowed and the constraints of source and target to resolve comment 234.</para>
  </listitem>
  <listitem>
    <para>Updated definition of the type attribute when used in group and unit to resolve comment 242.</para>
  </listitem>
  <listitem>
    <para>Added examples for Fragment Identifier section to resolve comment 245.</para>
  </listitem>
<!--  Add new change track items to the bottom of the list
<listitem>
<para>[This is a suggested wording for your change track item:] In response to comment(s) nnn, nnn, and nnn, following changes have been made to
feature XYZ: [description of changes]... </para>
</listitem>
 -->

</orderedlist>

</section>
    <section id="csprd02">
<title>Tracking of changes in response to the 2nd Public Review</title>
<para>This section tracks major changes made to this specification compared to the Committee
        Specification Draft 02 / Public Review Draft 02 <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd02/xliff-core-v2.0-csprd02.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd02/xliff-core-v2.0-csprd02.html</ulink>.
        The 15 day Public Review took place from 20th September 2013 until 5th October 2013.</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<!--  Add new change track items to the bottom of the list  -->
<listitem>
<para>Front matter links and citation format have been adjusted as per TC admin comment 146.</para>
</listitem>
<listitem>
<para>In response to comment 131, the specification structure has been changed to include the module specifications in the main body of the document, rather than in Appendices.</para>
</listitem>
<listitem>
<para>Spelling mistakes and other minor editorial errors have been corrected mainly in response to
comments - spelling: 106, 115, 117, 121, 125; other minor editorial: 116, 124, 128, 133, 134, 136,
149; and as found.</para>
</listitem>
<listitem>
<para>Schema corrections have been made in response to comments 112 and 138, other changes to
schemas have been made as result of some of the normative changes recorded in this tracking section;
also schema appearance and hence human readability have been improved in response to comment 145.
w3c <code>xml.xsd</code> has been informatively included in the schema folder to prevent issues with
validation performance.</para>
</listitem>
<listitem>
<para>In response to comment 109, <code>&lt;unit&gt;</code> ids are now required to be unique within their enclosing <code>&lt;file&gt;</code> element rather than within their parent element.</para>
</listitem>
<listitem>
<para>In response to comment 111, <code>mtc:ref</code> attribute was introduced on the
<code>&lt;match&gt;</code> element in the mtc module and an analogical attribute <code>gls:ref</code>
was introduced in the gls module, where similar issues existed.</para></listitem>

<listitem>
<para>The values for <code>canReorder</code> have been modified to allow adjacent sequences of
non-reorderable inline codes, and processing requirements have been added to specify the behavior of
non-reorderable sequences.</para>
</listitem>
<listitem>
<para>In response to comments 109, 111, 113, 114, 126, 130, and 151 uniqueness scopes of the core and module id
attributes have been adjusted and a fragment identification and referencing mechanism has been devised and described
in the dedicated "Fragment Identification" section of the specification.  </para>
</listitem>
<listitem>
<para>The "Segmentation Modification" section has been re-organized by type of operation, and the
constraints and processing requirements modified accordingly.</para>
</listitem>
<listitem>
<para>In response to comment 113, sub-flows have been explicitly limited to one
<code>&lt;file&gt;</code> element.</para>
</listitem>
<listitem>
<para>In response to comments 103, 104, and 138, required and optional elements have been reordered,
modules have been allowed by the wildcard <code>other</code> in schema and by explicit non-schema
Constraints in element descriptions. <firstterm>XLIFF-defined</firstterm> has been defined using
XLIFF TC URN prefix for namespaces to be able to discern <firstterm>Modules</firstterm> from
Extensions.</para>
</listitem>
<listitem>
<para>In response to comments 127 and 150, usage of attributes from XML namespace,
                    <code>xml:space</code> and <code>xml:lang</code> has been restricted and
                clarified.</para>
</listitem>

<!--  Add new change track items to the bottom of the list
<listitem>
<para>[This is a suggested wording for your change track item:] In response to comment(s) nnn, nnn, and nnn, following changes have been made to
feature XYZ: [description of changes]... </para>
</listitem>
 -->

</orderedlist>

</section>
    <section id="csprd01">
<title>Tracking of changes in response to the 1st Public Review</title>
<para>This section tracks major changes made to this specification compared to the Committee
Specification Drat 01 / Public Review Draft 01 <ulink url="http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd01/xliff-core-v2.0-csprd01.html">http://docs.oasis-open.org/xliff/xliff-core/v2.0/csprd01/xliff-core-v2.0-csprd01.html</ulink>. The
initial Public Review took place from 29th April 2013 until 29th May 2013.</para>
<orderedlist inheritnum="ignore" continuation="restarts">
<!--  Add new change track items to the bottom of the list  -->
<listitem>
<para>This change tracking appendix has been added.</para>
</listitem>
<listitem>
<para> In response to comments 007 and 008, the <code>skeleton</code> attribute has been removed
from the <code>&lt;file&gt;</code> element and the whole specification. Pointing to an external
skeleton is now solely through the <code>href</code> attribute on the <code>&lt;skeleton&gt;</code>
element. </para>
</listitem>
<listitem>
<para> In response to comment 005, front matter language about not uppercasing normative keywords has been removed and keywords uppercased via html and fo xsl stylesheets.</para>
</listitem>
<listitem>
<para> In response to comments 001 and 025, fs now requires to form valid HTML5 snippets that can be rendered by a browser. Example how to use images through fs has been added.</para>
</listitem>
<listitem>
<para> In response to comments 033 and 061, val module syntax has been simplified, no special
escaping mechanism is needed, also a flag to indicate case insensitivity has been added.</para>
</listitem>
<listitem>
<para> In response to comments 027, and 028, res module is now allowed on both <code>&lt;file&gt;</code> and <code>&lt;unit&gt;</code> levels, it now also has an internal option analogical to <code>&lt;skeleton&gt;</code>.</para>
</listitem>
<listitem>
<para> In response to comments 024, 036, and 050, gls module has been enhanced by adding of an id and by allowing for extensibility.</para>
</listitem>
<listitem>
<para> In response to comments 018, 024, and 028, markers of the type <code>term</code>, can now point to gls entries.</para>
</listitem>
<listitem>
<para> In response to comment 006, required order of core, module, and custom elements has been harmonized on all structural levels.</para>
</listitem>
<listitem>
<para> In response to comment 038, modules, <code>&lt;notes&gt;</code>, and extensions have been
prohibited on <code>&lt;segment&gt;</code> and lower structural levels. This also caused some changes
in modules previously allowed on these levels, notably fs and mtc. Markers now allow pointing to
<code>&lt;match&gt;</code> elements and the resegmentation flag <code>canResegment</code> has been
introduced on all structural levels. Detailed processing requirements for resegmentation have been
added. Extensibility section had to be updated due to removing many extension points, the
extensibility section now lists only core extension points and refers to modules for modules'
extensibility.</para>
</listitem>
<listitem>
<para> In response to comments 012 and 020, the attribute prefixes "trg" and "tgt" have been harmonized to "trg".</para>
</listitem>
<listitem>
<para> In response to comment 014, mda module can be now used for roundtripping purposes, provide that it does not compete with core or other modules features.</para>
</listitem>
<listitem>
<para> In response to comment 002, normative references to the Unicode Standard (latest), to the
Unicode Bidirectional Algorithm (latest), to the W3C datetime NOTE, to HTML5, XML Schema Datatypes,
and to the XML Recommendation have been explicitly added. Also conformance clauses in the
Conformance section have been numbered.</para>
</listitem>
<listitem>
<para> In response to comment 002, the specification now clearly indicates that backwards compatibility with XLIFF 1.2 is not required.</para>
</listitem>
<listitem>
<para> In response to comments 013 and 015, the specification now defines the use of XML Processing Instructions in XLIFF.</para>
</listitem>
<listitem>
<para> In response to comments 021 and 053, Processing Requirements of sub* attributes were unified, all now require update or deletion upon update of their master attribute.</para>
</listitem>
<listitem>
<para> In response to comments 011 and 041, the attribute <code>approved</code> has been removed
from the specification including all related Constraints and Processing Requirements.</para>
</listitem>
<listitem>
<para> In response to comment 009, fully recursive inheritance on structural elements and markers
has been introduced for the following attributes <code>translate</code>, <code>canResegment</code>,
<code>srcDir</code>, and <code>trgDir</code>.</para>
</listitem>
<listitem>
<para> In response to comment 039, normative language throughout the spec and the conformance
section has been reworked with the use of process and agent definitions. Many Processing Requirements
have been also reclassified as Constraints that in fact target documents rather than
applications.</para>
</listitem>
<listitem>
<para>In response to comment 010, the primary description of the <code>segment</code> element has
been clarified and a reference to the Segmentation section has been added.</para>
</listitem>
<listitem>
<para>In response to comment 030, the primary descriptions of the <code>file</code> and
<code>group</code> elements have been clarified.</para>
</listitem>
<listitem>
<para>Examples of core and module features have been added in response to comments 026, 033, 048,
051, and 058.</para>
</listitem>


<!--  Add new change track items to the bottom of the list
<listitem>
<para>[This is a suggested wording for your change track item:] In response to comment(s) nnn, nnn, and nnn, following changes have been made to
feature XYZ: [description of changes]... </para>
</listitem>
 -->

</orderedlist>

</section>
</section>
  </appendix>

  <appendix role="informative" id="acknowledgements">
    <title>Acknowledgements</title>
    <para>The following individuals have participated in the creation of this specification and
      are gratefully acknowledged:</para>

    <itemizedlist spacing="compact">
      <listitem><para>Amaya, Victor - Oracle </para></listitem>
      <listitem><para>Chapman, Helena - IBM </para></listitem>
      <listitem><para>Coady, Shirley - MultiCorpora R&amp;D Inc. </para></listitem>
      <listitem><para>Comerford, Tom - Individual </para></listitem>
      <listitem><para>Estreen, Fredrik - Lionbridge </para></listitem>
      <listitem><para>Filip, David - Moravia, and then Localisation Research Centre </para></listitem>
      <listitem>
        <para>Kearney, Raymond - Localisation Research Centre</para>
      </listitem>
      <listitem>
        <para>King, Ryan - Microsoft </para>
      </listitem>
      <listitem><para>Lieske, Christian - SAP AG </para></listitem>
      <listitem><para>Loomis, Steven - IBM </para></listitem>
      <listitem><para>Michael, Alan - Microsoft </para></listitem>
      <listitem><para>Morado Vázquez, Lucía - Localisation Research Centre, and then University of Geneva </para></listitem>
      <listitem>
        <para>O'Carroll, David  - Localisation Research Centre</para>
      </listitem>
      <listitem>
        <para>O'Donnell, Kevin - Microsoft </para>
      </listitem>
      <listitem><para>Ow, Michael - IBM </para></listitem>
      <listitem><para>Prause, Ingo - SDL </para></listitem>
      <listitem><para>Raya, Rodolfo - Maxprograms </para></listitem>
      <listitem><para>Ryoo, Jung Woo - Oracle </para></listitem>
      <listitem><para>Savourel, Yves - ENLASO Corporation </para></listitem>
      <listitem><para>Schnabel, Bryan - Individual </para></listitem>
      <listitem><para>Schurig, Joachim - Lionbridge </para></listitem>
      <listitem><para>Stahlschmidt, Uwe - Microsoft </para></listitem>
      <listitem><para>Waldhör, Klemens - TAUS </para></listitem>
      <listitem><para>Walters, David - IBM </para></listitem>
      <listitem><para>Wasala, Asanka - Localisation Research Centre </para></listitem>
    </itemizedlist>

  </appendix>


</article>