我们编写了一个软件,可以从 Word 文档的内部 XML 文件中处理 XML,并用替换值替换某些代码。有时我们发现此类代码在多次运行之间被破坏。以下是我们有时会遇到的此类情况的示例:
<w:r>
<w:rPr>
<w:szCs w:val="24"/>
</w:rPr>
<w:t xml:space="preserve">After all, if you trust [CAN:Forename.ATTORNEY#01] enough to give</w:t>
</w:r>
<w:r>
<w:rPr>
<w:color w:val="000000"/>
</w:rPr>
<w:t>[CAN:ObjPronoun.ATTORNEY#01</w:t>
</w:r>
<w:r>
<w:rPr>
<w:szCs w:val="24"/>
</w:rPr>
<w:t xml:space="preserve">] power of attorney, you should trust </w:t>
</w:r>
<w:r>
<w:rPr>
<w:color w:val="000000"/>
</w:rPr>
<w:t>[CAN:ObjPronoun.ATTORNEY#01</w:t>
</w:r>
<w:r>
<w:rPr>
<w:szCs w:val="24"/>
</w:rPr>
<w:t>] enough to make the right decisions at the time.</w:t>
</w:r>
该段落开头很好,有完整的代码[CAN:Forename.ATTORNEY#01]
很好地嵌入到一个w:t
节点,这很完美,但是在它下面,有一个w:t
包含代码开头的节点,[CAN:ObjPronoun.ATTORNEY#01
但随后w:t
标签结束,结束]
是在下一次运行中。
The 用户体验是段落的开头渲染得很好,因为[CAN:Forename.ATTORNEY#01]
被呈现为某人的名字。但用户看到的地方[CAN:ObjPronoun.ATTORNEY#01]
在他们的Word文档中,看起来非常好them因此他们希望也将其呈现为某些文本,我们看不到该代码,因为它被分割为多次运行,因此呈现的文档仍然包含代码,而不是其替换值。
现在回答我的问题......
有人能解释为什么会发生这种情况吗?如果用户只是输入代码就可以了,但是如果他们返回并摆弄该段落,就会出现这种情况。我们是否可以以“不要这样做”或“不要那样做”或“确保你这样做”之类的方式告诉用户什么?或者Word中是否有选项可以防止这种情况发生?
用户是否可以专门通过 MS Word 前端执行某项操作纠正这些段落?目前,我们正在指示他们突出显示整个段落,剪切它,将其粘贴到记事本中(其中它会丢失用户修改历史记录中留下的所有奇怪的碎屑),再次从记事本中复制并将其粘贴回 Word 中。是的。这样可行。但这有点...不满意, 至少可以说。因此,如果有一个本地 Word 方法来实现同样的事情,那就更优雅了......
它既不是用户在 Word 中的行为,也不是文本在 Word 中的表示形式w:r
这就是问题所在。问题在于软件天真地假设要替换的文本必须存在于单个文本中。w:r
元素。就其本身而言,这只是一个错误的假设。
您的选择包括
- 修复替换程序,使其对跨运行分区不敏感。
- 规范化 OOXML 以满足脆弱替换程序的需要。
- 使用其他 OOXML 构造(例如内容控件)而不是文本作为占位符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)