导入工具

XPath (TMS)

文本由 Phrase Language AI 从英语机器翻译而得。

XPath 代表 XML 路径语言。它可用于浏览 XML 文档中的元素和属性。如果是 XPATH 新手,请先查看 XPath 教程 并学习官方 XPATH 文档

支持的 XPath 1.0 子集有以下限制:

  • 同步轴

    • 支持

      祖先,祖先或自我,属性,子,后代,后代或自我

    • 不支持

      following, previous, following-sibling, previous-sibling, namespace

  • 谓语

    • 支持

      当前节点或祖先节点及其属性(属性、命名空间)的条件

    • 不支持(例如)

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

基本规则

  • 在路径中使用///

  • 名称中使用单引号“”

  • 使用管道 | 合并请求

  • 名称区分大小写: <Body><body> 不同

示例

XPath 示例 1=""和""%1!XPath 示例 2=""(带命名空间)是以下文件的示例:

  1. 导入所有元素和所有属性

    //* | //@*

  2. 导入所有元素和 attribute1 的值

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

    //* | //@attribute1

  3. 导入 Child 元素的所有后代

    //Child//*

  4. 仅当属性 translate='true'时导入元素列表及其后代 

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

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

  5. 如果元素属性为 translate='true',则导入所有元素和后代

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

  6. 导入元素 Data 中属性 Text 的值

    <数据文本="用于翻译的文本">

    //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. 排除所有包含“链接”的元素

    (<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 年“已更新”属性,则导入元素 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') 或 (name ()='Name')]

  15. 带命名空间的 XML

    <root xmlns:xhtml="http://www.w3.org/1999/xhtml"><Child><Text>translate this</Text></Child>

    • 导入 <Child> 中所有元素:

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

    • <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">课程一</ori><target=""xml:lang="lang">课程一</target></tu>

    2. XPATH 示例:

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

  18. 导入除 <备注><列表> 之外的所有元素,除非 <lis translate="true"> 及其后代:

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

  19. 导入除<备注>和属性为<... attribute2="不翻译">的元素及其后代以外的所有元素:

    //*[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. 导入所有元素和属性,但属性 Name= BackMenuTime 的元素除外:

    //*[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 with values 的所有元素:返回菜单时间及其后代:

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

    2. 用值锁定 Name 的所有属性:返回菜单时间及其后代

      //*[@名称='返回'或 @名称='菜单'或 @名称='时间']//@*

一些外部示例

上下文注释

上下文注释可以导入已翻译的句段。

该示例有三个示例:

<?xml version-"1.0" encoding="utf-8"?>
<root>
<元素上下文1="父元素 1 属性中的注释 - 选择 ../@context1">
<field context2="属性 1 中的注释 - 选择 @context2" >用于翻译1</field>
<context3>元素1中的注释 - 选择 ../context3</context3>
</element>

<元素上下文1="父元素 2 属性中的注释">
<field context2="属性2中的注释">用于翻译2</field>
<context3>元素2中的注释</context3>
</element>

</root>
  • 父元素中的属性(上下文1):../@context1

  • 自我元素(context2)中的属性: @context2

  • 同胞元素(上下文3):../context3

如果导入 Elements&Attributes: //*,上下文注释的内容也将被导入到源句段。排除上下文注释元素/属性在元素和属性中的常规导入。

这篇文章有帮助吗?

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.