206 DBMS_XMLTRANSLATIONS

推奨されないDBMS_XMLTRANSLATIONSパッケージは、翻訳を実行して、文字列を各種言語で検索したり表示できるようにするインタフェースを提供します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージの使用は推奨されていません。

この章の構成は、次のとおりです。

参照:

詳細は、『Oracle XML DB開発者ガイド』を参照してください。

206.1 DBMS_XMLTRANSLATIONSのセキュリティ・モデル

DBMS_XMLTRANSLATIONSパッケージは、XDBが所有しているため、SYSまたはXDBによって作成される必要があります。EXECUTE権限は、PUBLICに付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。

206.2 DBMS_XMLTRANSLATIONSサブプログラムの要約

この表は、DBMS_XMLTRANSLATIONSサブプログラムを示し、簡単に説明しています。

表206-1 DBMS_XMLTranslationsパッケージのサブプログラム

メソッド 説明

DISABLETRANSLATIONプロシージャ

ベース・ドキュメントでセッションの言語値を無視して問合せまたは取得が行われるように、現行のセッションの変換を無効にします。

ENABLETRANSLATIONプロシージャ

現行のセッションで変換を有効にします。

EXTRACTXLIFFファンクションおよびプロシージャ

XMLTYPEまたはXDBリポジトリのリソースのいずれかから、XLIFF形式で変換を抽出します。

GETBASEDOCUMENTファンクション

すべての変換を含むベース・ドキュメントを戻します。

MERGEXLIFFファンクション

XMLTYPEまたはXDBリポジトリのリソースのいずれかへ、XLIFF形式で変換をマージします。

SETSOURCELANGファンクション

ソース言語を、指定したXPATHの特定の言語に設定します。

TRANSLATEXMLファンクション

指定した言語でドキュメントを戻します。

UPDATETRANSLATIONファンクション

指定したXPATHの特定の言語で変換を更新します。

206.2.1 DISABLETRANSLATIONプロシージャ

この推奨されないプロシージャは、ベース・ドキュメントでセッションの言語値を無視して問合せまたは取得が行われるように、現行セッションの変換を無効にします。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.DISABLETRANSLATION;

206.2.2 ENABLETRANSLATIONプロシージャ

この推奨されないプロシージャは、現行のセッションで変換を有効にします。これはデフォルトの動作です。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.ENABLETRANSLATION;

206.2.3 EXTRACTXLIFFファンクションおよびプロシージャ

この推奨されないファンクションおよびプロシージャは、XMLTYPEまたはXDBリポジトリのリソースのいずれかから、XLIFF形式で変換を抽出します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.EXTRACTXLIFF(
   doc       IN  XMLTYPE,
   xpath     IN  VARCHAR2,
   namespace IN  VARCHAR2 := NULL) 
 RETURN XMLTYPE;
DBMS_XMLTRANSLATIONS.EXTRACTXLIFF(
   abspath   IN  XMLTYPE,
   xpath     IN  VARCHAR2,
   namespace IN  VARCHAR2 := NULL) 
 RETURN XMLTYPE;

パラメータ

表206-2 EXTRACTXLIFFファンクションのパラメータ

パラメータ 説明

doc

XLIFFを抽出するXMLTYPE

xpath

変換を必要とする要素の位置を指定するXPATHXPATHを指定しない場合は、ドキュメント全体が処理されます。

namespace

ネームスペース

abspath

XLIFFを抽出するリソースの絶対パス。

戻り値

XLIFF形式の変換。

XMLTYPEからの変換の抽出

docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <title xml:lang="es">
        Security Class Example - ES
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

xpathを = '/securityClass/title'とします。EXTRACTXLIFFの出力は次のようになります。

<xliff version='1.1'>
  <file original='' source-language='en' datatype='xml'>
    <body>
      <trans-unit id='/securityClass/title'>
        <source>Security Class Example</source>
        <alt-trans>
          <target xml:lang='fr'>Security Class Example - FR</target>
          <target xml:lang='es'>Security Class Example - ES</target>
        </alt-trans>
      </trans-unit>
    </body>
  </file>
</xliff>

リソースからの変換の抽出

