当前位置: 首页 > 知识库问答 >
问题:

DOCX w:t(文本)元素与多个w:r(运行)元素交叉?

苏彭薄
2023-03-14

我们已经编写了一个软件,它从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.departy#01]很好地嵌入到一个w:t节点中,这很完美,但在这下面,有一个w:t节点包含代码的开头,[CAN:ObjPronoun.partney#01但是w:t标记结束,关闭]在下一次运行中。

用户体验是,段落的开头呈现得很好,[CAN:Forename.departy#01]呈现为某人的名字。但是,如果用户在Word文档中看到[CAN:ObjPronoun.decorney#01],并且看起来非常好,因此他们希望它也被呈现为一些文本,那么我们就看不到该代码,因为它被拆分为多次运行,所以呈现的文档仍然包含代码,而不是它的替换值。

现在回答我的问题。。。。

有人能解释为什么会这样吗?如果用户只是简单地输入代码就可以了,但如果他们回去摆弄段落,这种情况似乎就会发生。我们是否可以告诉用户“不要做这个”或“不要做那个”,或“确保你做这样那样的事情”。或者Word中是否有防止这种情况发生的选项?

用户是否可以通过MS Word前端专门采取措施来更正此类段落?目前,我们正在指示他们突出显示整个段落,将其剪切,粘贴到记事本中(在记事本中,它会丢失用户修改历史记录中留下的所有奇怪碎片),再次从记事本中复制,并将其粘贴回Word。对行得通。但是有点。。。至少可以说,这并不令人满意。因此,如果有一个本地单词的方法来实现同样的事情,那将是非常优雅的。。。。

共有2个答案

贝浩歌
2023-03-14

与此同时,回到牧场,我实际上找到了一个非常简单的解决问题的方法。

用户可以识别不能正常工作的段落,因为在处理后,它仍然包含代码,而不是它们的替换值。

要修改段落,他们只需要使用格式画师。选择他们喜欢的格式,将其应用于整个有问题的段落,鲍勃的叔叔,问题就解决了。

郎成龙
2023-03-14

这里的问题既不是用户在Word中的行为,也不是跨w:r元素的文本表示。问题在于,软件天真地假设要替换的文本必须存在于单个w:r元素中。这只是一个错误的假设。

你的选择包括

  1. 修复替换程序对跨运行分区不敏感的问题
  2. 规范OOXML以满足脆性替换程序的需要
  3. 使用另一种OOXML构造,例如内容控件,而不是文本作为占位符
 类似资料:
  • 我是最新的办公室编程人员。我找不到任何描述运行中可能放置多少文本元素的文档。例如,我生成了这个xml,并将其直接放到“document.xml”中: 文档打开时没有错误。但在MS Word中保存文档后,此xml将替换为: 我的问题:用户有没有办法生成几个

  • 我有这个网站:http://embed.plnkr.co/Bs5iDqtXSSnvye2ORI6k/preview 代码: 和以下规格: 这种配置: 当我运行Protractor时,会出现以下错误: StaleElementReferenceError:过时元素引用:元素未附加到页面文档(会话信息:chrome=43.0.2357.81) (驱动程序信息:chronidriver=2.15.322

  • HTML中,根据逻辑来划分和识别文本在网页中所起的作用,给文本添加内涵,即所谓文本语义元素。 除了标题元素之外,HTML还提供了许多其他的元素,来为内容作上标记,以便能够识别它们在网页中所起的作用。其中最常见的有表示文本段落的 p 元素,表示换行的 br 元素等。还有其他鲜为人知的,用来表示非常特殊的网页内容的元素,如,kbd表示由键盘输入的文本。 HTML5中的文本语义元素及其功能描述和示例见表

  • 问题内容: 是否可以在CSS中选择多个具有某个特定类,id等父的元素?例如: 如果不是,是否有办法选择该元素的所有子元素? 问题答案: 是否可以在CSS中选择多个具有某个特定类,id等父的元素? 当前,不幸的是,并非没有复制整个父选择器并指定所有后代,而是1: 直到选择器3最终确定后,他们才提出了伪类表示法来进行此操作,直到最近,基本实现才开始出现。 简而言之,现在已成为标准的伪类称为。在遥远的将

  • 此插件通过创建几个div元素来表示选择区域,包括边框、可调整手柄以及未选择的区域。这些元素已经指定了特定的类名了,所以你可以通过CSS或者jQuery选择器来获得并操作它们。 类名 指定给的对象 imgareaselect-selection 选择的区域 imgareaselect-border1 imgareaselect-border2 imgareaselect-border3 imgare

  • 本文向大家介绍块元素和行元素区别?相关面试题,主要包含被问及块元素和行元素区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 块元素:独占一行,并且有自动填满父元素,可以设置margin和pading以及高度和宽度 行元素:不会独占一行,width和height会失效,并且在垂直方向的padding和margin会失