Page 1 of 1

Problem With Order Of Repeated Rows

PostPosted: Mon Jan 07, 2013 8:45 pm
by sreejiths_123
Hi ,

I am working with OpenDope and Docx4j to repeat 2 rows of tables n no of times .

I am attaching the template docx . ContactDoc.zip .

it contains 2 rows , contact1 and contact 2 . I needs to repeat this rows n of times in the same order ,

say

contact1
contact2
contact1
contact2
..................

my custom xml structure look like ,

<contacts>
<contact1></contact1>
<contact2></contact2>
<contact1></contact1>
<contact2></contact2>
<contact1></contact1>
</contacts>

But after Opendope Preprocess , I am not getting the desired output , all the rows of contact1 and that of contact2 gets grouped together . as in output docx file Contactout.zip attached .

why is it so . I need to maintain the order of rows . there is no option in Opendope word Addin by which I cannot group together more that one row at a time . It allows only to bind 1 row at a time.

see the code below which uses to do preprocess


Code: Select all

StringBuilder sb = generateXML();
      try{
         
         DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
            //Document doc = docBuilder.newDocument();
            InputSource is = new InputSource( new StringReader( sb.toString() ) );
            Document document = docBuilder.parse(is);
         
         
         WordprocessingMLPackage wordMLPackage =

               WordprocessingMLPackage.load(new File(System.getProperty("user.dir")
                     + System.getProperty("file.separator") + "ContactDoc.docx"));
         
         MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();
         
         String itemId = CustomXmlUtils.getCustomXmlItemId(wordMLPackage).toLowerCase();
         HashMap<String,CustomXmlDataStoragePart> parts= wordMLPackage.getCustomXmlDataStorageParts();
         
         
         
         CustomXmlDataStoragePart customXmlDataStoragePart= wordMLPackage.getCustomXmlDataStorageParts().get(itemId);
         customXmlDataStoragePart.getData().setDocument(document);
         
         
         
         
         SaveToZipFile saver = new SaveToZipFile(wordMLPackage);

                                                   // Process conditionals and repeats
                                 OpenDoPEHandler odh = new OpenDoPEHandler(wordMLPackage);
          
                                  odh.preprocess();
            
                                   OpenDoPEIntegrity odi = new OpenDoPEIntegrity();
                                  odi.process(wordMLPackage);
          
          
                                  BindingHandler.applyBindings(wordMLPackage);
          
          
                                     File save_bound = new File(System.getProperty("user.dir")
               + System.getProperty("file.separator") + "contactout.docx");
          
                               saver.save(save_bound);


}

public static StringBuilder generateXML(){
      
      StringBuilder sb = new StringBuilder();
      
      sb.append("\t\t<contacts>");
      sb.append("\t\t<contact1>");
      sb.append("</contact1>");
      sb.append("\t\t<contact2>");
      sb.append("</contact2>");
      sb.append("\t\t<contact1>");
      sb.append("</contact1>");
      sb.append("\t\t<contact2>");
      sb.append("</contact2>");
      sb.append("</contacts>");
      
      return sb;
      
   }
         




Kindly help in as early as possible to solve this ....

Re: Problem With Order Of Repeated Rows

PostPosted: Mon Jan 07, 2013 10:01 pm
by jason
Word (I tested in 2010) is happy for a content control to contain 2 rows.

So in principle, there should be no problem doing what you want if your XML was structured:

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
<contacts>
  <band>
    <contact1>b1_c1</contact1>
    <contact2>b1_c2</contact2>
  </band>
  <band>
    <contact1>b2_c1</contact1>
    <contact2>b2_c2</contact2>
  </band>
</contacts>
 
Parsed in 0.001 seconds, using GeSHi 1.0.8.4


You would put a repeating content control around the 2 rows, with the XPath saying repeat the band.

I think that would be the easiest approach. If the Word Add-In doesn't support this (I haven't tried it), you can always hand edit the docx so the content control contains both rows.

Re: Problem With Order Of Repeated Rows

PostPosted: Mon Jan 07, 2013 10:45 pm
by sreejiths_123
Thanks Jason , for the quick reply .