リソース'/public/security.xml'が次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="es">
        Security Class Example - ES
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
    <privlist>
    <privilege name="privilege1"/>
    <aggregatePrivilege name="iStorePOApprover">
        <title>
            iStore Purchase Order Approver
        </title>
        <privilegeRef name="is:privilege1"/>
        <privilegeRef name="oa:submitPO"/>
        <privilegeRef name="oa:privilege3"/>
    </aggregatePrivilege>
    <privilege name="privilege2">
        <title xml:lang="en">
            secondary privilege
        </title>
        <title xml:lang="fr" xdb:srclang="true">
            secondary privilege - FR
        </title>
        <columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
        <columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
    </privilege>
    </privlist>
</securityClass>

XPATH = ''とすると、抽出されたXLIFFは、次のようになります。

<xliff version='1.1'>
  <file original='/public/security.xml' source-language='en' datatype='xml'>
    <body>
      <trans-unit id='/securityClass/title'>
        <source>Security Class Example</source>
        <alt-trans>
          <target xml:lang='fr'>Security Class Example - FR</target>
          <target xml:lang='es'>Security Class Example - ES</target>
        </alt-trans>
      </trans-unit>
    </body>
  </file>
  <file original='/public/security.xml' source-language='fr' datatype='xml'>
    <body>
      <trans-unit id='/securityClass/privilege[@name="privilege2"/title'>
        <source>secondary privilege - FR</source>
        <alt-trans>
          <target xml:lang='en'>secondary privilege</target>
        </alt-trans>
      </trans-unit>
    </body>
  </file>
</xliff>

206.2.4 GETBASEDOCUMENTファンクション

推奨されないDBMS_XMLTRANSLATIONSパッケージ内のこのファンクションは、すべての変換を含むベース・ドキュメントを戻します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.GETBASEDOCUMENT(
   doc    IN  XMLTYPE)
 RETURN XMLTYPE;

パラメータ

表206-3 GETBASEDOCUMENTファンクションのパラメータ

パラメータ 説明

doc

入力するXMLTYPE

戻り値

すべての変換があるベース・ドキュメントを含むXMLTYPE

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

前述のドキュメントでは、このサブプログラムは次を戻します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

206.2.5 MERGEXLIFFファンクション

この推奨されないファンクションは、XMLTYPEまたはXDBリポジトリのリソースのいずれかへ、XLIFF形式で変換をマージします。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.MERGEXLIFF(
   doc       IN  XMLTYPE,
   xliff     IN  XMLTYPE)
 RETURN XMLTYPE;
DBMS_XMLTRANSLATIONS.MERGEXLIFF(
   xliff     IN  XMLTYPE);

パラメータ

表206-4 MERGEXLIFFファンクションおよびプロシージャのパラメータ

パラメータ 説明

doc

XLIFFをマージするXMLTYPE

xliff

XLIFF形式の変換

戻り値

'xpath''xliff''doc'にマージした結果。

変換のXMLTYPEへのマージ

次の入力するXMLTYPEについて検討します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="es">
        Security Class Example - ES
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
    <privlist>
    <privilege name="privilege1"/>
    <aggregatePrivilege name="iStorePOApprover">
        <title>
            iStore Purchase Order Approver
        </title>
        <privilegeRef name="is:privilege1"/>
        <privilegeRef name="oa:submitPO"/>
        <privilegeRef name="oa:privilege3"/>
    </aggregatePrivilege>
    <privilege name="privilege2">
        <title xml:lang="en">
            secondary privilege
        </title>
        <title xml:lang="fr" xdb:srclang="true">
            secondary privilege - FR
        </title>
        <columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
        <columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
    </privilege>
    </privlist>
</securityClass>

入力するXLIFFを次のようにします。

<xliff version='1.1'>
  <file original='/public/security.xml' source-language='en' datatype='xml'>
    <body>
      <trans-unit id='/securityClass/title'>
        <source>Security Class Example Modified</source>
        <alt-trans>
          <target xml:lang='fr'>Security Class Example Mod - FR</target>
          <target xml:lang='es'>Security Class Example Mod - ES</target>
        </alt-trans>
      </trans-unit>
      <trans-unit id='/securityClass/privilege[@name="privilege2"/title'>
        <source>secondary privilege modified</source>
        <alt-trans>
          <target xml:lang='fr'>secondary privilege mod - FR</target>
        </alt-trans>
      </trans-unit>
    </body>
</xliff>

