OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

xliff message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Options for allowing XML in <skl> element


Title: Message
Hello,
 
In support of the idea by Christian to enable XML in the <skl> element, I will walk through the options for updating the XLIFF XML schema to allow XML markup in the skeleton element as follows.
 
Suppose we had this simple XML file:
 
(item 1)
<note>
 <title>Things I Like</title>
 <para>This sample XML file is about guitars.</para>
 <para>I have three nice guitars (so far) that I like</para>
 <list>
  <listitem>Fender Jazz Bass</listitem>
  <listitem>Fender Stratocaster</listitem>
  <listitem>Fender Telecaster</listitem>
 </list>
</note>
 
It would be perfectly valid, today to express it the following way in XLIFF (please ignore the reference to XLIFF prototype 2.0 for the moment):
 
(item 2)
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xmarker="http://www.xmarker.com"
       xsi:schemaLocation="urn:oasis:names:tc:xliff:document:2.0        
       xliff-proto-2.0-strict.xsd  http://www.xmarker.com xmarker_trial.xsd"
       version="2.0">
   <file original="guitars.xml" source-language="en-us" datatype="plaintext" xml:space="default" target-language="de">
      <header>
         <skl>
            <internal-file>guitars!</internal-file>
         </skl>
      </header>
      <body>
         <trans-unit id="title-0001">
            <source xml:lang="en-us">Things I Like</source>
         </trans-unit>
         <trans-unit id="para-0001">
            <source xml:lang="en-us">This sample XML file is about guitars.</source>
         </trans-unit>
         <trans-unit id="para-0002">
            <source xml:lang="en-us">I have three nice guitars (so far) that I like</source>
         </trans-unit>
         <trans-unit id="listitem-0001">
            <source xml:lang="en-us">Fender Jazz Bass</source>
         </trans-unit>
         <trans-unit id="listitem-0002">
            <source xml:lang="en-us">Fender Stratocaster</source>
         </trans-unit>
         <trans-unit id="listitem-0003">
            <source xml:lang="en-us">Fender Telecaster</source>
         </trans-unit>
      </body>
   </file>
</xliff>
 
The following (desired) improvement to <internal-file>guitars!</internal-file>, would be invalid:
(item 3)
            <internal-file>
              <xmarker:note>
               <xmarker:title xid="title-0001">Things I Like</xmarker:title>
               <xmarker:para xid="para-0001">This sample XML file is about guitars.</xmarker:para>
               <xmarker:para xid="para-0002">I have three nice guitars (so far) that I like</xmarker:para>
               <xmarker:list>
                <xmarker:listitem xid="listitem-0001">Fender Jazz Bass</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Stratocaster</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Telecaster</xmarker:listitem>
               </xmarker:list>
              </xmarker:note>
          </internal-file>
 
Escaping the XML, or using CDATA would be valid, but not friendly for implementers:
(item 4)
            <internal-file>
              &lt;xmarker:note>
               &lt;xmarker:title xid="title-0001">Things I Like&lt;/xmarker:title>
               &lt;xmarker:para xid="para-0001">This sample XML file is about guitars.&lt;/xmarker:para>
               &lt;xmarker:para xid="para-0002">I have three nice guitars (so far) that I like&lt;/xmarker:para>
               &lt;xmarker:list>
                &lt;xmarker:listitem xid="listitem-0001">Fender Jazz Bass&lt;/xmarker:listitem>
                &lt;xmarker:listitem xid="listitem-0001">Fender Stratocaster&lt;/xmarker:listitem>
                &lt;xmarker:listitem xid="listitem-0001">Fender Telecaster&lt;/xmarker:listitem>
               &lt;/xmarker:list>
              &lt;/xmarker:note>
          </internal-file>
 
Also, the work-around I previously offered would work.  But it goes against the "spirit" of the skeleton element:
(item 5)
      <header>
         <skl>
            <internal-file>Internal file is namespaced after the skeleton.</internal-file>
         </skl>
         <xmarker:note>
               <xmarker:title xid="title-0001">Things I Like</xmarker:title>
               <xmarker:para xid="para-0001">This sample XML file is about guitars.</xmarker:para>
               <xmarker:para xid="para-0002">I have three nice guitars (so far) that I like</xmarker:para>
               <xmarker:list>
                <xmarker:listitem xid="listitem-0001">Fender Jazz Bass</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Stratocaster</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Telecaster</xmarker:listitem>
               </xmarker:list>
         </xmarker:note>
      </header>
 
Option 1 would be to allow an XML file to be embedded in the skeleton directly, not impacting internal-file or external file.  The schema would need to be updated to something like this
 
(from)
  <xsd:complexType name="ElemType_ExternalReference">
    <xsd:choice>
      <xsd:element ref="xlf:internal-file"/>
      <xsd:element ref="xlf:external-file"/>
    </xsd:choice>
  </xsd:complexType>
 
(to)
  <xsd:complexType name="ElemType_ExternalReference">
    <xsd:choice>
      <xsd:element ref="xlf:internal-file"/>
      <xsd:element ref="xlf:external-file"/>
      <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
    </xsd:choice>
  </xsd:complexType>
 
