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パッケージのサブプログラム
| メソッド | 説明 |
|---|---|
|
ベース・ドキュメントでセッションの言語値を無視して問合せまたは取得が行われるように、現行のセッションの変換を無効にします。 |
|
|
現行のセッションで変換を有効にします。 |
|
|
|
|
|
すべての変換を含むベース・ドキュメントを戻します。 |
|
|
|
|
|
ソース言語を、指定した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ファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
変換を必要とする要素の位置を指定する |
|
|
ネームスペース |
|
|
|
戻り値
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ファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
入力する |
戻り値
すべての変換があるベース・ドキュメントを含む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ファンクションおよびプロシージャのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
|
戻り値
'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が次のような場合について考えます。
<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ファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
入力する |
|
|
言語 |
戻り値
指定した言語のドキュメントを含む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ファンクションのパラメータ
| パラメータ | 説明 |
|---|---|
|
|
変換を更新する |
|
|
変換を更新する |
|
|
変換を更新する言語。 |
|
|
新しい変換。 |
|
|
ネームスペース |
戻り値
更新されたドキュメント。
例
次に例を示します。
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>