マージの出力は次のようになります。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example Modified
    </title>
    <title xml:lang="es">
        Security Class Example Mod - ES
    </title>
    <title xml:lang="fr">
        Security Class Example Mod - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
    <privlist>
    <privilege name="privilege1"/>
    <aggregatePrivilege name="iStorePOApprover">
        <title>
            iStore Purchase Order Approver
        </title>
        <privilegeRef name="is:privilege1"/>
        <privilegeRef name="oa:submitPO"/>
        <privilegeRef name="oa:privilege3"/>
    </aggregatePrivilege>
    <privilege name="privilege2">
        <title xml:lang="en" xdb:srclang="true">
            secondary privilege modified
        </title>
        <title xml:lang="fr">
            secondary privilege mod - FR
        </title>
        <columnRef schema="APPS" table="PurchaseOrder" column="POId"/>
        <columnRef schema="APPS" table="PurchaseOrder" column="Amount"/>
    </privilege>
    </privlist>
</securityClass>

XLIFF変換のリソースへのマージ

前述の例の入力されたドキュメントが'/public/security.xml'のリポジトリに格納された場合、前述のXLIFFのマージによって同じ効果が得られます。

206.2.6 SETSOURCELANGファンクション

この推奨されないファンクションは、ソース言語を、指定したXPATHの特定の言語に設定します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.SETSOURCELANG (
   doc       IN  XMLTYPE,
   xpath     IN  VARCHAR2,
   lang      IN  VARCHAR2, 
   namespace IN  VARCHAR2 := NULL) 
 RETURN XMLTYPE;

パラメータ

表206-5 SETSOURCELANGファンクションのパラメータ

パラメータ 説明

doc

ソース言語を設定するXMLTYPE

xpath

ソース言語を設定するXPATH

lang

ソース言語。

namespace

ネームスペース

戻り値

更新されたドキュメント。

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

次のような文とします

setSourceLang ( doc, '/securityClass/title', 'fr' ) 

次のものを生成します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en">
        Security Class Example
    </title>
    <title xml:lang="fr" xdb:srclang="true">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

206.2.7 TRANSLATEXMLファンクション

この推奨されないファンクションは、指定した言語でドキュメントを戻します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.TRANSLATEXML(
   doc    IN  XMLTYPE,
   lang   IN  VARCHAR2) 
 RETURN XMLTYPE;

パラメータ

表206-6 TRANSLATEXMLファンクションのパラメータ

パラメータ 説明

doc

入力するXMLTYPE

lang

言語

戻り値

指定した言語のドキュメントを含むXMLTYPE

たとえば、docが次のような場合について考えます。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

TRANSLATEXML (doc, 'fr')は次を戻します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="fr">
        Security Class Example - FR
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>

206.2.8 UPDATETRANSLATIONファンクション

この推奨されないファンクションは、指定したXPATHの特定の言語で変換を更新します。

ノート:

Oracle Database 12cでは、DBMS_XMLTRANSLATIONSパッケージ全体の使用が推奨されていません。

構文

DBMS_XMLTRANSLATIONS.UPDATETRANSLATION(
   doc       IN  XMLTYPE,
   xpath     IN  VARCHAR2,
   lang      IN  VARCHAR2, 
   value     IN  VARCHAR2,
   namespace IN  VARCHAR2 := NULL) 
 RETURN XMLTYPE;

パラメータ

表206-7 UPDATETRANSLATIONファンクションのパラメータ

パラメータ 説明

doc

変換を更新するXMLTYPE

xpath

変換を更新するXPATH

lang

変換を更新する言語。

value

新しい変換。

namespace

ネームスペース

戻り値

更新されたドキュメント。

次に例を示します。

updateTranslation ( doc, '/securityClass/title/text()', 'fr', 'Oracle' );

次のものを生成します。

<securityClass xmlns="http://xmlns.oracle.com/xdb/security.xsd"
               xmlns:is="xmlns.oracle.com/iStore"
               xmlns:oa="xmlns.oracle.com/OracleApps"
               targetNamespace="xmlns.oracle.com/example">
    <name>
        securityClassExample
    </name>
    <title xml:lang="en" xdb:srclang="true">
        Security Class Example
    </title>
    <title xml:lang="fr">
        Oracle
    </title>
    <inherits-from>is:iStorePurchaseOrder</inherits-from>
</securityClass>