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

XPath (TMS)

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

XPathはXML Path Languageの略です。XMLドキュメント内の要素や属性をナビゲートするために使用できます。XPATHが初めての場合は、まず XPathチュートリアル を参照し、公式の XPATHドキュメント を学習してください。

AIチャットボットは、Xpathの生成と検証に非常に効果的です。

XPath 1.0のサブセットが、以下の制限付きでサポートされています:

  • ステップ内の軸

    • 対応可能:

      ancestor、ancestor-or-self、attribute、子、descendant、descendant-or-self

    • 非対応:

      following、preceding、following-sibling、preceding-sibling、namespace

  • 述語

    • 対応可能:

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

    • 非対応(例):

      位置番号、軸 child::、descendant、descendant-or-self、following::、preceding::、following-sibling::、preceding-sibling::、関数 last()

基本ルール

  • パス内で / および // を使用する

  • 名前内でシングルクォート ' ' を使用する

  • リクエストを結合するためにパイプ | を使用する

  • 名前は大文字と小文字を区別します:<Body><body> とは異なります

**Examples**

XPath 例 1 および XPath 例 2(名前空間付き)は、以下の例のファイルです:

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

    //* | //@*

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

    (<elem1 attribute1=\"翻訳する\" attribute2=\"翻訳しない\"/>)

    //* | //@attribute1

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

    //子//*

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

    (<lis translate="true">translate this</lis><lis translate="false">do not translate this</lis>)

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

  5. 要素の属性が translate='true' である場合、すべての要素と子孫をインポートする

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

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

    <Data Text="Text for translation">

    //data/@text

  7. <MT:translation> 要素とその子孫をインポートする。ただし、<MT:ignore> 要素は除く

    //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. 'link' を含むすべての要素を除外する

    (<menu1link><tmenu41link>)

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

  12. 要素またはその先祖が 'link' を含む属性 'lis' を持っている場合、すべての要素を除外する

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

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

  13. 親LANGが属性'updated'(2015年)を持つ場合、要素PTをインポートします

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

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

  14. 要素'Description'および'Name'が要素'Definitions'または'Types'の子孫でない場合にのみインポートします

    ://*[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>translate this</Text></Child>

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

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

    • <Text>要素を<Child>内でインポートします:

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

    • 属性<CATEGORY><CONTRACT>内で値<ORIGINAL>を持つ場合、要素<CONTRACT>配下のすべての要素をインポートします

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

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

    • 属性translateが1の場合、要素<Child>をインポートします: //*[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\">Course one</ori><target xml:lang=\"lang\">Course one</target></tu>

    2. XPATH例:

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

  18. <lis translate=\"true\"> とその子孫を除き、<コメント><lis> 以外のすべての要素をインポートします:

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

  19. <コメント> を除き、属性 <... attribute2=\"Do not translate\"> を持つ要素とその子孫以外のすべての要素をインポートします:

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

  20. 属性 varNameglossName の値をインポートしますが、その祖先が属性 attribute1='translate' または attribute1='編集' を持っている場合に限ります:

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

  21. 属性 ID= BackMenu、または Time を持つ要素を除き、すべての要素と属性をインポートします:

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

    この場合、すべてをインポートして、インポートに不要な属性をロック済にする方が良い場合があります。セグメントがロック済になったら、エディタで原文を訳文にコピーして、オリジナルを翻訳に転送します。

    1. 属性 ID の値が BackMenu、または Time であるすべての要素とその子孫をロック済にします:

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

    2. 属性 ID の値が BackMenu、または Time であるすべての属性とその子孫をロック済にします

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

いくつかの外部

コンテキストメモ

コンテキストメモは、訳文セグメントにインポートできます。

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

<?xml version-"1.0" encoding="utf-8"?>
<root>
<element context1="Note in attribute of parentElement 1 - select ../@context1">
<field context2="属性1のメモ - 選択 @context2" >翻訳用1</field>
<context3>要素1のメモ - 選択 ../context3</context3>
</element>

<element context1="親要素2の属性のメモ">
<field context2="属性2のメモ">翻訳用2</field>
<context3>要素2のメモ</context3>
</element>

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

  • 自己要素の属性 (コンテキスト2): @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.