3

一些用户反复面临文档损坏问题。

我们有一个使用 Webdav 在服务器上存储 Word 文档的应用程序。在服务器上访问和编辑这些文档的用户可能在 office 2007 和 office 2010 上。大多数文档是共享的,并且可以由 office 2007 和 office 2010 用户点击进行编辑。

许多用户遇到文档损坏问题并出现以下错误。==>“无法打开文件 xxx,因为”内容有问题“详细信息:没有可用的错误详细信息。位置部分:/word/document.xml 行:1 列 0

在为此文档格式化 document.xml 文件后,我发现错误指向 line => <wp:docPr id="1026" />

有问题的 XML 节点位于下面提供的 XML 节点中。所有损坏的文档都具有相同的行为。它们都指向同一个 XML 标签。如果我取出完整的节点,文档就会打开。

 <w:drawing>
          <wp:inline distT="0" distB="0" distL="0" distR="0">
            <wp:extent cx="4572638" cy="3429479" />
            <wp:effectExtent l="0" t="0" r="0" b="0" />
            <wp:docPr id="1026" />
            <wp:cNvGraphicFramePr>
              <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1" />
            </wp:cNvGraphicFramePr>
            <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
              <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
                <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
                  <pic:nvPicPr>
                    <pic:cNvPr id="0" />
                    <pic:cNvPicPr>
                      <a:picLocks noChangeAspect="1" />
                    </pic:cNvPicPr>
                  </pic:nvPicPr>
                  <pic:blipFill>
                    <a:blip r:embed="rId4" />
                    <a:stretch>
                      <a:fillRect />
                    </a:stretch>
                  </pic:blipFill>
                  <pic:spPr>
                    <a:xfrm>
                      <a:off x="0" y="0" />
                      <a:ext cx="4572638" cy="3429479" />
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                      <a:avLst />
                    </a:prstGeom>
                  </pic:spPr>
                </pic:pic>
              </a:graphicData>
            </a:graphic>
          </wp:inline>
        </w:drawing>

在我的本地机器上保存文档并使用打开和修复选项打开它后,有问题的标签看起来像这样 => <wp:docPr id="1026" name="Picture 1026"/> 并且完整的节点如下所示。

 <w:drawing>
          <wp:inline distT="0" distB="0" distL="0" distR="0">
            <wp:extent cx="4572638" cy="3429479"/>
            <wp:effectExtent l="0" t="0" r="0" b="0"/>
            <wp:docPr id="1026" name="Picture 1026"/>
            <wp:cNvGraphicFramePr>
              <a:graphicFrameLocks xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" noChangeAspect="1"/>
            </wp:cNvGraphicFramePr>
            <a:graphic xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
              <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/picture">
                <pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
                  <pic:nvPicPr>
                    <pic:cNvPr id="0" name=""/>
                    <pic:cNvPicPr>
                      <a:picLocks noChangeAspect="1"/>
                    </pic:cNvPicPr>
                  </pic:nvPicPr>
                  <pic:blipFill>
                    <a:blip r:embed="rId8"/>
                    <a:stretch>
                      <a:fillRect/>
                    </a:stretch>
                  </pic:blipFill>
                  <pic:spPr>
                    <a:xfrm>
                      <a:off x="0" y="0"/>
                      <a:ext cx="4572638" cy="3429479"/>
                    </a:xfrm>
                    <a:prstGeom prst="rect">
                      <a:avLst/>
                    </a:prstGeom>
                  </pic:spPr>
                </pic:pic>
              </a:graphicData>
            </a:graphic>
          </wp:inline>
        </w:drawing>

请帮我解决这个问题。

4

1 回答 1

1

简短的回答是“名称”是 docPr 和 cNvPr 元素的必需属性:

<xsd:complexType name="CT_PictureNonVisual">
  <xsd:sequence>
    <xsd:element name="cNvPr"    type="a:CT_NonVisualDrawingProps"/>
    ...
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="CT_Inline">
  <xsd:sequence>
    ...
    <xsd:element name="docPr" type="a:CT_NonVisualDrawingProps"/>
    ...
  </xsd:sequence>
  ...
</xsd:complexType>

<xsd:complexType name="CT_NonVisualDrawingProps">
  ...
  <xsd:attribute name="id"   type="ST_DrawingElementId" use="required"/>
  <xsd:attribute name="name" type="xsd:string"          use="required"/>
  ...
</xsd:complexType>

我将不得不猜测该属性在过程中的哪个位置被遗漏或删除。但没有它,document.xml 部分的架构无效,这将解释所需的修复步骤。

于 2013-12-26T04:10:37.370 回答