インポートユーティリティ

XPath (TMS)

本コンテンツはPhrase Language AIの機械翻訳により、英語から翻訳されています。

XPathはXML Path Languageの略です。XML文書内の要素や属性をナビゲートするために使用できます。XPATH を初めて使用する場合は、 XPath Tutorial first および公式の XPATH ドキュメントを参照してください。

XPath 1.0 のサブセットは次の制限付きでサポートされています。

  • ステップ内の軸

    • サポート

      祖先、祖先自身、属性、子、子孫、子孫自身

    • サポート外

      following, preceding, following-sibling, preceding-sibling, namespace

  • 述語

    • サポート

      現在のノードまたは先祖ノードの条件とプロパティ(属性、名前空間)

    • サポートされていません(例)

      position number, axis child::, descendant, descendant-or-self, following::, preceding::, following-sibling::, preceding-sibling::, function last()

基本ルール

  • パスで///を使用

  • 名前にシングルクオーテーション' 'を使用

  • パイプ | を使用してリクエストを結合する

  • 名前では大文字と小文字が区別されます。<ボディ><ボディ> とは別の名前です

XPath 例 1 と XPath 例 2 (名前空間あり)は、次のファイルの例です。

  1. すべての要素と属性をインポート

    //* | //@*

  2. すべての要素と attribute1 の値をインポート

    (<elem1 attribute1="translate" attribute2="Do not translate"/>)

    //* | //@attribute1

  3. 子要素のすべての子をインポート

    //Child//*

  4. 属性 translate='true' の場合のみ要素 lis とその子孫をインポートする 

    (<lis translate="true">これを翻訳</lis><lis translate="false">翻訳しない</lis>)

    //lis[@translate='true']/descendant-or-self::*

  5. 要素の属性が translate='true' の場合、すべての要素とサブフォルダをインポートします

    //*[@translate='true']/descendant-or-self::*

  6. 属性Textの値を要素Dataにインポート

    <Data Text="Text for translation">

    //data/@text

  7. 要素 <mT:ignore> を除く <mT:translation> 要素とその子孫をインポートする

    //mT:translation/descendant-or-self::*[not(ancestor-or-self::mT:ignore)]

  8. translate='false' 属性を持つすべての要素を除外する

    //*[not(@translate='false')]

  9. 属性translate='false'で要素'lis'を除外する

    (<lis translate="false">翻訳しない)

    //*[not(self::lis[@translate='false'])]

  10. 属性 translate='false' を持つ要素 'lis' とその派生要素を除外する

    (<lis translate="false"><p>翻訳しない)

    //*[not(ancestor-or-self::lis[@translate='false'])]

  11. 「リンク」を含むすべての要素を除外

    (<menu1link><tmenu41link>)

    //*[not(contains(name(),'link'))]

  12. 'lis'に'link'を含む属性がある場合、全ての要素を除外する

    (<ele lis=menu1link>, <mon lis=tmenu41link>)

    //*[not(ancestor-or-self::node()[contains(@lis, 'link')])]

  13. 親 LANG に 2015 年の属性 'updated' がある場合、要素を PT にインポート

    (<LANG updated="20150213T121526"><PT>'

    //LANG[contains(@updated,'2015')]/PT

  14. 要素「説明」と「名前」が要素「定義」または「タイプ」の子孫でない場合にのみインポート

    ://*[not(ancestor-or-self::*[(name()='Definitions') or (name()='Types')]]/*

    [[(name()='Description') or (name()='Name')]

  15. 名前空間付きXML

    <root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Child><Text>これを翻訳</Text></Child>

    • <子>内のすべての要素をインポート:

      //*[local-name()='Child']//*

    • <Text> 個の要素のみを<子>にインポート:

      //*[local-name()='Child']/*[local-name()='Text']

    • 要素 <CONTRACT> の属性 <CATEGORY> の値が <ORIGINAL> の場合、<CONTRACT> のすべての要素をインポートします

      ://*[local-name()='CONTRACT' and @CATEGORY='ORIGINAL']//*

  16. 名前空間と属性を持つ XML <root> xmlns:xhtml="http://www.w3.org/1999/xhtml"<Child translate='1'>これを翻訳</Child>

    • import element <Child> if the attribute translate is 1: //*[local-name()="Child"][@*[local-name()='translate']='1']

    • translate=true の属性を持つすべての要素をインポートします: //*[@*[local-name()='translate']='true']

  17. 名前空間を持つXML。要素tuから要素ターゲットをインポートします。ただし、属性IDに「img」または「extra」が含まれている場合はインポートしません。

    1. ファイルの例:

      <tu id="pages|content|extra"><ori xml:lang="en">コース1</ori><target xml:lang="lang">コース1</target></tu>

    2. XPATHの例:

      //*[local-name()='tu' and not(contains(@id,'img') or contains(@id,'extra'))]/*[local-name()='target']

  18. <comment><lis> を除くすべての要素をインポート (<lis translate="true"> とその子孫を除く):

    //*[count(ancestor-or-self::node()[(name()='lis' and (not(@translate='true')) ) or name()='comment']]=0]

  19. <comment> を除くすべての要素、および属性 <... attribute2="Do not translate"> を持つ要素とその子孫を除くすべての要素をインポートします。

    //*[count(ancestor-or-self::node()[(@attribute2='Do not translate') or name()='comment'])=0]

  20. 属性 varNameglossName の値をインポートします。ただし、祖先に属性 attribute1='translate' または attribute1='edit' がある場合に限ります。

    //*[(self::node()[@attribute1='translate' or @attribute1='edit']]//@*[local-name()='varName' or local-name()='glossName']

  21. 名前= 戻るメニュー、または時間の属性を持つ要素以外のすべての要素と属性をインポートする:

    //*[not(ancestor-or-self::node()[@Name='Back' or @Name='Menu' or @Name='Time']] | //@*[not(ancestor-or-self::node()[@Name='Back' or @Name='Menu' or @Name='Time']]

    この場合は、すべてインポートして、インポートに不要な属性をロックした方がよい場合があります。セグメントがロックされたら、エディタで原文をターゲットにコピーし、翻訳に原文を転送します。

    1. 名前属性を持つすべての要素を値でロックする:戻るメニュー、または時間とその子孫:

      //*[@Name='Back' or @Name='Menu' or @Name='Time']/descendant-or-self::*

    2. 名前のすべての属性を値でロックする:戻るメニュー、または時間とその子孫

      //*[@Name='Back' or @Name='Menu' or @Name='Time']//@*

外部の例をいくつか示します。

コンテキストノート

コンテキストノートは翻訳済セグメントにインポートできます。

このサンプルには3つの例があります。

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1="parentElement 1 の属性の備考 - select ../@context1">
<field context2="属性1の備考 - @context2">翻訳1用</field>
<context3>要素1の備考 - ../context3を選択</context3>
</element>

<element context1="parentElement 2 属性の備考">
<field context2="属性2の備考">翻訳2用</field>
<context3>要素2の備考</context3>
</element>

</root>
  • 親要素の属性(コンテキスト1): ../@context1

  • 自己要素(context2)の属性:@context2

  • 兄弟要素(コンテキスト3): ../context3

要素属性: //* をインポートする場合、コンテキストノートの内容は原文セグメントにもインポートされます。要素と属性の一般的なインポートからコンテキストノート要素と属性を除外します。

この記事は役に立ちましたか?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.