Index: CHANGES.txt
===================================================================
--- CHANGES.txt	(revision 1369310)
+++ CHANGES.txt	(working copy)
@@ -1,5 +1,8 @@
 Release 1.3 - Current Development
 
+  * MS Word: When a Word (.doc) document contains embedded files, Tika
+    now places a <div embedded="_name"/> into the XHTML so you can see
+    where in the main text the embedded document occurred. (TIKA-956)
 
 Release 1.2 - 07/10/2012
 ---------------------------------
Index: tika-parsers/src/test/java/org/apache/tika/parser/microsoft/WordParserTest.java
===================================================================
--- tika-parsers/src/test/java/org/apache/tika/parser/microsoft/WordParserTest.java	(revision 1369308)
+++ tika-parsers/src/test/java/org/apache/tika/parser/microsoft/WordParserTest.java	(working copy)
@@ -171,6 +171,22 @@
         assertTrue("Bold text wasn't contiguous: "+xml, xml.contains("F<b>oob</b>a<b>r</b>"));
     }
 
+    public void testEmbeddedNames() throws Exception {
+        String result = getXML("/test-documents/testWORD_embedded_pdf.doc").xml;
+
+        // Make sure the embedded div comes out after "Here
+        // is the pdf file" and before "Bye Bye":
+        int i = result.indexOf("Here is the pdf file:");
+        assertTrue(i != -1);
+        int j = result.indexOf("<div embedded=\"_1402837031\"/>");
+        assertTrue(j != -1);
+        int k = result.indexOf("Bye Bye");
+        assertTrue(k != -1);
+
+        assertTrue(i < j);
+        assertTrue(j < k);
+    }
+
     public void testWord6Parser() throws Exception {
         InputStream input = WordParserTest.class.getResourceAsStream(
                 "/test-documents/testWORD6.doc");
Index: tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java
===================================================================
--- tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java	(revision 1369308)
+++ tika-parsers/src/main/java/org/apache/tika/parser/microsoft/WordExtractor.java	(working copy)
@@ -29,9 +29,11 @@
 import org.apache.poi.hwpf.HWPFOldDocument;
 import org.apache.poi.hwpf.OldWordFileFormatException;
 import org.apache.poi.hwpf.extractor.Word6Extractor;
+import org.apache.poi.hwpf.model.FieldsDocumentPart;
 import org.apache.poi.hwpf.model.PicturesTable;
 import org.apache.poi.hwpf.model.StyleDescription;
 import org.apache.poi.hwpf.usermodel.CharacterRun;
+import org.apache.poi.hwpf.usermodel.Field;
 import org.apache.poi.hwpf.usermodel.Paragraph;
 import org.apache.poi.hwpf.usermodel.Picture;
 import org.apache.poi.hwpf.usermodel.Range;
@@ -188,6 +190,20 @@
 
        for(int j=0; j<p.numCharacterRuns(); j++) {
           CharacterRun cr = p.getCharacterRun(j);
+
+          // FIELD_BEGIN_MARK:
+          if (cr.text().getBytes()[0] == 0x13) {
+             Field field = document.getFields().getFieldByStartOffset(FieldsDocumentPart.MAIN,
+                                                                      cr.getStartOffset());
+             if (field != null && field.getType() == 58) {
+                // Embedded Object: add a <div
+               // embedded="name"/> so consumer can see where
+               // in the main text each embedded document
+               // occurred:
+               xhtml.startElement("div", "embedded", "_" + field.getMarkSeparatorCharacterRun(r).getPicOffset());
+               xhtml.endElement("div");
+             }
+          }
           
           if(cr.text().equals("\u0013")) {
              j += handleSpecialCharacterRuns(p, j, tas.isHeading(), pictures, xhtml);
