How to: Validate an Office Open XML Package against a Collection of Schemas by Using the Open XML API

This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

The Office Open XML Package specification defines a set of XML files that contain the content and define the relationships for all of the parts stored in a single package. These packages combine the parts that make up the document files for Microsoft® Office Excel® 2007, Microsoft Office PowerPoint® 2007, and Microsoft Office Word 2007. The Open XML Application Programming Interface (API) allows you to create packages and manipulate the files that make up the packages. This topic walks through the code and steps to use a schema to validate an Office Open XML package in Word 2007, although the steps are the same for each of the three 2007 Microsoft Office system programs that support the Office Open XML Format.

NoteNote

The code samples in this topic are in Microsoft Visual Basic® .NET and Microsoft Visual C#®. You can use them in an add-in created in Microsoft Visual Studio® 2008. For more information about how to create an add-in in Visual Studio 2008see Getting Started with the Open XML Format SDK 1.0.

Validating an Office Open XML Package

The Open XML API provides an overload method to the ValidateXml method that receives the SchemaCollection parameter and ValidationEventHandler parameter as input. In the following code, you validate the XML content of the MainDocumentPart part of a WordprocessingDocument package by calling the ValidateXml method of MainDocumentPart part. You pass a list of schemas to the ValidateXml method as an input parameter.

' How to validate the contents of a document part against
' a collection of schemas.
Public Shared Sub ValidDocumentContent(document As String,
                                       schemaList As List (Of String))
   Dim schemas As New XmlSchemaSet()
   For Each schemaUri As String In schemaList
      schemas.Add(Nothing, schemaUri)
   Next schemaUri
   Using wordDoc As WordprocessingDocument = 
                    WordprocessingDocument.Open(document, False)
      wordDoc.MainDocumentPart.ValidateXml(schemas, Nothing)
   End Using
End Sub
// How to validate the contents of a document part against
// a collection of schemas.
public static void ValidDocumentContent(string document,
                                        List<string> schemaList) {
   XmlSchemaSet schemas = new XmlSchemaSet();
   foreach (string schemaUri in schemaList) {
      schemas.Add(null, schemaUri);
   }
   using (WordprocessingDocument wordDoc = 
          WordprocessingDocument.Open(document, false)) {
      wordDoc.MainDocumentPart.ValidateXml(schemas, null);
   }
}

To add an image part

  1. First, you pass in parameters representing the path to and the name of the source Word 2007 document as well as a list of schemas.

  2. Then, you open the document as a WordprocessingDocument object.

  3. Next, you create a reference to the MainDocumentPart part and call the ValidateXml method.

  4. Finally, the ValidateXml method uses an XmlSchemaSet to validate the XML contents of the MainDocumentPart part.

    NoteNote

    The Validate method does not validate the structure of an Office Open XML Package. For more information, see How to: Validate an Office Open XML Package by Using the Open XML API.