Is there any other tool other than Opendope Word Addin by which I can bind more one row at a time ? .

By hand edit , do you mean that to unzip the docx and edit the document.xml file ?

if so , I tried to bind one row with repeat control , and tried to paste the second row inside the <w:sdt> by editing the document.xml .

what all things we need to take care while doing this ?

below the document.xml file data I extracted from ContactDoc.zip

I tried to open after editing and ziped, I am getting , word cannot be opened , because it is corrupted .

Syntax: [ Download ] [ Hide ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 wp14">
  <w:body>
    <w:tbl>
      <w:tblPr>
        <w:tblW w:w="5000" w:type="pct"/>
        <w:tblBorders>
          <w:top w:val="single" w:sz="6" w:space="0" w:color="auto"/>
          <w:left w:val="single" w:sz="6" w:space="0" w:color="auto"/>
          <w:bottom w:val="single" w:sz="6" w:space="0" w:color="auto"/>
          <w:right w:val="single" w:sz="6" w:space="0" w:color="auto"/>
          <w:insideH w:val="single" w:sz="6" w:space="0" w:color="auto"/>
          <w:insideV w:val="single" w:sz="6" w:space="0" w:color="auto"/>
        </w:tblBorders>
        <w:tblLook w:val="0000" w:firstRow="0" w:lastRow="0" w:firstColumn="0" w:lastColumn="0" w:noHBand="0" w:noVBand="0"/>
      </w:tblPr>
      <w:tblGrid>
        <w:gridCol w:w="1562"/>
        <w:gridCol w:w="2030"/>
        <w:gridCol w:w="2876"/>
        <w:gridCol w:w="2876"/>
      </w:tblGrid>
      <w:tr w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidTr="0058320E">
        <w:trPr>
          <w:cantSplit/>
        </w:trPr>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="836" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="D9D9D9"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBodyBold"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Description</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1086" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="D9D9D9"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBodyBold"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r w:rsidRPr="00B809D9">
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Name</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1539" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="D9D9D9"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBodyBold"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r w:rsidRPr="00B809D9">
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Department</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1539" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="D9D9D9"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBodyBold"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r w:rsidRPr="00B809D9">
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Phone/Mail</w:t>
            </w:r>
          </w:p>
        </w:tc>
      </w:tr>
      <w:sdt>
        <w:sdtPr>
          <w:rPr>
            <w:b w:val="0"/>
            <w:sz w:val="22"/>
            <w:szCs w:val="22"/>
            <w:lang w:val="en-GB"/>
          </w:rPr>
          <w:id w:val="-296382334"/>
          <w:placeholder>
            <w:docPart w:val="DefaultPlaceholder_1081868574"/>
          </w:placeholder>
        </w:sdtPr>
        <w:sdtEndPr/>
        <w:sdtContent>
          <w:sdt>
            <w:sdtPr>
              <w:rPr>
                <w:b w:val="0"/>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:tag w:val="od:repeat=band"/>
              <w:id w:val="237673584"/>
              <w:placeholder>
                <w:docPart w:val="DefaultPlaceholder_1081868574"/>
              </w:placeholder>
            </w:sdtPr>
            <w:sdtEndPr/>
            <w:sdtContent>
              <w:tr w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidTr="0058320E">
                <w:trPr>
                  <w:cantSplit/>
                </w:trPr>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="836" w:type="pct"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                  </w:tcPr>
                  <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
                    <w:pPr>
                      <w:pStyle w:val="TableBodyBold"/>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                    </w:pPr>
                    <w:r>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                      <w:t xml:space="preserve">Contact </w:t>
                    </w:r>
                    <w:bookmarkStart w:id="0" w:name="_GoBack"/>
                    <w:bookmarkEnd w:id="0"/>
                    <w:r>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                      <w:t>#1</w:t>
                    </w:r>
                  </w:p>
                </w:tc>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="1086" w:type="pct"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                  </w:tcPr>
                  <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="00CA1410" w:rsidP="00CA1410">
                    <w:pPr>
                      <w:pStyle w:val="TableBody"/>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                    </w:pPr>
                    <w:r>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                      <w:t>Contact1</w:t>
                    </w:r>
                  </w:p>
                </w:tc>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="1539" w:type="pct"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                  </w:tcPr>
                  <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="00CA1410" w:rsidP="00CA1410">
                    <w:pPr>
                      <w:pStyle w:val="TableBody"/>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                    </w:pPr>
                    <w:r>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                      <w:t>Contact2</w:t>
                    </w:r>
                  </w:p>
                </w:tc>
                <w:tc>
                  <w:tcPr>
                    <w:tcW w:w="1539" w:type="pct"/>
                    <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
                  </w:tcPr>
                  <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
                    <w:pPr>
                      <w:pStyle w:val="TableBody"/>
                      <w:rPr>
                        <w:sz w:val="22"/>
                        <w:szCs w:val="22"/>
                        <w:lang w:val="en-GB"/>
                      </w:rPr>
                    </w:pPr>
                  </w:p>
                </w:tc>
              </w:tr>
            </w:sdtContent>
          </w:sdt>
        </w:sdtContent>
      </w:sdt>
      <w:tr w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidTr="0058320E">
        <w:trPr>
          <w:cantSplit/>
        </w:trPr>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="836" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBodyBold"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Contact #2</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1086" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
          </w:tcPr>
          <w:sdt>
            <w:sdtPr>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:id w:val="331114077"/>
              <w:placeholder>
                <w:docPart w:val="DefaultPlaceholder_1081868574"/>
              </w:placeholder>
              <w:text/>
            </w:sdtPr>
            <w:sdtEndPr/>
            <w:sdtContent>
              <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="00CA1410" w:rsidP="0058320E">
                <w:pPr>
                  <w:pStyle w:val="TableBody"/>
                  <w:rPr>
                    <w:sz w:val="22"/>
                    <w:szCs w:val="22"/>
                    <w:lang w:val="en-GB"/>
                  </w:rPr>
                </w:pPr>
                <w:r>
                  <w:rPr>
                    <w:sz w:val="22"/>
                    <w:szCs w:val="22"/>
                    <w:lang w:val="en-GB"/>
                  </w:rPr>
                  <w:t>Contact1</w:t>
                </w:r>
              </w:p>
            </w:sdtContent>
          </w:sdt>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1539" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="00CA1410" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBody"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
            <w:r>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
              <w:t>Contact2</w:t>
            </w:r>
          </w:p>
        </w:tc>
        <w:tc>
          <w:tcPr>
            <w:tcW w:w="1539" w:type="pct"/>
            <w:shd w:val="clear" w:color="auto" w:fill="auto"/>
          </w:tcPr>
          <w:p w:rsidR="007C3159" w:rsidRPr="00B809D9" w:rsidRDefault="007C3159" w:rsidP="0058320E">
            <w:pPr>
              <w:pStyle w:val="TableBody"/>
              <w:rPr>
                <w:sz w:val="22"/>
                <w:szCs w:val="22"/>
                <w:lang w:val="en-GB"/>
              </w:rPr>
            </w:pPr>
          </w:p>
        </w:tc>
      </w:tr>
    </w:tbl>
    <w:p w:rsidR="00DC2FD6" w:rsidRDefault="00DC2FD6"/>
    <w:sectPr w:rsidR="00DC2FD6">
      <w:pgSz w:w="12240" w:h="15840"/>
      <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>
      <w:cols w:space="720"/>
      <w:docGrid w:linePitch="360"/>
    </w:sectPr>
  </w:body>
</w:document>
 
Parsed in 0.034 seconds, using GeSHi 1.0.8.4

Re: Problem With Order Of Repeated Rows

PostPosted: Tue Jan 15, 2013 6:51 pm
by jason
You're doing it wrong.

The document.xml you posted has 2 content controls wrapped around a single table row.

I guess 2 should work, but you only need the one with the od:repeat w:tag.

You should have 2 w:tr elements inside it.

I expect Word gave an error because you had too many table cells in your w:tr.