That would make the following valid:
(Item 6)
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xmarker="http://www.xmarker.com"
       xsi:schemaLocation="urn:oasis:names:tc:xliff:document:2.0        
       xliff-proto-2.0-strict.xsd  http://www.xmarker.com xmarker_trial.xsd"
       version="2.0">
   <file original="guitars.xml" source-language="en-us" datatype="plaintext" xml:space="default" target-language="de">
      <header>
         <skl>
            <xmarker:note>
               <xmarker:title xid="title-0001">Things I Like</xmarker:title>
               <xmarker:para xid="para-0001">This sample XML file is about guitars.</xmarker:para>
               <xmarker:para xid="para-0002">I have three nice guitars (so far) that I like</xmarker:para>
               <xmarker:list>
                <xmarker:listitem xid="listitem-0001">Fender Jazz Bass</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Stratocaster</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Telecaster</xmarker:listitem>
               </xmarker:list>
            </xmarker:note>
         </skl>
      </header>
      <body>
         <trans-unit id="title-0001">
            <source xml:lang="en-us">Things I Like</source>
         </trans-unit>
         <trans-unit id="para-0001">
            <source xml:lang="en-us">This sample XML file is about guitars.</source>
         </trans-unit>
         <trans-unit id="para-0002">
            <source xml:lang="en-us">I have three nice guitars (so far) that I like</source>
         </trans-unit>
         <trans-unit id="listitem-0001">
            <source xml:lang="en-us">Fender Jazz Bass</source>
         </trans-unit>
         <trans-unit id="listitem-0002">
            <source xml:lang="en-us">Fender Stratocaster</source>
         </trans-unit>
         <trans-unit id="listitem-0003">
            <source xml:lang="en-us">Fender Telecaster</source>
         </trans-unit>
      </body>
   </file>
</xliff>
 
Option 2 would be to add a new element to <skl> that acts as a "holder" element for the XML file.  The schema would need to be updated to something like this
 
(from)
  <xsd:complexType name="ElemType_ExternalReference">
    <xsd:choice>
      <xsd:element ref="xlf:internal-file"/>
      <xsd:element ref="xlf:external-file"/>
    </xsd:choice>
  </xsd:complexType>
 
(to)
  <xsd:complexType name="ElemType_ExternalReference">
    <xsd:choice>
      <xsd:element ref="xlf:internal-file"/>
      <xsd:element ref="xlf:external-file"/>
      <xsd:element ref="xlf:internal-holder"/>
    </xsd:choice>
  </xsd:complexType>
 
(and add)
  <xsd:element name="internal-holder">
    <xsd:complexType>
     <xsd:sequence>
      <xsd:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
     </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
 
That would make the following valid:
(Item 7)
<xliff xmlns="urn:oasis:names:tc:xliff:document:2.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:xmarker="http://www.xmarker.com"
       xsi:schemaLocation="urn:oasis:names:tc:xliff:document:2.0        
       xliff-proto-2.0-strict.xsd  http://www.xmarker.com xmarker_trial.xsd"
       version="2.0">
   <file original="guitars.xml" source-language="en-us" datatype="plaintext" xml:space="default" target-language="de">
      <header>
         <skl>
           <internal-holder>
            <xmarker:note>
               <xmarker:title xid="title-0001">Things I Like</xmarker:title>
               <xmarker:para xid="para-0001">This sample XML file is about guitars.</xmarker:para>
               <xmarker:para xid="para-0002">I have three nice guitars (so far) that I like</xmarker:para>
               <xmarker:list>
                <xmarker:listitem xid="listitem-0001">Fender Jazz Bass</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Stratocaster</xmarker:listitem>
                <xmarker:listitem xid="listitem-0001">Fender Telecaster</xmarker:listitem>
               </xmarker:list>
            </xmarker:note>
           </internal-holder>
         </skl>
      </header>
      <body>
         <trans-unit id="title-0001">
            <source xml:lang="en-us">Things I Like</source>
         </trans-unit>
         <trans-unit id="para-0001">
            <source xml:lang="en-us">This sample XML file is about guitars.</source>
         </trans-unit>
         <trans-unit id="para-0002">
            <source xml:lang="en-us">I have three nice guitars (so far) that I like</source>
         </trans-unit>
         <trans-unit id="listitem-0001">
            <source xml:lang="en-us">Fender Jazz Bass</source>
         </trans-unit>
         <trans-unit id="listitem-0002">
            <source xml:lang="en-us">Fender Stratocaster</source>
         </trans-unit>
         <trans-unit id="listitem-0003">
            <source xml:lang="en-us">Fender Telecaster</source>
         </trans-unit>
      </body>
   </file>
</xliff>
 
Finally, Magnus mentioned that it would be useful for people to have the ability to add extensible attributes on the <internal-file> and <external-file> elements.  This could be achieved by adding an extensibility point to these elements, like this:
(Item 8)
 
(from)
  <xsd:element name="internal-file">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="form" type="xsd:string"/>
          <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="external-file">
    <xsd:complexType>
      <xsd:attribute name="href" type="xsd:string" use="required"/>
      <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
      <xsd:attribute name="uid" type="xsd:NMTOKEN"/>
    </xsd:complexType>
  </xsd:element>
 
(to)
  <xsd:element name="internal-file">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="form" type="xsd:string"/>
          <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
          <xsd:anyAttribute namespace="##other" processContents="skip"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="external-file">
    <xsd:complexType>
      <xsd:attribute name="href" type="xsd:string" use="required"/>
      <xsd:attribute name="crc" type="xsd:NMTOKEN"/>
      <xsd:attribute name="uid" type="xsd:NMTOKEN"/>
      <xsd:anyAttribute namespace="##other" processContents="skip"/>
    </xsd:complexType>
  </xsd:element>
 
Which would make this markup valid:
(Item 9)
         <skl>
            <internal-file xmarker:location="my.guitar.xml">guitars!</internal-file>
         </skl>
 

I've attached sample files for you to test.
 
If I missed the nature of the proposals, please let me know.
 
Thanks,
 
Bryan

xliff2.0_proto.zip



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]