使用命名空间转换 XML 属性的 ITS 规则
ITS rule to translate a XML attribute using namespace
我正在尝试使用 itstool 来翻译 XML 文件中的某些属性,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="settings" dlg:left="106" dlg:top="80" dlg:width="283" dlg:height="214" dlg:closeable="true" dlg:moveable="true" dlg:withtitlebar="false">
<dlg:bulletinboard>
<dlg:textfield dlg:id="token" dlg:tab-index="9" dlg:left="48" dlg:top="42" dlg:width="216" dlg:height="40" dlg:multiline="true"/>
<dlg:text dlg:id="label1" dlg:tab-index="0" dlg:left="5" dlg:top="25" dlg:width="40" dlg:height="14" dlg:value="Save path" dlg:align="right" dlg:valign="center"/>
<dlg:text dlg:id="label5" dlg:tab-index="7" dlg:left="5" dlg:top="190" dlg:width="40" dlg:height="14" dlg:value="URL" dlg:align="right" dlg:valign="center"/>
</dlg:bulletinboard>
</dlg:window>
此处可翻译部分为dlg:value
。
目前,我尝试过的规则是 select 任何句子都不能翻译:
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
<its:translateRule selector="//dlg:text/@value" translate="yes"/>
</its:rules>
似乎是我的 xpath select或者这里不正确。
编辑:问题似乎出在此处的命名空间dlg
。
改变
//dlg:text/@value
至
//dlg:text/@dlg:value
考虑 @value
属性上的命名空间,该属性不会自动从其元素的命名空间继承。
感谢@alejandro 和@kjhughes,这个问题已经解决了。
我必须在 ITS 规则的 header 中声明命名空间(在 dlg:text
中与冒号一起使用)。
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0"
xmlns:dlg="http://openoffice.org/2000/dialog">
<its:translateRule selector="//dlg:text/dlg:@value translate="yes"/>
</its:rules>
我正在尝试使用 itstool 来翻译 XML 文件中的某些属性,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dlg:window PUBLIC "-//OpenOffice.org//DTD OfficeDocument1.0//EN" "dialog.dtd">
<dlg:window xmlns:dlg="http://openoffice.org/2000/dialog" xmlns:script="http://openoffice.org/2000/script" dlg:id="settings" dlg:left="106" dlg:top="80" dlg:width="283" dlg:height="214" dlg:closeable="true" dlg:moveable="true" dlg:withtitlebar="false">
<dlg:bulletinboard>
<dlg:textfield dlg:id="token" dlg:tab-index="9" dlg:left="48" dlg:top="42" dlg:width="216" dlg:height="40" dlg:multiline="true"/>
<dlg:text dlg:id="label1" dlg:tab-index="0" dlg:left="5" dlg:top="25" dlg:width="40" dlg:height="14" dlg:value="Save path" dlg:align="right" dlg:valign="center"/>
<dlg:text dlg:id="label5" dlg:tab-index="7" dlg:left="5" dlg:top="190" dlg:width="40" dlg:height="14" dlg:value="URL" dlg:align="right" dlg:valign="center"/>
</dlg:bulletinboard>
</dlg:window>
此处可翻译部分为dlg:value
。
目前,我尝试过的规则是 select 任何句子都不能翻译:
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0">
<its:translateRule selector="//dlg:text/@value" translate="yes"/>
</its:rules>
似乎是我的 xpath select或者这里不正确。
编辑:问题似乎出在此处的命名空间dlg
。
改变
//dlg:text/@value
至
//dlg:text/@dlg:value
考虑 @value
属性上的命名空间,该属性不会自动从其元素的命名空间继承。
感谢@alejandro 和@kjhughes,这个问题已经解决了。
我必须在 ITS 规则的 header 中声明命名空间(在 dlg:text
中与冒号一起使用)。
<?xml version="1.0"?>
<its:rules xmlns:its="http://www.w3.org/2005/11/its" version="1.0"
xmlns:dlg="http://openoffice.org/2000/dialog">
<its:translateRule selector="//dlg:text/dlg:@value translate="yes"/>
</its:rules>