diff options
Diffstat (limited to 'xmerge/source/palmtests/qa/comparator')
29 files changed, 7040 insertions, 0 deletions
diff --git a/xmerge/source/palmtests/qa/comparator/OfficeZip.java b/xmerge/source/palmtests/qa/comparator/OfficeZip.java new file mode 100644 index 000000000000..496949cf3d17 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/OfficeZip.java @@ -0,0 +1,241 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.util.List; +import java.util.ListIterator; +import java.util.LinkedList; +import java.util.zip.ZipInputStream; +import java.util.zip.ZipOutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.CRC32; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.IOException; +import java.io.ByteArrayOutputStream; +import org.openoffice.xmerge.util.Debug; + +/** + * Class used by OfficeDocument to handle zip reading and writing, + * as well as storing zip entries. + * + * @author Herbie Ong + */ + +class OfficeZip { + + /** file name of the xml file in a zipped document. */ + private final static String XMLFILE = "content.xml"; + + private final static int BUFFERSIZE = 1024; + + private List entryList = null; + + private int contentIndex = -1; + + private String filename = null; + + private class Entry { + + ZipEntry zipEntry = null; + byte bytes[] = null; + } + + /** + * Constructor + * + * @param filename Full Path to Zip file to process + * + */ + public OfficeZip(String filename) { + this.filename = filename; + } + + + /** + * Read each zip entry in the given InputStream object + * and store in entryList both the ZipEntry object as well + * as the bits of each entry. Return the bytes for the + * entry of XMLFILE. + * + * @param is InputStream object to read from + * @return byte[] byte array of XML file + * @throws IOException if any I/O error occurs + */ + + byte[] read(InputStream is) throws IOException { + + ZipInputStream zis = new ZipInputStream(is); + ZipEntry ze = null; + int i = -1; + + entryList = new LinkedList(); + + while ((ze = zis.getNextEntry()) != null) { + + String name = ze.getName(); + + Entry entry = new Entry(); + entry.zipEntry = ze; + + Debug.log(Debug.TRACE, "reading entry: " + name); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + + int len = 0; + byte bytes[] = new byte[BUFFERSIZE]; + + while ((len = zis.read(bytes)) > 0) { + baos.write(bytes, 0, len); + } + + entry.bytes = baos.toByteArray(); + + entryList.add(entry); + + i++; + + if (isContentXML(name)) { + contentIndex = i; + } + } + + if (contentIndex == -1) { + throw new IOException(XMLFILE + " not found."); + } + + Entry contentEntry = (Entry) entryList.get(contentIndex); + + return contentEntry.bytes; + } + + /** + * Write out the XMLFILE as a zip into the OutputStream object. + * + * If a zip inputstream was previously read, then use + * those zip contents to recreate the zip, except for XMLFILE, + * update it using the new content from xmlBytes. + * + * If there was no zip inputstream previously read, write + * XMLFILE out into the zip outputstream. + * + * @param os OutputStream object to write zip + * @param xmlBytes bytes of XMLFILE + * @throws IOException if any I/O errors occur. + */ + + void write(OutputStream os, byte xmlBytes[]) throws IOException { + + ZipOutputStream zos = new ZipOutputStream(os); + + // if read was not invoked previously, store the bytes directly. + if (contentIndex == -1) { + + Debug.log(Debug.TRACE, "Writing out " + XMLFILE + " into zip."); + + ZipEntry ze = new ZipEntry(XMLFILE); + ze.setSize(xmlBytes.length); + + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(xmlBytes); + ze.setCrc(crc.getValue()); + + ze.setTime(System.currentTimeMillis()); + ze.setMethod(ZipEntry.DEFLATED); + + zos.putNextEntry(ze); + zos.write(xmlBytes); + + } else { + + saveEntries(zos, xmlBytes); + } + + zos.close(); + } + + /** + * Used by write method if there was a zip inputstream + * previously read. It would write out each ZipEntry of + * the previously read zip, except for XMLFILE, it would + * update it with new values and with the content from + * xmlBytes. + * + * @param os OutputStream object to write zip + * @param xmlBytes bytes of XMLFILE + * @throws ZipException if any zip I/O errors occur. + */ + + private void saveEntries(ZipOutputStream zos, byte xmlBytes[]) + throws IOException { + + Debug.log(Debug.TRACE, "Writing out the following entries into zip."); + + ListIterator iterator = entryList.listIterator(); + + while (iterator.hasNext()) { + + Entry entry = (Entry) iterator.next(); + ZipEntry ze = entry.zipEntry; + + String name = ze.getName(); + + Debug.log(Debug.TRACE, "... " + name); + + if (isContentXML(name)) { + + // set new values for this ZipEntry + + ZipEntry zipEntry = new ZipEntry(name); + + zipEntry.setMethod(ze.getMethod()); + zipEntry.setSize(xmlBytes.length); + + CRC32 crc = new CRC32(); + crc.reset(); + crc.update(xmlBytes); + zipEntry.setCrc(crc.getValue()); + + zipEntry.setTime(System.currentTimeMillis()); + + zos.putNextEntry(zipEntry); + zos.write(xmlBytes); + + } else { + + zos.putNextEntry(ze); + zos.write(entry.bytes); + } + } + } + + private boolean isContentXML(String name) { + + String lname = name.toLowerCase(); + return lname.equals(XMLFILE); + } +} diff --git a/xmerge/source/palmtests/qa/comparator/PDBDecoder.java b/xmerge/source/palmtests/qa/comparator/PDBDecoder.java new file mode 100644 index 000000000000..8f4dec82f4b5 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/PDBDecoder.java @@ -0,0 +1,135 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + +import java.io.RandomAccessFile; +import java.io.IOException; + + +/** + * <p>Provides functionality to decode a pdb formatted file into + * a <code>PalmDB</code> object given a file input stream</p> + * + * <p>Sample usage:</p> + * + * <p><blockquote><pre> + * PDBDecoder decoder = new PDBDecoder("sample.pdb"); + * PalmDB palmDB = decoder.parse(); + * </pre></blockquote></p> + * + * <p>Refer to the + * <a href="http://starlite.eng/zensync/eng/converters/palmfileformats.pdf"> + * Palm file format specification</a> for details on the pdb format.</p> + * + * <p>This decoder has the following assumptions on the pdb file ...</p> + * <ol> + * <li><p>There is only one RecordList section in the pdb.</p></li> + * <li><p>The record indices in the RecordList are sorted in order, i.e. the + * first record index refers to record 0, and so forth.</p></li> + * <li><p>The raw records in the record section are sorted as well in order, + * i.e. first record comes ahead of second record, etc.</p></li> + * </ol> + * + * Other decoders assume these as well. + * + * @author Herbie Ong + * @see PalmDB + * @see PDBHeader + * + * @author Herbie Ong + */ + +public final class PDBDecoder { + + /** + * <p>This method decodes a pdb file into a PalmDB object.</p> + * + * <p>First, read in the header data using <code>PDBHeader</code>'s + * <code>read</code> method</p>. Next, read in the record list + * section. Store the record offsets for use when parsing the records. + * Based on these offsets, read in each record's bytes and store + * each in a <code>Record</code> object. Lastly, create a + * <code>PalmDB</code> object with the read in <code>Record</code>s. + * + * @param fileName pdb file name + * @throws IOException if I/O error occurs + */ + + public PalmDB parse(String fileName) throws IOException { + + RandomAccessFile file = new RandomAccessFile(fileName, "r"); + + // read the pdb header + PDBHeader header = new PDBHeader(); + header.read(file); + + Record recArray[] = new Record[header.numRecords]; + + if (header.numRecords != 0) { + + // read in the record indices + offsets + + int recOffset[] = new int[header.numRecords]; + + for (int i = 0; i < header.numRecords; i++) { + + recOffset[i] = file.readInt(); + int attr = file.readInt(); // read in attribute. + } + + // read the records + + int len = 0; + byte[] bytes = null; + + int lastIndex = header.numRecords - 1; + + for (int i = 0; i < lastIndex; i++) { + + file.seek(recOffset[i]); + len = recOffset[i+1] - recOffset[i]; + bytes = new byte[len]; + file.readFully(bytes); + recArray[i] = new Record(bytes); + } + + // last record + file.seek(recOffset[lastIndex]); + len = (int) file.length() - recOffset[lastIndex]; + bytes = new byte[len]; + file.readFully(bytes); + recArray[lastIndex] = new Record(bytes); + } + + file.close(); + + // create PalmDB and return it + PalmDB pdb = new PalmDB(header.pdbName, recArray); + return pdb; + } +} + diff --git a/xmerge/source/palmtests/qa/comparator/PDBHeader.java b/xmerge/source/palmtests/qa/comparator/PDBHeader.java new file mode 100644 index 000000000000..216fd8bd9351 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/PDBHeader.java @@ -0,0 +1,153 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +/** + * <p>Class used only internally by <code>PDBEncoder</code> and + * <code>PDBDecoder</code> to store, read and write a pdb header.</p> + * + * <p>Note that fields are intended to be accessible only at the + * package level.</p> + * + * <p>Some of the fields are internally represented using a + * larger type since Java does not have unsigned types. + * Some are not since they are not relevant for now. + * The <code>read</code> and <code>write</code> methods should + * handle them properly.</p> + * + * @author Herbie Ong + */ + +final class PDBHeader { + + /** name of the database. 32 bytes. */ + byte[] pdbName = null; + + /** flags for the database. Palm UInt16. Unsignedness should be irrelevant. */ + short attribute = 0; + + /** application-specific version for the database. Palm UInt16 */ + int version = 0; + + /** date created. Palm UInt32 */ + long creationDate = 0; + + /** date last modified. Palm UInt32 */ + long modificationDate = 0; + + /** date last backup. Palm UInt32 */ + long lastBackupDate = 0; + + /** + * incremented every time a record is + * added, deleted or modified. Palm UInt32. + */ + long modificationNumber = 0; + + /** optional field. Palm UInt32. Unsignedness should be irrelevant. */ + int appInfoID = 0; + + /** optional field. Palm UInt32. Unsignedness should be irrelevant. */ + int sortInfoID = 0; + + /** database type id. Palm UInt32. Unsignedness should be irrelevant. */ + int typeID = 0; + + /** database creator id. Palm UInt32. Unsignedness should be irrelevant. */ + int creatorID = 0; + + /** ??? */ + int uniqueIDSeed = 0; + + /** see numRecords. 4 bytes. */ + int nextRecordListID = 0; + + /** + * number of records stored in the database header. + * If all the record entries cannot fit in the header, + * then nextRecordList has the local ID of a + * recordList that contains the next set of records. + * Palm UInt16. + */ + int numRecords = 0; + + /** + * Read in the data for the pdb header. Need to + * preserve the unsigned value for some of the fields. + * + * @param di a DataInput object + * @throws IOException if I/O error occurs + */ + + public void read(DataInput in) throws IOException { + + pdbName = new byte[PalmDB.NAME_LENGTH]; + in.readFully(pdbName); + attribute = in.readShort(); + version = in.readUnsignedShort(); + creationDate = ((long) in.readInt()) & 0xffffffffL; + modificationDate = ((long) in.readInt()) & 0xffffffffL; + lastBackupDate = ((long) in.readInt()) & 0xffffffffL; + modificationNumber = ((long) in.readInt()) & 0xffffffffL; + appInfoID = in.readInt(); + sortInfoID = in.readInt(); + creatorID = in.readInt(); + typeID = in.readInt(); + uniqueIDSeed = in.readInt(); + nextRecordListID = in.readInt(); + numRecords = in.readUnsignedShort(); + } + + /** + * Write out pdb header data. + * + * @param out a DataOut object + * @throws IOException if I/O error occurs + */ + + public void write(DataOutput out) throws IOException { + + out.write(pdbName); + out.writeShort(attribute); + out.writeShort(version); + out.writeInt((int) creationDate); + out.writeInt((int) modificationDate); + out.writeInt((int) lastBackupDate); + out.writeInt((int) modificationNumber); + out.writeInt(appInfoID); + out.writeInt(sortInfoID); + out.writeInt(typeID); + out.writeInt(creatorID); + out.writeInt(uniqueIDSeed); + out.writeInt(nextRecordListID); + out.writeShort(numRecords); + } +} + diff --git a/xmerge/source/palmtests/qa/comparator/PDBUtil.java b/xmerge/source/palmtests/qa/comparator/PDBUtil.java new file mode 100644 index 000000000000..bdf8a07d9360 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/PDBUtil.java @@ -0,0 +1,100 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +/** + * Contains common static methods and contants for use within the package. + * + * @author Herbie Ong + */ + +public final class PDBUtil { + + /** difference in seconds from Jan 01, 1904 to Jan 01, 1970 */ + final static long TIME_DIFF = 2082844800; + + /** encoding scheme used */ + final static String ENCODING = "8859_1"; + + /** size of a pdb header in bytes */ + final static int HEADER_SIZE = 78; + + /** + * This method converts a 4 letter string into the Palm ID integer. + * + * It is normally used to convert the Palm creator ID string into + * the integer version of it. Also use for data types, etc. + * + * @param s 4 character string. + * @return int Palm ID representing the string. + * @throws ArrayIndexOutOfBoundsException if string parameter + * contains less than 4 characters. + */ + + public static int intID(String s) { + + int id = -1; + int temp = 0; + + // grab the first char and put it in the high bits + // note that we only want 8 lower bits of it. + temp = (int) s.charAt(0); + id = temp << 24; + + // grab the second char and add it in. + temp = ((int) s.charAt(1)) & 0x00ff; + id += temp << 16; + + // grab the second char and add it in. + temp = ((int) s.charAt(2)) & 0x00ff; + id += temp << 8; + + // grab the last char and add it in + id += ((int) s.charAt(3)) & 0x00ff; + + return id; + } + + /** + * This method converts an integer into a String given + * the Palm ID format. + * + * @param i Palm id. + * @return String string representation. + */ + + public static String stringID(int i) { + + char ch[] = new char[4]; + ch[0] = (char) (i >>> 24); + ch[1] = (char) ((i >> 16) & 0x00ff); + ch[2] = (char) ((i >> 8) & 0x00ff); + ch[3] = (char) (i & 0x00ff); + + return new String(ch); + } +} + diff --git a/xmerge/source/palmtests/qa/comparator/PalmDB.java b/xmerge/source/palmtests/qa/comparator/PalmDB.java new file mode 100644 index 000000000000..e15e7fefa5ff --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/PalmDB.java @@ -0,0 +1,348 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.OutputStream; +import java.io.InputStream; +import java.io.DataOutputStream; +import java.io.DataInputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +/** + * <p>This class contains data for a single Palm database for use during + * a conversion process.</p> + * + * <p>It contains zero or more <code>Record</code> objects stored in an + * array. The index of the <code>Record</code> object in the array is + * the record id or number for that specific <code>Record</code> object. + * Note that this class does not check for maximum number of records + * allowable in an actual pdb.</p> + * + * <p>This class also contains the pdb name associated with the Palm database + * it represents. A pdb name consists of 32 bytes of a certain encoding + * (extended ASCII in this case).</p> + * + * <p>The non default constructors take in a name parameter which may not + * be the exact pdb name to be used. The name parameter in + * <code>String</code> or <code>byte[]</code> are converted to an exact + * <code>NAME_LENGTH</code> byte array. If the length of the name is less + * than <code>NAME_LENGTH</code>, it is padded with '\0' characters. If it + * is more, it gets truncated. The last character in the resulting byte + * array is always a '\0' character. The resulting byte array is stored in + * <code>bName</code>, and a corresponding String object <code>sName</code> + * that contains characters without the '\0' characters.</p> + * + * <p>The {@link #write write} method is called within the + * {@link zensync.util.palm.PalmDBSet#write PalmDBSet.write} method + * for writing out its data to the <code>OutputStream</code> object.</p> + * + * <p>The {@link #read read} method is called within the + * {@link zensync.util.palm.PalmDBSet#read PalmDBSet.read} method + * for reading in its data from the <code>InputStream</code> object.</p> + * + * @author Akhil Arora, Herbie Ong + * @see PalmDBSet + * @see Record + */ + +public final class PalmDB { + + /** number of bytes for the name field in the pdb */ + public final static int NAME_LENGTH = 32; + + /** list of Record objects */ + private Record[] records; + + /** pdb name in bytes */ + private byte[] bName = null; + + /** pdb name in String */ + private String sName = null; + + + /** + * Default constructor for use after a read(). + */ + + public PalmDB() { + + records = new Record[0]; + } + + /** + * Constructor to create object with Record objects. + * recs.length can be zero for an empty pdb. + * + * @param name suggested pdb name in String + * @param recs array of Record objects + * @throws NullPointerException if recs is null + */ + + public PalmDB(String name, Record[] recs) + throws UnsupportedEncodingException { + + this(name.getBytes(PDBUtil.ENCODING), recs); + } + + /** + * Constructor to create object with Record objects. + * recs.length can be zero for an empty pdb. + * + * @param name suggested pdb name in byte array + * @param recs array of Record objects + * @throws NullPointerException if recs is null + */ + + public PalmDB(byte[] name, Record[] recs) + throws UnsupportedEncodingException { + + store(name); + + records = new Record[recs.length]; + System.arraycopy(recs, 0, records, 0, recs.length); + } + + /** + * This private method is mainly used by the constructors above. + * to store bytes into name and also create a String representation. + * and also by the read method. + * + * TODO: Note that this method assumes that the byte array parameter + * contains one character per byte, else it would truncate + * improperly. + * + * @param bytes pdb name in byte array + * @throws UnsupportedEncodingException if ENCODING is not supported + */ + + private void store(byte[] bytes) throws UnsupportedEncodingException { + + // note that this will initialize all bytes in name to 0. + bName = new byte[NAME_LENGTH]; + + // determine minimum length to copy over from bytes to bName. + // Note that the last byte in bName has to be '\0'. + + int lastIndex = NAME_LENGTH - 1; + + int len = (bytes.length < lastIndex)? bytes.length: lastIndex; + + int i; + + for (i = 0; i < len; i++) { + + if (bytes[i] == 0) { + break; + } + + bName[i] = bytes[i]; + } + + // set sName, no need to include the '\0' character. + sName = new String(bName, 0, i, PDBUtil.ENCODING); + } + + /** + * Return the number of records contained in this + * pdb PalmDB object. + * + * @return int number of Record objects + */ + + public int getRecordCount() { + + return records.length; + } + + /** + * Return the specific Record object associated + * with the record number. + * + * @param index record index number + * @return Record the Record object in the specified index + * @throws ArrayIndexOutOfBoundsException if index is out of bounds + */ + + public Record getRecord(int index) { + + return records[index]; + } + + /** + * Return the list of Record objects + * + * @return Record[] the list of Record objects + */ + + public Record[] getRecords() { + + return records; + } + + /** + * Return the PDBName associated with this object in String + * + * @return String pdb name in String + */ + + public String getPDBNameString() { + + return sName; + } + + /** + * Return the PDBName associated with this object + * in byte array of exact length of 32 bytes. + * + * @return byte[] pdb name in byte[] of length 32. + */ + + public byte[] getPDBNameBytes() { + + return bName; + } + + /** + * Write out the number of records followed by what + * will be written out by each Record object. + * + * @param os the stream to write the object to + * @throws IOException if any I/O error occurs + */ + + public void write(OutputStream os) throws IOException { + + DataOutputStream out = new DataOutputStream(os); + + // write out pdb name + out.write(bName); + + // write out 2 bytes for number of records + out.writeShort(records.length); + + // let each Record object write out its own info. + for (int i = 0; i < records.length; i++) + records[i].write(out); + } + + /** + * Read the necessary data to create a pdb from + * the input stream. + * + * @param is the stream to read data from in order + * to restore the object + * @throws IOException if any I/O error occurs + */ + + public void read(InputStream is) throws IOException { + + DataInputStream in = new DataInputStream(is); + + // read in the pdb name. + byte[] bytes = new byte[NAME_LENGTH]; + in.readFully(bytes); + store(bytes); + + // read in number of records + int nrec = in.readUnsignedShort(); + records = new Record[nrec]; + + // read in the Record infos + for (int i = 0; i < nrec; i++) { + + records[i] = new Record(); + records[i].read(in); + } + } + + /** + * Override equals method of Object. + * + * 2 PalmDB objects are equal if they contain the same information, + * i.e. pdb name and records. + * + * This is used primarily for testing purposes only for now. + * + * @param obj a PalmDB object to compare with + * @return boolean true if obj is equal to this, else false. + */ + + public boolean equals(Object obj) { + + boolean bool = false; + + if (obj instanceof PalmDB) { + + PalmDB pdb = (PalmDB) obj; + + checkLabel: { + + // compare sName + + if (!sName.equals(pdb.sName)) { + + break checkLabel; + } + + // compare bName + + if (bName.length != pdb.bName.length) { + + break checkLabel; + } + + for (int i = 0; i < bName.length; i++) { + + if (bName[i] != pdb.bName[i]) { + + break checkLabel; + } + } + + // compare each Record + + if (records.length != pdb.records.length) { + + break checkLabel; + } + + for (int i = 0; i < records.length; i++) { + + if (!records[i].equals(pdb.records[i])) { + + break checkLabel; + } + } + + // all checks done + bool = true; + } + } + + return bool; + } +} diff --git a/xmerge/source/palmtests/qa/comparator/README b/xmerge/source/palmtests/qa/comparator/README new file mode 100644 index 000000000000..ad08e7592d0d --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/README @@ -0,0 +1,10 @@ +Building the Comparator code +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +To build the comparator code, the following is required in your classpath. + + xerces.jar + xmerge.jar + +To Build type + + javac *.java diff --git a/xmerge/source/palmtests/qa/comparator/Record.java b/xmerge/source/palmtests/qa/comparator/Record.java new file mode 100644 index 000000000000..f506f1a2b190 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/Record.java @@ -0,0 +1,165 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.OutputStream; +import java.io.InputStream; +import java.io.DataOutputStream; +import java.io.DataInputStream; +import java.io.IOException; + +/** + * <p>Contains the raw bytes for a record in a pdb.</p> + * + * <p>Note that it is not associated with a record number or id.</p> + * + * @author Akhil Arora, Herbie Ong + * @see PalmDB + */ + + +public final class Record { + + /** record bytes */ + private byte[] data; + + /** + * Default constructor. + */ + + public Record() { + + data = new byte[0]; + } + + /** + * Constructor to create a Record filled with bytes. + * Note that this does not check for 64k record sizes. + * User of this class has to check for that. + * + * @param d byte array contents for this object. + */ + + public Record(byte[] d) { + + data = new byte[d.length]; + System.arraycopy(d, 0, data, 0, d.length); + } + + /** + * This method returns the number of bytes in this object. + * + * @return int number of bytes in this object. + */ + + public int getSize() { + + return data.length; + } + + /** + * This method returns the contents of this object. + * + * @return byte[] contents in byte array + */ + + public byte[] getBytes() { + + return data; + } + + /** + * Write out the record length followed by the data + * in this Record object. + * + * @param out the stream to write the object to + * @throws IOException if any I/O error occurs + */ + + + public void write(OutputStream outs) throws IOException { + + DataOutputStream out = new DataOutputStream(outs); + out.writeShort(data.length); + out.write(data); + } + + /** + * Read the necessary data to create a pdb from + * the input stream. + * + * @param in the stream to read data from in order to + * restore the object + * @throws IOException if any I/O error occurs + */ + + public void read(InputStream ins) throws IOException { + + DataInputStream in = new DataInputStream(ins); + int len = in.readUnsignedShort(); + data = new byte[len]; + in.readFully(data); + } + + /** + * Override equals method of Object. + * + * 2 Record objects are equal if they contain the same bytes + * in the array. + * + * This is used primarily for testing purposes only for now. + * + * @param obj a Record object to compare with + * @return boolean true if obj is equal to this, else false. + */ + + public boolean equals(Object obj) { + + boolean bool = false; + + if (obj instanceof Record) { + + Record rec = (Record) obj; + + checkLabel: { + + if (rec.getSize() == data.length) { + + for (int i = 0; i < data.length; i++) { + + if (data[i] != rec.data[i]) { + break checkLabel; + } + } + + bool = true; + } + } + } + + return bool; + } +} diff --git a/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java b/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java new file mode 100644 index 000000000000..da01306d9545 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/SimplePdbCompare.java @@ -0,0 +1,94 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +/* + * SimplePdbCompare.java + * + * Created on September 21, 2001, 10:23 AM + */ + +/** + * + * @author mh101528 + * @version + */ +public final class SimplePdbCompare { + + /** Creates new SimplePdbCompare */ + public SimplePdbCompare() { + } + + /** + * @param args the command line arguments + */ + public static void main (String args[]) + { + SimplePdbCompare comparator = new SimplePdbCompare(); + if (comparator.comparePDB(args[0], args[1])) + System.exit(2); + else + System.exit(3); + } + + public boolean comparePDB(String pdbname1, String pdbname2) + { + PalmDB pdb1=null, pdb2=null; + PDBDecoder decoder = new PDBDecoder(); + try + { + pdb1 = decoder.parse(pdbname1); + } + catch (Exception e) + { + System.out.println("Could not parse PDB " + pdbname1); + return false; + } + + try + { + pdb2 = decoder.parse(pdbname2); + } + catch (Exception e) + { + System.out.println("Could not parse PDB " + pdbname2); + return false; + } + + if (pdb1.equals(pdb2)) + { + //writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal"); + System.out.println("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal"); + return true; + } + else + { + //writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal"); + System.out.println("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal"); + return false; + } + } +} diff --git a/xmerge/source/palmtests/qa/comparator/XmlDiff.java b/xmerge/source/palmtests/qa/comparator/XmlDiff.java new file mode 100644 index 000000000000..d592609d18f3 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/XmlDiff.java @@ -0,0 +1,464 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.FileWriter; +import java.io.InputStream; +import java.io.FileInputStream; +import java.io.BufferedInputStream; +import java.io.BufferedWriter; +import java.io.IOException; +import java.io.FileNotFoundException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.io.PrintWriter; +import java.util.Vector; +import java.util.Properties; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.ParserConfigurationException; + +import org.w3c.dom.Node; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +/** + * This class will diff 2 Xml files. + * + * @author Stephen Mak + */ + +public final class XmlDiff { + + private static final String PROPSFILE = "XmlDiff.properties"; + private static final String FILE1 = "XmlDiff.file1"; + private static final String FILE2 = "XmlDiff.file2"; + private static final String OUTPUT= "XmlDiff.output"; + private static final String IGNORE_TAGS= "XmlDiff.tags"; + + private Properties props_ = null; + private static PrintWriter writer_ = null; + private String[] tags_ = null; + private String file1_ = null; + private String file2_ = null; + + /** + * Constructor. Load the properties file. + */ + + public XmlDiff() throws IOException { + + Class c = this.getClass(); + InputStream is = c.getResourceAsStream(PROPSFILE); + BufferedInputStream bis = new BufferedInputStream(is); + props_ = new Properties(); + props_.load(bis); + bis.close(); + + String file1 = props_.getProperty(FILE1, ""); + String file2 = props_.getProperty(FILE2, ""); + String tagsString = props_.getProperty(IGNORE_TAGS, ""); + String output = props_.getProperty("debug.output", "System.out"); + setOutput(output); + tags_ = parseTags(tagsString); + } + + /** + * diff 2 xml, but overwrite the property file's file1/2 setting with + * the input argument + */ + public boolean diff(String file1, String file2) throws IOException { + file1_ = file1; + file2_ = file2; + return diff(); + } + + public boolean diff() throws IOException { + + boolean result = false; + + writer_.println("parsing "+ file1_ + "..."); + // parse the Xml file + Document doc1 = parseXml(file1_); + + writer_.println("parsing "+ file1_ + "..."); + Document doc2 = parseXml(file2_); + + if (doc1 != null && doc2 != null) { + writer_.println("diffing "+ file1_ + " & " + file2_ + "..."); + result = compareNode(doc1, doc2); + } + return result; + } + + private void diffLog(String errMsg, Node node1, Node node2) { + + String node1Str = ""; + String node2Str = ""; + + if (node1 != null) { + node1Str = "[Type]:" + nodeInfo(node1) + + " [Name]:" + node1.getNodeName(); + if (node1.getNodeValue() != null) + node1Str += " [Value]:" + node1.getNodeValue(); + } + + if (node2 != null) { + node2Str = "[Type]:" + nodeInfo(node2) + + " [Name]:" + node2.getNodeName(); + if (node2.getNodeValue() != null) + node2Str += " [Value]:" + node2.getNodeValue(); + } + + writer_.println(errMsg); + writer_.println(" Node1 - " + node1Str); + writer_.println(" Node2 - " + node2Str); + } + + private String nodeInfo(Node node) { + + String str = null; + switch (node.getNodeType()) { + + case Node.ELEMENT_NODE: + str = "ELEMENT"; + break; + case Node.ATTRIBUTE_NODE: + str = "ATTRIBUTE"; + break; + case Node.TEXT_NODE: + str = "TEXT"; + break; + case Node.CDATA_SECTION_NODE: + str = "CDATA_SECTION"; + break; + case Node.ENTITY_REFERENCE_NODE: + str = "ENTITY_REFERENCE"; + break; + case Node.ENTITY_NODE: + str = "ENTITY"; + break; + case Node.PROCESSING_INSTRUCTION_NODE: + str = "PROCESSING_INSTRUCTION"; + break; + case Node.COMMENT_NODE: + str = "COMMENT"; + break; + case Node.DOCUMENT_NODE: + str = "DOCUMENT"; + break; + case Node.DOCUMENT_TYPE_NODE: + str = "DOCUMENT_TYPE"; + break; + case Node.DOCUMENT_FRAGMENT_NODE: + str = "DOCUMENT_FRAGMENT"; + break; + case Node.NOTATION_NODE: + str = "NOTATION"; + break; + } + return str; + } + + private boolean ignoreTag(String nodeName) { + + + if (tags_ != null) { + for (int i = 0; i < tags_.length; i++) { + if (tags_[i].equals(nodeName)) + return true; + } + } + return false; + } + + // for future use if we want to compare attributes + private boolean attributesEqual(Node node1, Node node2) { + return true; + } + + private boolean compareNode(Node node1, Node node2) { + boolean equal = false; + + while (true) { + + if (node1 == null && node2 == null) { + equal = true; + break; + } else if (node1 == null || node2 == null) { + diffLog("DIFF: one of the node is null", node1, node2); + break; + } + + if (node1.getNodeType() != node2.getNodeType()) { + diffLog("DIFF: nodetype is different", node1, node2); + break; + } + + if (node1.getNodeName() == null && node2.getNodeName() == null) { + // empty + } else if (node1.getNodeName() == null || + node2.getNodeName() == null) { + diffLog("DIFF: one of the nodeName is null", node1, node2); + break; + } else if (!node1.getNodeName().equals(node2.getNodeName())) { + diffLog("DIFF: nodeName is different", node1, node2); + break; + } + + if (ignoreTag(node1.getNodeName())) { + diffLog("DIFF: Some tag(s) is ignored", node1, node2); + equal = true; + break; + } + + if (node1.getNodeValue() == null && node2.getNodeValue() == null) { + // empty + } else if (node1.getNodeValue() == null || + node2.getNodeValue() == null) { + diffLog("DIFF: one of the nodevalue is null", node1, node2); + break; + } else if (!node1.getNodeValue().equals(node2.getNodeValue())) { + diffLog("DIFF: nodeValue is different", node1, node2); + break; + } + + // try to compare attributes if necessary + if (!attributesEqual(node1, node2)) + break; + + NodeList node1Children = node1.getChildNodes(); + NodeList node2Children = node2.getChildNodes(); + + // number of children have to be the same + if (node1Children == null && node2Children == null) { + equal = true; + break; + } + + if (node1Children == null || node2Children == null) { + diffLog("DIFF: one node's children is null", node1, node2); + break; + } + + if (node1Children.getLength() != node2Children.getLength()) { + diffLog("DIFF: num of children is different", node1, node2); + break; + } + + // compare all the childrens + equal = true; + + for (int i = 0; i < node1Children.getLength(); i++) { + if (!compareNode(node1Children.item(i), + node2Children.item(i))) { + equal = false; + break; + } + } + break; + } + + return equal; + } + + private Document parseXml (String filename) throws IOException { + + Document w3cDocument = null; + + FileInputStream fis; + + try { + fis = new FileInputStream(filename); + } catch (FileNotFoundException ex) { + ex.printStackTrace(writer_); + writer_.println(ex.getMessage()); + return w3cDocument; + } + + /** factory for DocumentBuilder objects */ + DocumentBuilderFactory factory = null; + factory = DocumentBuilderFactory.newInstance(); + factory.setNamespaceAware(true); + factory.setValidating(false); + + /** DocumentBuilder object */ + DocumentBuilder builder = null; + + try { + builder = factory.newDocumentBuilder(); + } catch (ParserConfigurationException ex) { + ex.printStackTrace(writer_); + writer_.println(ex.getMessage()); + return null; + } + + + builder.setErrorHandler( + new org.xml.sax.ErrorHandler() { + // ignore fatal errors (an exception is guaranteed) + public void fatalError(SAXParseException e) + throws SAXException { + throw e; + } + + public void error(SAXParseException e) + throws SAXParseException { + // make sure validation error is thrown. + throw e; + } + + public void warning(SAXParseException e) + throws SAXParseException { + } + } + ); + + try { + w3cDocument = builder.parse(fis); + w3cDocument.getDocumentElement().normalize(); + } catch (SAXException ex) { + ex.printStackTrace(writer_); + writer_.println(ex.getMessage()); + return w3cDocument; + } + + return w3cDocument; + } + + private String [] parseTags(String tagsString) { + Vector tagsVector = new Vector(); + if (tagsString.length() == 0) + return null; + + int start = 0; + int end = 0; + // break the tag string into a vector of strings by words + for (end = tagsString.indexOf(" ", start); + end != -1 ; + start = end + 1, end = tagsString.indexOf(" ", start)) { + tagsVector.add(tagsString.substring(start,end)); + } + + tagsVector.add(tagsString.substring(start,tagsString.length())); + + // convert the vector to array + String[] tags= new String[tagsVector.size()]; + tagsVector.copyInto(tags); + + return tags; + } + + + /** + * Set the output to the specified argument. + * This method is only used internally to prevent + * invalid string parameter. + * + * @param str output specifier + */ + private static void setOutput(String str) { + + if (writer_ == null) { + + if (str.equals("System.out")) { + + setOutput(System.out); + + } else if (str.equals("System.err")) { + + setOutput(System.err); + + } else { + + try { + + setOutput(new FileWriter(str)); + + } catch (IOException e) { + + e.printStackTrace(System.err); + } + } + } + } + + /** + * Set the output to an OutputStream object. + * + * @param stream OutputStream object + */ + + private static void setOutput(OutputStream stream) { + + setOutput(new OutputStreamWriter(stream)); + } + + /** + * Set the Writer object to manage the output. + * + * @param w Writer object to write out + */ + + private static void setOutput(Writer w) { + + if (writer_ != null) { + + writer_.close(); + } + + writer_ = new PrintWriter(new BufferedWriter(w), true); + } + + public static void main(String args[]) throws IOException { + + if (args.length != 0 && args.length != 2) { + System.out.println("Usage: XmlDiff [<file1> <file2>]."); + return; + } + + XmlDiff xmldiff = new XmlDiff(); + + boolean same = false; + if (args.length == 2) { + same = xmldiff.diff(args[0], args[1]); + } else { + same = xmldiff.diff(); + } + + System.out.println("Diff result: " + same); + if (same) + { + System.out.println("XMLDIFFRESULT:PASSED"); + } else { + System.out.println("XMLDIFFRESULT:FAILED"); + } + } +} + diff --git a/xmerge/source/palmtests/qa/comparator/XmlDiff.properties b/xmerge/source/palmtests/qa/comparator/XmlDiff.properties new file mode 100644 index 000000000000..2fdff0953ed6 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/XmlDiff.properties @@ -0,0 +1,14 @@ +# +# $Id: XmlDiff.properties,v 1.2 2005-10-24 16:13:45 hr Exp $ +# +# This properties file provides info for XmlDiff program +# XmlDiff.file1 is the first input XML file +# XmlDiff.file2 is the second input XML file +# XmlDiff.output is where the output (err/message) go +# XmlDiff.tags are what tagname should ignore (and the subtree under it) +# +# x-no-translate +XmlDiff.file1=test1.xml +XmlDiff.file2=test2.xml +XmlDiff.output=System.err +XmlDiff.tags= diff --git a/xmerge/source/palmtests/qa/comparator/XmlWrapper.java b/xmerge/source/palmtests/qa/comparator/XmlWrapper.java new file mode 100644 index 000000000000..16dddcb0a4f3 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/XmlWrapper.java @@ -0,0 +1,153 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.IOException; +import java.io.File; +import java.util.zip.*; + +public class XmlWrapper +{ + public static void main(String args[]) throws IOException + { + System.out.println("args.length is " + args.length); + if (args.length < 2) { + System.out.println("Usage: java XmlWrapper [<zipfile1> <zipfile2>]."); + //return; + System.exit(-1); + + } + + XmlWrapper w = new XmlWrapper(); + File currdirfp = null; + try { + currdirfp = new File("."); + } catch (Exception fx) { + System.out.println("Could not get File instance for current directory \n"); + //return; + System.exit(-1); + } + + File f1 = null; + File f2 = null; + String fname1,fname2; + try { + f1 = File.createTempFile("xmlcomp", ".tmp", currdirfp); + f2 = File.createTempFile("xmlcomp", ".tmp", currdirfp); + } catch (Exception tx) { + System.out.println("Could not create TempFile "); + System.out.println("Exception: " + tx.toString()); + //return; + System.exit(-1); + } + + fname1 = f1.getAbsolutePath(); + fname2 = f2.getAbsolutePath(); + + // get content.xml file from zip file and copy it to temporary + // filename + XmlZipExtract xw1 = new XmlZipExtract(args[0]); + try { + xw1.getContentXml(fname1); + } catch (ZipException e) { + System.out.println("Exception: file is not a ZIP file: " + args[0]); + f1.delete(); + f2.delete(); + //return; + System.exit(-1); + } catch (Exception e) { + System.out.println("Exception: Could not extract XML from " + args[0]); + System.out.println("Exception: " + e.toString()); + f1.delete(); + f2.delete(); + //return; + System.exit(-1); + } + + // get content.xml file from zip file and copy it to temporary + // filename + XmlZipExtract xw2 = new XmlZipExtract(args[1]); + try { + xw2.getContentXml(fname2); + } catch (ZipException e) { + System.out.println("Exception: file is not a ZIP file: " + args[0]); + f1.delete(); + f2.delete(); + //return; + System.exit(-1); + } catch (Exception ex) { + System.out.println(ex.getMessage()); + System.out.println("Exception: Could not extract XML from " + args[1]); + System.out.println("Exception: " + ex.toString()); + f1.delete(); + f2.delete(); + //return; + System.exit(-1); + } + + boolean same = false; + + try + { + XmlDiff xmldiff = new XmlDiff(); + + if (args.length == 2) { + same = xmldiff.diff(fname1, fname2); + } else { + same = xmldiff.diff(); + } + } + catch (Exception ex) + { + System.out.println("XmlDiff failed"); + System.out.println("Exception: " + ex.toString()); + f1.delete(); + f2.delete(); + //return; + System.exit(-1); + } + + System.out.println("Diff result: " + same); + if (same) + { + System.out.println("XMLDIFFRESULT:PASSED"); + } else { + System.out.println("XMLDIFFRESULT:FAILED"); + } + + f1.delete(); + f2.delete(); + + if (same) + { + System.exit(2); + } + else + { + System.exit(3); + } + } +} diff --git a/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java b/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java new file mode 100644 index 000000000000..2e47edd65160 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/XmlZipExtract.java @@ -0,0 +1,144 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.IOException; +import java.io.InputStream; +import java.io.FileInputStream; +import java.io.RandomAccessFile; +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.util.Enumeration; +import java.util.zip.ZipFile; +import java.util.zip.ZipEntry; + +public class XmlZipExtract +{ + + public static final String CONTENT = "Content.xml"; + public static final String OLDCONTENT = "content.xml"; + private static final int BUFFER_SIZE = 2048; + + + /** + * Full path of the Zip file to process. + */ + private String filename = null; + + + /** + * Constructor + * + * @param filename Full Path to Zip file to process + * + */ + public XmlZipExtract(String filename) { + this.filename = filename; + } + + /** + * Copies Content.xml from zip file onto the filename passed as + * an argument + * + * @param fname Full Path to file to which contents have to be copied + * + */ + public void getContentXml(String fname) throws IOException + { + try + { + getContentXmlInt(fname, XmlZipExtract.CONTENT); + } + catch (NullPointerException e1) + { + // If the new name of the content file failed, try + // the older name. + // + System.out.println(filename + " Content.xml does not exist, trying content.xml..."); + try + { + getContentXmlInt(fname, XmlZipExtract.OLDCONTENT); + } + catch (NullPointerException e2) + { + System.out.println(filename + " content.xml does not exist, trying content.xml..."); + throw e2; + } + } + } + + public void getContentXmlInt(String fname, String cname) throws IOException + { + byte b[] = getEntry(cname); + + RandomAccessFile raf=null; + raf = new RandomAccessFile(fname, "rw"); + raf.write(b); + raf.close(); + } + + /** + * Get the specified entry in the zip file as a stream. + * + * @param entryName The name of the entry in the zipfile to get. + * This should be one of the constants defined above. + * + * @return byte[] bits for entryName + * + * @throws IOException if something goes wrong + */ + public byte[] getEntry(String entryName) throws IOException + { + ZipFile zf = new ZipFile(filename); + ZipEntry ze = zf.getEntry(entryName); + byte[] bits = readStream(zf.getInputStream(ze)); + zf.close(); + return bits; + } + + + /** + * Read an InputStream into an array of bytes. + * + * @param is InputStream of data from Zip file + * + * @return an array of Bytes + */ + private byte[] readStream(InputStream is) throws IOException + { + BufferedInputStream bis = new BufferedInputStream(is); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + byte[] buffer = new byte[BUFFER_SIZE]; + int eof = 0; + while ((eof = bis.read(buffer, 0, buffer.length)) > 0) { + baos.write(buffer, 0, eof); + } + + return baos.toByteArray(); + } +} + + diff --git a/xmerge/source/palmtests/qa/comparator/comparator.pl b/xmerge/source/palmtests/qa/comparator/comparator.pl new file mode 100644 index 000000000000..5ca4f2375689 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/comparator.pl @@ -0,0 +1,248 @@ +#!/usr/bin/perl + +######################################################################### + + #************************************************************************* + # +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# + #************************************************************************* + +$compare_home = "$ENV{QA_COMPARATOR_HOME}"; + +if ($ENV{'CLASSPATH'}) +{ + $classpath_val = "$compare_home:$ENV{'CLASSPATH'}"; +} +else +{ + $classpath_val = "$compare_home"; +} + +print "classpath is $classpath_val\n"; + +$list_file=""; +$orig_dir=""; +$new_dir=""; +$diff_type=""; + +####### BEGIN MAIN ############## +$cmdline_len = @ARGV; +if ($cmdline_len <= 0) +{ + print_usage(); + exit (0); +} + +process_cmdline(@ARGV); +print_env(); +open (LOGFILE, ">$logfile") || die "Cannot open log file $logfile"; +if ($test_list ne "") +{ + open (TESTLIST, $test_list) || die "Couldn't open diff list file $test_list"; + + while (<TESTLIST>) + { + chomp $_; + process_diff(get_file_title($_)); + } +} +close TESTLIST; +close LOGFILE; + +####### END MAIN ############## + +sub process_diff +{ + $_[0] =~ tr/A-Z/a-z/; + + # chdir to the output directory so the temporary files created by + # the java programs are put in the right place. + # + chdir ($xml_new); + + if ($diff_type eq "xml") + { + # Ugly hack, probably a way to tell xerces directly that the dtd's + # are in $compare_home/dtd. + # + `cp $compare_home/dtd/* $xml_new`; + + $cmd = "java -classpath $classpath_val XmlWrapper $xml_orig/$_[0].sxw $xml_new/$_[0].sxw"; + $val = system($cmd)/256; + if ($val == 2) + { + print LOGFILE "$_[0]|TRUE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + } + elsif($val == 3) + { + print LOGFILE "$_[0]|FALSE|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + } + else + { + print LOGFILE "$_[0]|ERROR|$xml_orig/$_[0].sxw|$xml_new/$_[0].sxw\n"; + } + } + elsif ($diff_type eq "pdb") + { + $cmd = "java -classpath $classpath_val SimplePdbCompare $pdb_orig/$_[0].pdb $pdb_new/$_[0].pdb\n"; + print "Executing: $cmd\n"; + $val = system($cmd)/256; + if ($val == 2) + { + print LOGFILE "$_[0]|TRUE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + } + elsif($val == 3) + { + print LOGFILE "$_[0]|FALSE|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + } + else + { + print LOGFILE "$_[0]|ERROR|$pdb_orig/$_[0].pdb|$pdb_new/$_[0].pdb\n"; + } + } + else + { + die "Don't understand test type of $diff_type."; + } +} + +sub process_cmdline +{ + foreach $i (@_) + { + @arg= split('=', $i); + @arg[0] =~ tr/A-Z/a-z/; + + if (@arg[0] eq "-pdb-orig") + { + $pdb_orig=$arg[1]; + } + elsif (@arg[0] eq "-pdb-new") + { + $pdb_new=$arg[1]; + } + elsif (@arg[0] eq "-xml-orig") + { + $xml_orig=$arg[1]; + } + elsif (@arg[0] eq "-xml-new") + { + $xml_new=$arg[1]; + } + elsif (@arg[0] eq "-env") + { + set_env_from_props($arg[1]); + } + elsif (@arg[0] eq "-list") + { + $test_list = $arg[1]; + } + elsif (@arg[0] eq "-one") + { + $infile = $arg[1]; + } + elsif (@arg[0] eq "-type") + { + $diff_type = $arg[1]; + chomp $diff_type; + } + elsif (@arg[0] eq "-log") + { + $logfile = $arg[1]; + } + else + { + print_usage(); + die "Incorrect command line. Don't understand $i"; + } + } +} + +sub set_env_from_props +{ + open(PROPSFILE, $_[0]) || die "Could not open properties file"; + + while (<PROPSFILE>) + { + chomp $_; + @arg = split('=', $_); + @arg[0] =~ tr/a-z/A-Z/; + $len = @arg; + if ($len != 2) + { + die "Malformed property in $ARGV[0]"; + } + + if (@arg[0] eq "PDB_ORIG") + { + $pdb_orig=$arg[1]; + } + elsif (@arg[0] eq "PDB_NEW") + { + $pdb_new=$arg[1]; + } + elsif (@arg[0] eq "XML_ORIG") + { + $xml_orig=$arg[1]; + } + elsif (@arg[0] eq "XML_NEW") + { + $xml_new=$arg[1]; + } + + } + close PROPSFILE; +} + +sub print_usage +{ + print "Usage : compartor.pl - compare Office or pdb files\n"; + print "\t-one=<file> :\t\t individual test case file to run\n"; + print "\t-list=<file> :\t\t list of test case files\n"; + print "\t-env=<file> :\t\t Properites like file defining env\n"; + print "\t-pdb-orig=<path> :\t directory to hold original pdb files\n"; + print "\t-pdb-new=<path> :\t directory to hold new pdb files\n"; + print "\t-xml-orig=<path> :\t directory to hold original office documents\n"; + print "\t-xml-new=<path> :\t directory to hold new office documents\n"; + print "\t-type=<xml|pdb> :\t Invokes the merge option when converting\n"; + print "\t-log=<logfile> :\t Save results to logfile.\n"; +} + +sub print_env +{ + print "Using the following environment:\n"; + print "\tPDB_ORIG = $pdb_orig\n"; + print "\tPDB_NEW = $pdb_new\n"; + print "\tXML_ORIG = $xml_orig\n"; + print "\tXML_NEW = $xml_new\n\n"; +} + +sub get_file_title +{ + @paths = split('\/', $_[0]); + $len = @paths; + @names = split('\.', @paths[$len-1]); + return $names[0]; +} diff --git a/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd b/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd new file mode 100644 index 000000000000..f7bb8eb321bb --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/Blocklist.dtd @@ -0,0 +1,34 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> +<!ELEMENT block-list:block-list (block-list:block*) > +<!ATTLIST block-list:block-list + block-list:list-name CDATA #REQUIRED> +<!ELEMENT block-list:block EMPTY> +<!ATTLIST block-list:block + block-list:abbreviated-name CDATA #REQUIRED + block-list:package-name CDATA #REQUIRED + block-list:name CDATA #REQUIRED> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/chart.mod b/xmerge/source/palmtests/qa/comparator/dtd/chart.mod new file mode 100644 index 000000000000..70cbe483ca9c --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/chart.mod @@ -0,0 +1,228 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + + +<!ENTITY % chart-class "(line|area|circle|ring|scatter|radar|bar|stock|add-in)"> +<!ENTITY % chart-solid-type "(cuboid|cylinder|cone|pyramid)"> + +<!-- Chart element --> +<!ELEMENT chart:chart ( chart:title?, chart:subtitle?, chart:legend?, + chart:plot-area, + table:table? )> +<!ATTLIST chart:chart + chart:class %chart-class; #REQUIRED + chart:add-in-name %string; #IMPLIED + chart:table-number-list %string; #IMPLIED + draw:name %string; #IMPLIED + %draw-position; + %draw-size; + %draw-style-name; + chart:style-name %styleName; #IMPLIED> + +<!ATTLIST chart:chart %presentation-class; > +<!ATTLIST chart:chart %zindex;> +<!ATTLIST chart:chart %draw-end-position; > +<!ATTLIST chart:chart draw:id %draw-shape-id; > +<!ATTLIST chart:chart draw:layer %layerName; #IMPLIED> + +<!ATTLIST style:properties + chart:scale-text %boolean; "true" + chart:stock-updown-bars %boolean; "false" + chart:stock-with-volume %boolean; "false" + chart:three-dimensional %boolean; "false" + chart:deep %boolean; "false" + chart:lines %boolean; "false" + chart:percentage %boolean; "false" + chart:solid-type %chart-solid-type; "cuboid" + chart:splines %nonNegativeInteger; "0" + chart:stacked %boolean; "false" + chart:symbol %integer; "-1" + chart:vertical %boolean; "false" + chart:lines-used %nonNegativeInteger; "0" + chart:connect-bars %boolean; "false"> + +<!-- Main/Sub Title --> +<!-- the cell-address attribute is currently not supported for titles --> +<!ELEMENT chart:title (text:p)?> +<!ATTLIST chart:title + table:cell-range %cell-address; #IMPLIED + svg:x %coordinate; #IMPLIED + svg:y %coordinate; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!ELEMENT chart:subtitle (text:p)?> +<!ATTLIST chart:subtitle + table:cell-range %cell-address; #IMPLIED + svg:x %coordinate; #IMPLIED + svg:y %coordinate; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!-- you must specify either a legend-position or both, x and y coordinates --> +<!ELEMENT chart:legend EMPTY> +<!ATTLIST chart:legend + chart:legend-position (top|left|bottom|right) "right" + svg:x %coordinate; #IMPLIED + svg:y %coordinate; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!-- Plot-Area specification --> + +<!ELEMENT chart:plot-area (dr3d:light*, + chart:axis*, + chart:categories?, + chart:series*, + chart:wall?, + chart:floor?) > + +<!ATTLIST chart:plot-area + svg:x %coordinate; #IMPLIED + svg:y %coordinate; #IMPLIED + svg:width %length; #IMPLIED + svg:height %length; #IMPLIED + chart:style-name %styleName; #IMPLIED + table:cell-range-address %cell-range-address; #IMPLIED + chart:table-number-list %string; #IMPLIED + chart:data-source-has-labels (none|row|column|both) "none" > + +<!-- 3d scene attributes on plot-area --> +<!ATTLIST chart:plot-area + dr3d:vrp %vector3D; #IMPLIED + dr3d:vpn %vector3D; #IMPLIED + dr3d:vup %vector3D; #IMPLIED + dr3d:projection (parallel|perspective) #IMPLIED + dr3d:transform CDATA #IMPLIED + dr3d:distance %length; #IMPLIED + dr3d:focal-length %length; #IMPLIED + dr3d:shadow-slant %nonNegativeInteger; #IMPLIED + dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED + dr3d:ambient-color %color; #IMPLIED + dr3d:lighting-mode %boolean; #IMPLIED > + +<!ATTLIST style:properties + chart:series-source (columns|rows) "columns" > + +<!ELEMENT chart:wall EMPTY> +<!ATTLIST chart:wall + svg:width %length; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!ELEMENT chart:floor EMPTY> +<!ATTLIST chart:floor + svg:width %length; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!-- Axis --> + +<!ELEMENT chart:axis (chart:title?, chart:grid*)> +<!ATTLIST chart:axis + chart:class (category|value|series|domain) #REQUIRED + chart:name %string; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!ATTLIST style:properties + chart:tick-marks-major-inner %boolean; "false" + chart:tick-marks-major-outer %boolean; "true" + chart:tick-marks-minor-inner %boolean; "false" + chart:tick-marks-minor-outer %boolean; "false" + chart:logarithmic %boolean; "false" + chart:maximum %float; #IMPLIED + chart:minimum %float; #IMPLIED + chart:origin %float; #IMPLIED + chart:interval-major %float; #IMPLIED + chart:interval-minor %float; #IMPLIED + chart:gap-width %integer; #IMPLIED + chart:overlap %integer; #IMPLIED + text:line-break %boolean; "true" + chart:display-label %boolean; "true" + chart:label-arrangement (side-by-side|stagger-even|stagger-odd) "side-by-side" + chart:visible %boolean; "true" + chart:link-data-style-to-source %boolean; "true" > + +<!ELEMENT chart:grid EMPTY> +<!ATTLIST chart:grid + chart:class (major|minor) "major" + chart:style-name %styleName; #IMPLIED > + + +<!ELEMENT chart:categories EMPTY> +<!ATTLIST chart:categories + table:cell-range-address %cell-range-address; #REQUIRED > + +<!-- + each series element must have an cell-range-address element that points + to the underlying table data. + Impl. Note: Internally all href elements are merged to one table range + that represents the data for the whole chart +--> +<!ELEMENT chart:series ( chart:domain*, + chart:data-point* )> +<!ATTLIST chart:series + chart:values-cell-range-address %cell-range-address; #IMPLIED + chart:label-cell-address %cell-address; #IMPLIED + chart:class %chart-class; #IMPLIED + chart:attached-axis %string; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!ELEMENT chart:domain EMPTY> +<!ATTLIST chart:domain + table:cell-range-address %cell-range-address; #IMPLIED > + +<!ELEMENT chart:data-point EMPTY> +<!ATTLIST chart:data-point + chart:repeated %nonNegativeInteger; #IMPLIED + chart:style-name %styleName; #IMPLIED > + +<!-- statistical properties --> + +<!ATTLIST style:properties + chart:mean-value %boolean; #IMPLIED + chart:error-category (none|variance|standard-deviation|percentage|error-margin|constant) "none" + chart:error-percentage %float; #IMPLIED + chart:error-margin %float; #IMPLIED + chart:error-lower-limit %float; #IMPLIED + chart:error-upper-limit %float; #IMPLIED + chart:error-upper-indicator %boolean; #IMPLIED + chart:error-lower-indicator %boolean; #IMPLIED + chart:regression-type (none|linear|logarithmic|exponential|power) "none" > + +<!-- data label properties --> + +<!ATTLIST style:properties + chart:data-label-number (none|value|percentage) "none" + chart:data-label-text %boolean; "false" + chart:data-label-symbol %boolean; "false" > + +<!-- general text properties --> + +<!ATTLIST style:properties text:rotation-angle %integer; "0" > + +<!-- symbol properties --> + +<!ATTLIST style:properties + chart:symbol-width %nonNegativeLength; #IMPLIED + chart:symbol-height %nonNegativeLength; #IMPLIED + chart:symbol-image-name %string; #IMPLIED > diff --git a/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod b/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod new file mode 100644 index 000000000000..11bc8a8e40b7 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/datastyl.mod @@ -0,0 +1,168 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!-- data styles --> +<!ENTITY % any-number "( number:number | number:scientific-number | number:fraction )"> +<!ENTITY % number-style-content "( (number:text,(%any-number;,number:text?)?) | (%any-number;,number:text?) )"> +<!ELEMENT number:number-style ( style:properties?, %number-style-content;, style:map* )> +<!ELEMENT number:number EMPTY> +<!ELEMENT number:scientific-number EMPTY> +<!ELEMENT number:fraction EMPTY> + +<!ENTITY % currency-symbol-and-text "number:currency-symbol,number:text?"> +<!ENTITY % number-and-text "number:number,number:text?"> +<!ENTITY % currency-symbol-and-number "((%number-and-text;),(%currency-symbol-and-text;)?) | ((%currency-symbol-and-text;),(%number-and-text;)?)"> +<!ENTITY % currency-style-content "number:text?, (%currency-symbol-and-number;)?"> + +<!ELEMENT number:currency-style ( style:properties?, (%currency-style-content;), style:map* )> +<!ELEMENT number:currency-symbol (#PCDATA)> +<!ATTLIST number:currency-symbol number:language CDATA #IMPLIED> +<!ATTLIST number:currency-symbol number:country CDATA #IMPLIED> + +<!ENTITY % percentage-style-content "( (number:text,(%number-and-text;)?) | (%number-and-text;) )"> +<!ELEMENT number:percentage-style ( style:properties?, %percentage-style-content;, style:map* )> + +<!ENTITY % any-date "( number:day | number:month | number:year | number:era | number:day-of-week | number:week-of-year | number:quarter| number:hours | number:am-pm | number:minutes | number:seconds )"> +<!ENTITY % date-style-content "( (number:text,(%any-date;,number:text?)+) | (%any-date;,number:text?)+ )"> +<!ELEMENT number:date-style ( style:properties?, %date-style-content;, style:map* )> +<!ELEMENT number:day EMPTY> +<!ATTLIST number:day number:style (short|long) "short"> +<!ATTLIST number:day number:calendar CDATA #IMPLIED> +<!ELEMENT number:month EMPTY> +<!ATTLIST number:month number:textual %boolean; "false"> +<!ATTLIST number:month number:style (short|long) "short"> +<!ATTLIST number:month number:calendar CDATA #IMPLIED> +<!ELEMENT number:year EMPTY> +<!ATTLIST number:year number:style (short|long) "short"> +<!ATTLIST number:year number:calendar CDATA #IMPLIED> +<!ELEMENT number:era EMPTY> +<!ATTLIST number:era number:style (short|long) "short"> +<!ATTLIST number:era number:calendar CDATA #IMPLIED> +<!ELEMENT number:day-of-week EMPTY> +<!ATTLIST number:day-of-week number:style (short|long) "short"> +<!ATTLIST number:day-of-week number:calendar CDATA #IMPLIED> +<!ELEMENT number:week-of-year EMPTY> +<!ATTLIST number:week-of-year number:calendar CDATA #IMPLIED> +<!ELEMENT number:quarter EMPTY> +<!ATTLIST number:quarter number:style (short|long) "short"> +<!ATTLIST number:quarter number:calendar CDATA #IMPLIED> + +<!ENTITY % any-time "( number:hours | number:am-pm | number:minutes | number:seconds )"> +<!ENTITY % time-style-content "( (number:text,(%any-time;,number:text?)+) | (%any-time;,number:text?)+)"> +<!ELEMENT number:time-style ( style:properties?, %time-style-content;, style:map* )> +<!ELEMENT number:hours EMPTY> +<!ATTLIST number:hours number:style (short|long) "short"> +<!ELEMENT number:minutes EMPTY> +<!ATTLIST number:minutes number:style (short|long) "short"> +<!ELEMENT number:seconds EMPTY> +<!ATTLIST number:seconds number:style (short|long) "short"> +<!ATTLIST number:seconds number:decimal-places %integer; "0"> +<!ELEMENT number:am-pm EMPTY> + +<!ENTITY % boolean-style-content "( (number:text,(number:boolean,number:text?)?) | (number:boolean,number:text?) )"> +<!ELEMENT number:boolean-style ( style:properties?,%boolean-style-content;, style:map* )> +<!ELEMENT number:boolean EMPTY> + +<!ENTITY % text-style-content "( (number:text,(number:text-content,number:text?)?) | (number:text-content,number:text?) )"> +<!ELEMENT number:text-style ( style:properties?,%text-style-content;, style:map* )> +<!ELEMENT number:text (#PCDATA)> +<!ELEMENT number:text-content EMPTY> + +<!ATTLIST number:number-style style:name %styleName; #REQUIRED> +<!ATTLIST number:currency-style style:name %styleName; #REQUIRED> +<!ATTLIST number:percentage-style style:name %styleName; #REQUIRED> +<!ATTLIST number:date-style style:name %styleName; #REQUIRED> +<!ATTLIST number:time-style style:name %styleName; #REQUIRED> +<!ATTLIST number:boolean-style style:name %styleName; #REQUIRED> +<!ATTLIST number:text-style style:name %styleName; #REQUIRED> + +<!ATTLIST number:number-style style:family CDATA #REQUIRED> +<!ATTLIST number:currency-style style:family CDATA #REQUIRED> +<!ATTLIST number:percentage-style style:family CDATA #REQUIRED> +<!ATTLIST number:date-style style:family CDATA #REQUIRED> +<!ATTLIST number:time-style style:family CDATA #REQUIRED> +<!ATTLIST number:boolean-style style:family CDATA #REQUIRED> +<!ATTLIST number:text-style style:family CDATA #REQUIRED> + +<!ATTLIST number:number-style number:language CDATA #IMPLIED> +<!ATTLIST number:currency-style number:language CDATA #IMPLIED> +<!ATTLIST number:percentage-style number:language CDATA #IMPLIED> +<!ATTLIST number:date-style number:language CDATA #IMPLIED> +<!ATTLIST number:time-style number:language CDATA #IMPLIED> +<!ATTLIST number:boolean-style number:language CDATA #IMPLIED> +<!ATTLIST number:text-style number:language CDATA #IMPLIED> + +<!ATTLIST number:number-style number:country CDATA #IMPLIED> +<!ATTLIST number:currency-style number:country CDATA #IMPLIED> +<!ATTLIST number:percentage-style number:country CDATA #IMPLIED> +<!ATTLIST number:date-style number:country CDATA #IMPLIED> +<!ATTLIST number:time-style number:country CDATA #IMPLIED> +<!ATTLIST number:boolean-style number:country CDATA #IMPLIED> +<!ATTLIST number:text-style number:country CDATA #IMPLIED> + +<!ATTLIST number:number-style number:title CDATA #IMPLIED> +<!ATTLIST number:currency-style number:title CDATA #IMPLIED> +<!ATTLIST number:percentage-style number:title CDATA #IMPLIED> +<!ATTLIST number:date-style number:title CDATA #IMPLIED> +<!ATTLIST number:time-style number:title CDATA #IMPLIED> +<!ATTLIST number:boolean-style number:title CDATA #IMPLIED> +<!ATTLIST number:text-style number:title CDATA #IMPLIED> + +<!ATTLIST number:number-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:currency-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:percentage-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:date-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:time-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:boolean-style style:volatile %boolean; #IMPLIED> +<!ATTLIST number:text-style style:volatile %boolean; #IMPLIED> + +<!ATTLIST number:currency-style number:automatic-order %boolean; "false"> +<!ATTLIST number:date-style number:automatic-order %boolean; "false"> + +<!ATTLIST number:date-style number:format-source (fixed|language) "fixed"> +<!ATTLIST number:time-style number:format-source (fixed|language) "fixed"> + +<!ATTLIST number:time-style number:truncate-on-overflow %boolean; "true"> + +<!ATTLIST number:number number:decimal-places %integer; #IMPLIED> +<!ATTLIST number:scientific-number number:decimal-places %integer; #IMPLIED> + +<!ATTLIST number:number number:min-integer-digits %integer; #IMPLIED> +<!ATTLIST number:scientific-number number:min-integer-digits %integer; #IMPLIED> +<!ATTLIST number:fraction number:min-integer-digits %integer; #IMPLIED> + +<!ATTLIST number:number number:grouping %boolean; "false"> +<!ATTLIST number:scientific-number number:grouping %boolean; "false"> +<!ATTLIST number:fraction number:grouping %boolean; "false"> + +<!ATTLIST number:number number:decimal-replacement CDATA #IMPLIED> + +<!ATTLIST number:scientific-number number:min-exponent-digits %integer; #IMPLIED> + +<!ATTLIST number:fraction number:min-numerator-digits %integer; #IMPLIED> + +<!ATTLIST number:fraction number:min-denominator-digits %integer; #IMPLIED> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod b/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod new file mode 100644 index 000000000000..aa0a25822a45 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/drawing.mod @@ -0,0 +1,837 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ENTITY % points "CDATA" > +<!ENTITY % pathData "CDATA" > +<!ENTITY % gradient-style "(linear|axial|radial|ellipsoid|square|rectangular)" > +<!ENTITY % draw-position "svg:x %coordinate; #IMPLIED svg:y %coordinate; #IMPLIED"> +<!ENTITY % draw-end-position "table:end-cell-address %cell-address; #IMPLIED table:end-x %coordinate; #IMPLIED table:end-y %coordinate; #IMPLIED"> +<!ENTITY % draw-size "svg:width %coordinate; #IMPLIED svg:height %coordinate; #IMPLIED"> +<!ENTITY % draw-transform "draw:transform CDATA #IMPLIED"> +<!ENTITY % draw-viewbox "svg:viewBox CDATA #REQUIRED"> +<!ENTITY % draw-style-name "draw:style-name %styleName; #IMPLIED presentation:style-name %styleName; #IMPLIED draw:text-style-name %styleName; #IMPLIED"> +<!ENTITY % draw-shape-id "CDATA #IMPLIED" > +<!ENTITY % draw-text "(text:p|text:unordered-list|text:ordered-list)*"> +<!ENTITY % zindex "draw:z-index %nonNegativeInteger; #IMPLIED"> +<!ENTITY % distance "CDATA"> +<!ENTITY % rectanglePoint "(top-left|top|top-right|left|center|right|bottom-left|bottom|bottom-right)"> +<!ENTITY % vector3D "CDATA"> +<!ENTITY % text-anchor "text:anchor-type %anchorType; #IMPLIED text:anchor-page-number %positiveInteger; #IMPLIED"> +<!ENTITY % layerName "CDATA"> +<!ENTITY % table-background "table:table-background (true | false) #IMPLIED"> + +<!-- commont presentation shape attributes --> +<!ENTITY % presentation-style-name "presentation:style-name %styleName; #IMPLIED"> +<!ENTITY % presentation-classes "(title|outline|subtitle|text|graphic|object|chart|table|orgchart|page|notes)" > +<!-- ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED" --> +<!ENTITY % presentation-class "presentation:class %presentation-classes; #IMPLIED presentation:placeholder (true|false) #IMPLIED presentation:user-transformed (true|false) #IMPLIED"> +<!ENTITY % presentationEffects "(none|fade|move|stripes|open|close|dissolve|wavyline|random|lines|laser|appear|hide|move-short|checkerboard|rotate|stretch)" > +<!ENTITY % presentationEffectDirections "(none|from-left|from-top|from-right|from-bottom|from-center|from-upper-left|from-upper-right|from-lower-left|from-lower-right|to-left|to-top|to-right|to-bottom|to-upper-left|to-upper-right|to-lower-right|to-lower-left|path|spiral-inward-left|spiral-inward-right|spiral-outward-left|spiral-outward-right|vertical|horizontal|to-center|clockwise|counter-clockwise)" > +<!ENTITY % presentationSpeeds "(slow|medium|fast)" > + +<!-- Drawing shapes --> +<!ELEMENT draw:rect ( office:events?, %draw-text; )> +<!ATTLIST draw:rect %draw-position; > +<!ATTLIST draw:rect %draw-end-position; > +<!ATTLIST draw:rect %table-background; > +<!ATTLIST draw:rect %draw-size; > +<!ATTLIST draw:rect %draw-style-name; > +<!ATTLIST draw:rect %draw-transform; > +<!ATTLIST draw:rect draw:corner-radius %nonNegativeLength; #IMPLIED> +<!ATTLIST draw:rect %zindex;> +<!ATTLIST draw:rect draw:id %draw-shape-id;> +<!ATTLIST draw:rect %text-anchor;> +<!ATTLIST draw:rect draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:line ( office:events?, %draw-text; )> +<!ATTLIST draw:line svg:x1 %length; #REQUIRED> +<!ATTLIST draw:line svg:y1 %length; #REQUIRED> +<!ATTLIST draw:line svg:x2 %length; #REQUIRED> +<!ATTLIST draw:line svg:y2 %length; #REQUIRED> +<!ATTLIST draw:line %draw-style-name; > +<!ATTLIST draw:line %draw-transform; > +<!ATTLIST draw:line %zindex;> +<!ATTLIST draw:line %draw-end-position; > +<!ATTLIST draw:line %table-background; > +<!ATTLIST draw:line draw:id %draw-shape-id;> +<!ATTLIST draw:line %text-anchor;> +<!ATTLIST draw:line draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:polyline ( office:events?, %draw-text; )> +<!ATTLIST draw:polyline %draw-position; > +<!ATTLIST draw:polyline %draw-size; > +<!ATTLIST draw:polyline %draw-viewbox; > +<!ATTLIST draw:polyline draw:points %points; #REQUIRED> +<!ATTLIST draw:polyline %draw-style-name; > +<!ATTLIST draw:polyline %draw-transform; > +<!ATTLIST draw:polyline %zindex;> +<!ATTLIST draw:polyline %draw-end-position; > +<!ATTLIST draw:polyline %table-background; > +<!ATTLIST draw:polyline draw:id %draw-shape-id;> +<!ATTLIST draw:polyline %text-anchor;> +<!ATTLIST draw:polyline draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:polygon ( office:events?, %draw-text; )> +<!ATTLIST draw:polygon %draw-position; > +<!ATTLIST draw:polygon %draw-end-position; > +<!ATTLIST draw:polygon %table-background; > +<!ATTLIST draw:polygon %draw-size; > +<!ATTLIST draw:polygon %draw-viewbox; > +<!ATTLIST draw:polygon draw:points %points; #REQUIRED > +<!ATTLIST draw:polygon %draw-style-name; > +<!ATTLIST draw:polygon %draw-transform; > +<!ATTLIST draw:polygon %zindex;> +<!ATTLIST draw:polygon draw:id %draw-shape-id;> +<!ATTLIST draw:polygon %text-anchor;> +<!ATTLIST draw:polygon draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:path ( office:events?, %draw-text; )> +<!ATTLIST draw:path %draw-position;> +<!ATTLIST draw:path %draw-end-position; > +<!ATTLIST draw:path %table-background; > +<!ATTLIST draw:path %draw-size; > +<!ATTLIST draw:path %draw-viewbox; > +<!ATTLIST draw:path svg:d %pathData; #REQUIRED > +<!ATTLIST draw:path %draw-style-name; > +<!ATTLIST draw:path %draw-transform; > +<!ATTLIST draw:path %zindex;> +<!ATTLIST draw:path draw:id %draw-shape-id;> +<!ATTLIST draw:path %text-anchor;> +<!ATTLIST draw:path draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:circle ( office:events?, %draw-text; )> +<!ATTLIST draw:circle %draw-position; > +<!ATTLIST draw:circle %draw-size; > +<!ATTLIST draw:circle %draw-style-name; > +<!ATTLIST draw:circle %draw-transform; > +<!ATTLIST draw:circle %zindex;> +<!ATTLIST draw:circle %draw-end-position; > +<!ATTLIST draw:circle %table-background; > +<!ATTLIST draw:circle draw:id %draw-shape-id;> +<!ATTLIST draw:circle draw:kind (full|section|cut|arc) "full"> +<!ATTLIST draw:circle draw:start-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST draw:circle draw:end-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST draw:circle %text-anchor;> +<!ATTLIST draw:circle draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:ellipse ( office:events?, %draw-text; )> +<!ATTLIST draw:ellipse %draw-position; > +<!ATTLIST draw:ellipse %draw-size; > +<!ATTLIST draw:ellipse %draw-style-name; > +<!ATTLIST draw:ellipse %draw-transform; > +<!ATTLIST draw:ellipse %zindex;> +<!ATTLIST draw:ellipse %draw-end-position; > +<!ATTLIST draw:ellipse %table-background; > +<!ATTLIST draw:ellipse draw:id %draw-shape-id;> +<!ATTLIST draw:ellipse draw:kind (full|section|cut|arc) "full"> +<!ATTLIST draw:ellipse draw:start-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST draw:ellipse draw:end-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST draw:ellipse %text-anchor;> +<!ATTLIST draw:ellipse draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:connector ( office:events?, %draw-text;)> +<!ATTLIST draw:connector draw:type (standard|lines|line|curve) "standard"> +<!ATTLIST draw:connector draw:line-skew CDATA #IMPLIED> +<!ATTLIST draw:connector %draw-style-name;> +<!ATTLIST draw:connector svg:x1 %coordinate; #REQUIRED> +<!ATTLIST draw:connector svg:y1 %coordinate; #REQUIRED> +<!ATTLIST draw:connector svg:x2 %coordinate; #REQUIRED> +<!ATTLIST draw:connector svg:y2 %coordinate; #REQUIRED> +<!ATTLIST draw:connector draw:start-shape %draw-shape-id;> +<!ATTLIST draw:connector draw:start-glue-point %integer; #IMPLIED> +<!ATTLIST draw:connector draw:end-shape %draw-shape-id;> +<!ATTLIST draw:connector draw:end-glue-point %integer; #IMPLIED> +<!ATTLIST draw:connector %zindex;> +<!ATTLIST draw:connector %draw-end-position; > +<!ATTLIST draw:connector %table-background; > +<!ATTLIST draw:connector draw:id %draw-shape-id;> +<!ATTLIST draw:connector %text-anchor;> +<!ATTLIST draw:connector draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:control EMPTY> +<!ATTLIST draw:control %draw-style-name;> +<!ATTLIST draw:control %draw-position; > +<!ATTLIST draw:control %draw-size; > +<!ATTLIST draw:control %control-id; > +<!ATTLIST draw:control %zindex;> +<!ATTLIST draw:control %draw-end-position; > +<!ATTLIST draw:control %table-background; > +<!ATTLIST draw:control draw:id %draw-shape-id;> +<!ATTLIST draw:control %text-anchor;> +<!ATTLIST draw:control draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:g ( office:events?, (%shapes;)* ) > +<!ATTLIST draw:g %draw-transform; > +<!ATTLIST draw:g %draw-style-name; > +<!ATTLIST draw:g %zindex;> +<!ATTLIST draw:g %draw-end-position; > +<!ATTLIST draw:g %table-background; > +<!ATTLIST draw:g draw:id %draw-shape-id;> +<!ATTLIST draw:g %text-anchor;> +<!ATTLIST draw:g draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:page-thumbnail EMPTY> +<!ATTLIST draw:page-thumbnail draw:page-number %positiveInteger; #IMPLIED> +<!ATTLIST draw:page-thumbnail %draw-position; > +<!ATTLIST draw:page-thumbnail %draw-size; > +<!ATTLIST draw:page-thumbnail %draw-style-name; > +<!ATTLIST draw:page-thumbnail %presentation-class; > +<!ATTLIST draw:page-thumbnail %zindex;> +<!ATTLIST draw:page-thumbnail %draw-end-position; > +<!ATTLIST draw:page-thumbnail %table-background; > +<!ATTLIST draw:page-thumbnail draw:id %draw-shape-id;> +<!ATTLIST draw:page-thumbnail %text-anchor;> +<!ATTLIST draw:page-thumbnail draw:layer %layerName; #IMPLIED> + +<!ELEMENT draw:caption ( office:events?, %draw-text;)> +<!ATTLIST draw:caption %draw-position; > +<!ATTLIST draw:caption %draw-end-position; > +<!ATTLIST draw:caption %table-background; > +<!ATTLIST draw:caption %draw-size; > +<!ATTLIST draw:caption %draw-style-name; > +<!ATTLIST draw:caption %draw-transform; > +<!ATTLIST draw:caption draw:caption-point-x %coordinate; #IMPLIED> +<!ATTLIST draw:caption draw:caption-point-y %coordinate; #IMPLIED> +<!ATTLIST draw:caption %zindex;> +<!ATTLIST draw:caption draw:id %draw-shape-id;> +<!ATTLIST draw:caption %text-anchor;> +<!ATTLIST draw:caption draw:layer %layerName; #IMPLIED> +<!ATTLIST draw:caption draw:corner-radius %nonNegativeLength; #IMPLIED> + +<!ELEMENT draw:measure ( office:events?, %draw-text;)> +<!ATTLIST draw:measure svg:x1 %coordinate; #REQUIRED> +<!ATTLIST draw:measure svg:y1 %coordinate; #REQUIRED> +<!ATTLIST draw:measure svg:x2 %coordinate; #REQUIRED> +<!ATTLIST draw:measure svg:y2 %coordinate; #REQUIRED> +<!ATTLIST draw:measure %draw-end-position; > +<!ATTLIST draw:measure %table-background; > +<!ATTLIST draw:measure %draw-style-name; > +<!ATTLIST draw:measure %draw-transform; > +<!ATTLIST draw:measure %zindex;> +<!ATTLIST draw:measure draw:id %draw-shape-id;> +<!ATTLIST draw:measure %text-anchor;> +<!ATTLIST draw:measure draw:layer %layerName; #IMPLIED> + +<!-- graphic style elements --> +<!ELEMENT draw:gradient EMPTY > +<!ATTLIST draw:gradient draw:name %styleName; #REQUIRED> +<!ATTLIST draw:gradient draw:style %gradient-style; #REQUIRED> +<!ATTLIST draw:gradient draw:cx %coordinate; #IMPLIED> +<!ATTLIST draw:gradient draw:cy %coordinate; #IMPLIED> +<!ATTLIST draw:gradient draw:start-color %color; #IMPLIED> +<!ATTLIST draw:gradient draw:end-color %color; #IMPLIED> +<!ATTLIST draw:gradient draw:start-intensity %percentage; #IMPLIED> +<!ATTLIST draw:gradient draw:end-intensity %percentage; #IMPLIED> +<!ATTLIST draw:gradient draw:angle %integer; #IMPLIED> +<!ATTLIST draw:gradient draw:border %percentage; #IMPLIED> + +<!ELEMENT draw:hatch EMPTY > +<!ATTLIST draw:hatch draw:name %styleName; #REQUIRED> +<!ATTLIST draw:hatch draw:style (single|double|triple) #REQUIRED > +<!ATTLIST draw:hatch draw:color %color; #IMPLIED> +<!ATTLIST draw:hatch draw:distance %length; #IMPLIED> +<!ATTLIST draw:hatch draw:rotation %integer; #IMPLIED> + + +<!ELEMENT draw:fill-image EMPTY > +<!ATTLIST draw:fill-image draw:name %styleName; #REQUIRED> +<!ATTLIST draw:fill-image xlink:href %uriReference; #REQUIRED> +<!ATTLIST draw:fill-image xlink:type (simple) #IMPLIED> +<!ATTLIST draw:fill-image xlink:show (embed) #IMPLIED> +<!ATTLIST draw:fill-image xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:fill-image svg:width %length; #IMPLIED> +<!ATTLIST draw:fill-image svg:height %length; #IMPLIED> + +<!ELEMENT draw:transparency EMPTY> +<!ATTLIST draw:transparency draw:name %styleName; #REQUIRED> +<!ATTLIST draw:transparency draw:style %gradient-style; #REQUIRED> +<!ATTLIST draw:transparency draw:cx %coordinate; #IMPLIED> +<!ATTLIST draw:transparency draw:cy %coordinate; #IMPLIED> +<!ATTLIST draw:transparency draw:start %percentage; #IMPLIED> +<!ATTLIST draw:transparency draw:end %percentage; #IMPLIED> +<!ATTLIST draw:transparency draw:angle %integer; #IMPLIED> +<!ATTLIST draw:transparency draw:border %percentage; #IMPLIED> + +<!ELEMENT draw:marker EMPTY> +<!ATTLIST draw:marker draw:name %styleName; #REQUIRED> +<!ATTLIST draw:marker %draw-viewbox; > +<!ATTLIST draw:marker svg:d %pathData; #REQUIRED> + +<!ELEMENT draw:stroke-dash EMPTY> +<!ATTLIST draw:stroke-dash draw:name %styleName; #REQUIRED> +<!ATTLIST draw:stroke-dash draw:style (rect|round) #IMPLIED> +<!ATTLIST draw:stroke-dash draw:dots1 %integer; #IMPLIED> +<!ATTLIST draw:stroke-dash draw:dots1-length %length; #IMPLIED> +<!ATTLIST draw:stroke-dash draw:dots2 %integer; #IMPLIED> +<!ATTLIST draw:stroke-dash draw:dots2-length %length; #IMPLIED> +<!ATTLIST draw:stroke-dash draw:distance %length; #IMPLIED> + +<!-- stroke attributes --> +<!ATTLIST style:properties draw:stroke (none|dash|solid) #IMPLIED> +<!ATTLIST style:properties draw:stroke-dash CDATA #IMPLIED> +<!ATTLIST style:properties svg:stroke-width %length; #IMPLIED> +<!ATTLIST style:properties svg:stroke-color %color; #IMPLIED> +<!ATTLIST style:properties draw:marker-start %styleName; #IMPLIED> +<!ATTLIST style:properties draw:marker-end %styleName; #IMPLIED> +<!ATTLIST style:properties draw:marker-start-width %length; #IMPLIED> +<!ATTLIST style:properties draw:marker-end-width %length; #IMPLIED> +<!ATTLIST style:properties draw:marker-start-center %boolean; #IMPLIED> +<!ATTLIST style:properties draw:marker-end-center %boolean; #IMPLIED> +<!ATTLIST style:properties svg:stroke-opacity %floatOrPercentage; #IMPLIED> +<!ATTLIST style:properties svg:stroke-linejoin (miter|round|bevel|middle|none|inherit) #IMPLIED> + +<!-- text attributes --> +<!ATTLIST style:properties draw:auto-grow-width %boolean; #IMPLIED> +<!ATTLIST style:properties draw:auto-grow-height %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fit-to-size %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fit-to-contour %boolean; #IMPLIED> +<!ATTLIST style:properties draw:textarea-horizontal-align ( left | center | right | justify ) #IMPLIED> +<!ATTLIST style:properties draw:textarea-vertical-align ( top | middle | bottom ) #IMPLIED> + +<!-- fill attributes --> +<!ATTLIST style:properties draw:fill (none|solid|bitmap|gradient|hatch) #IMPLIED> +<!ATTLIST style:properties draw:fill-color %color; #IMPLIED> +<!ATTLIST style:properties draw:fill-gradient-name %styleName; #IMPLIED> +<!ATTLIST style:properties draw:gradient-step-count CDATA #IMPLIED> +<!ATTLIST style:properties draw:fill-hatch-name %styleName; #IMPLIED> +<!ATTLIST style:properties draw:fill-hatch-solid %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fill-image-name %styleName; #IMPLIED> +<!ATTLIST style:properties style:repeat (no-repeat|repeat|stretch) #IMPLIED> +<!ATTLIST style:properties draw:fill-image-width %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties draw:fill-image-height %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties draw:fill-image-ref-point-x %percentage; #IMPLIED> +<!ATTLIST style:properties draw:fill-image-ref-point-y %percentage; #IMPLIED> +<!ATTLIST style:properties draw:fill-image-ref-point %rectanglePoint; #IMPLIED> +<!ATTLIST style:properties draw:tile-repeat-offset CDATA #IMPLIED> +<!ATTLIST style:properties draw:transparency %percentage; #IMPLIED> +<!ATTLIST style:properties draw:transparency-name %styleName; #IMPLIED> + +<!-- graphic attributes --> +<!ATTLIST style:properties draw:color-mode (greyscale|mono|watermark|standard) #IMPLIED> +<!ATTLIST style:properties draw:luminance %percentage; #IMPLIED> +<!ATTLIST style:properties draw:contrast %percentage; #IMPLIED> +<!ATTLIST style:properties draw:gamma %percentage; #IMPLIED> +<!ATTLIST style:properties draw:red %percentage; #IMPLIED> +<!ATTLIST style:properties draw:green %percentage; #IMPLIED> +<!ATTLIST style:properties draw:blue %percentage; #IMPLIED> +<!ATTLIST style:properties draw:color-inversion %boolean; #IMPLIED> + +<!-- shadow attributes --> +<!ATTLIST style:properties draw:shadow (visible|hidden) #IMPLIED> +<!ATTLIST style:properties draw:shadow-offset-x %length; #IMPLIED> +<!ATTLIST style:properties draw:shadow-offset-y %length; #IMPLIED> +<!ATTLIST style:properties draw:shadow-color %color; #IMPLIED> +<!ATTLIST style:properties draw:shadow-transparency CDATA #IMPLIED> + +<!-- connector attributes --> +<!ATTLIST style:properties draw:start-line-spacing-horizontal %distance; #IMPLIED> +<!ATTLIST style:properties draw:start-line-spacing-vertical %distance; #IMPLIED> +<!ATTLIST style:properties draw:end-line-spacing-horizontal %distance; #IMPLIED> +<!ATTLIST style:properties draw:end-line-spacing-vertical %distance; #IMPLIED> + +<!-- measure attributes --> +<!ATTLIST style:properties draw:line-distance %distance; #IMPLIED> +<!ATTLIST style:properties draw:guide-overhang %distance; #IMPLIED> +<!ATTLIST style:properties draw:guide-distance %distance; #IMPLIED> +<!ATTLIST style:properties draw:start-guide %distance; #IMPLIED> +<!ATTLIST style:properties draw:end-guide %distance; #IMPLIED> +<!ATTLIST style:properties draw:measure-align (automatic|left-outside|inside|right-outside) #IMPLIED> +<!ATTLIST style:properties draw:measure-vertical-align (automatic|above|below|center) #IMPLIED> +<!ATTLIST style:properties draw:unit (automatic|mm|cm|m|km|pt|pc|inch|ft|mi) #IMPLIED> +<!ATTLIST style:properties draw:show-unit %boolean; #IMPLIED> +<!ATTLIST style:properties draw:placing (below|above) #IMPLIED> +<!ATTLIST style:properties draw:parallel %boolean; #IMPLIED> + +<!-- frame attributes --> +<!ATTLIST style:properties draw:frame-display-scrollbar %boolean; #IMPLIED> +<!ATTLIST style:properties draw:frame-display-border %boolean; #IMPLIED> +<!ATTLIST style:properties draw:frame-margin-horizontal %nonNegativePixelLength; #IMPLIED> +<!ATTLIST style:properties draw:frame-margin-vertical %nonNegativePixelLength; #IMPLIED> +<!ATTLIST style:properties draw:size-protect %boolean; #IMPLIED> +<!ATTLIST style:properties draw:move-protect %boolean; #IMPLIED> + +<!-- ole object attributes --> +<!ATTLIST style:properties draw:visible-area-left %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties draw:visible-area-top %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties draw:visible-area-width %positiveLength; #IMPLIED> +<!ATTLIST style:properties draw:visible-area-height %positiveLength; #IMPLIED> + +<!-- fontwork attributes --> +<!ATTLIST style:properties draw:fontwork-style (rotate|upright|slant-x|slant-y|none) #IMPLIED> +<!ATTLIST style:properties draw:fontwork-adjust (left|right|autosize|center) #IMPLIED> +<!ATTLIST style:properties draw:fontwork-distance %distance; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-start %distance; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-mirror %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-outline %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-shadow (normal|slant|none) #IMPLIED> +<!ATTLIST style:properties draw:fontwork-shadow-color %color; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-shadow-offset-x %distance; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-shadow-offset-y %distance; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-form (none|top-circle|bottom-circle|left-circle|right-circle|top-arc|bottom-arc|left-arc|right-arc|button1|button2|button3|button4) #IMPLIED> +<!ATTLIST style:properties draw:fontwork-hide-form %boolean; #IMPLIED> +<!ATTLIST style:properties draw:fontwork-shadow-transparence %percentage; #IMPLIED> + +<!-- caption attributes --> +<!ATTLIST style:properties draw:caption-type (straight-line|angled-line|angled-connector-line) #IMPLIED> +<!ATTLIST style:properties draw:caption-angle-type (fixed|free) #IMPLIED> +<!ATTLIST style:properties draw:caption-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties draw:caption-gap %distance; #IMPLIED> +<!ATTLIST style:properties draw:caption-escape-direction (horizontal|vertical|auto) #IMPLIED> +<!ATTLIST style:properties draw:caption-escape %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties draw:caption-line-length %distance; #IMPLIED> +<!ATTLIST style:properties draw:caption-fit-line-length %boolean; #IMPLIED> + +<!-- Animations --> +<!ELEMENT presentation:sound EMPTY> +<!ATTLIST presentation:sound xlink:href %uriReference; #REQUIRED> +<!ATTLIST presentation:sound xlink:type (simple) #FIXED "simple"> +<!ATTLIST presentation:sound xlink:show (new|replace) #IMPLIED> +<!ATTLIST presentation:sound xlink:actuate (onRequest) "onRequest"> +<!ATTLIST presentation:sound presentation:play-full %boolean; #IMPLIED> + +<!ELEMENT presentation:show-shape (presentation:sound)?> +<!ATTLIST presentation:show-shape draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:show-shape presentation:effect %presentationEffects; "none"> +<!ATTLIST presentation:show-shape presentation:direction %presentationEffectDirections; "none"> +<!ATTLIST presentation:show-shape presentation:speed %presentationSpeeds; "medium"> +<!ATTLIST presentation:show-shape presentation:start-scale %percentage; "100%"> +<!ATTLIST presentation:show-shape presentation:path-id CDATA #IMPLIED > + +<!ELEMENT presentation:show-text (presentation:sound)?> +<!ATTLIST presentation:show-text draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:show-text presentation:effect %presentationEffects; "none"> +<!ATTLIST presentation:show-text presentation:direction %presentationEffectDirections; "none"> +<!ATTLIST presentation:show-text presentation:speed %presentationSpeeds; "medium"> +<!ATTLIST presentation:show-text presentation:start-scale %percentage; "100%"> +<!ATTLIST presentation:show-text presentation:path-id CDATA #IMPLIED > + +<!ELEMENT presentation:hide-shape (presentation:sound)?> +<!ATTLIST presentation:hide-shape draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:hide-shape presentation:effect %presentationEffects; "none"> +<!ATTLIST presentation:hide-shape presentation:direction %presentationEffectDirections; "none"> +<!ATTLIST presentation:hide-shape presentation:speed %presentationSpeeds; "medium"> +<!ATTLIST presentation:hide-shape presentation:start-scale %percentage; "100%"> +<!ATTLIST presentation:hide-shape presentation:path-id CDATA #IMPLIED > + +<!ELEMENT presentation:hide-text (presentation:sound)?> +<!ATTLIST presentation:hide-text draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:hide-text presentation:effect %presentationEffects; "none"> +<!ATTLIST presentation:hide-text presentation:direction %presentationEffectDirections; "none"> +<!ATTLIST presentation:hide-text presentation:speed %presentationSpeeds; "medium"> +<!ATTLIST presentation:hide-text presentation:start-scale %percentage; "100%"> +<!ATTLIST presentation:hide-text presentation:path-id CDATA #IMPLIED > + +<!ELEMENT presentation:dim (presentation:sound)?> +<!ATTLIST presentation:dim draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:dim draw:color %color; #REQUIRED> + +<!ELEMENT presentation:play EMPTY> +<!ATTLIST presentation:play draw:shape-id CDATA #REQUIRED> +<!ATTLIST presentation:play presentation:speed %presentationSpeeds; "medium"> + +<!ELEMENT presentation:animations (presentation:show-shape|presentation:show-text|presentation:hide-shape|presentation:hide-text|presentation:dim|presentation:play)*> + +<!ELEMENT presentation:show EMPTY> +<!ATTLIST presentation:show presentation:name %styleName; #REQUIRED> +<!ATTLIST presentation:show presentation:pages CDATA #REQUIRED> + +<!ELEMENT presentation:settings (presentation:show)*> +<!ATTLIST presentation:settings presentation:start-page %styleName; #IMPLIED> +<!ATTLIST presentation:settings presentation:show %styleName; #IMPLIED> +<!ATTLIST presentation:settings presentation:full-screen %boolean; "true"> +<!ATTLIST presentation:settings presentation:endless %boolean; "false"> +<!ATTLIST presentation:settings presentation:pause %timeDuration; #IMPLIED> +<!ATTLIST presentation:settings presentation:show-logo %boolean; "false"> +<!ATTLIST presentation:settings presentation:force-manual %boolean; "false"> +<!ATTLIST presentation:settings presentation:mouse-visible %boolean; "true"> +<!ATTLIST presentation:settings presentation:mouse-as-pen %boolean; "false"> +<!ATTLIST presentation:settings presentation:start-with-navigator %boolean; "false"> +<!ATTLIST presentation:settings presentation:animations (enabled|disabled) "enabled"> +<!ATTLIST presentation:settings presentation:stay-on-top %boolean; "false"> +<!ATTLIST presentation:settings presentation:transition-on-click (enabled|disabled) "enabled"> + +<!-- Drawing page --> +<!ELEMENT draw:page (office:forms?,(%shapes;)*,presentation:animations?,presentation:notes?)> +<!ATTLIST draw:page draw:name %string; #IMPLIED> +<!ATTLIST draw:page draw:style-name %styleName; #IMPLIED> +<!ATTLIST draw:page draw:master-page-name %styleName; #REQUIRED> +<!ATTLIST draw:page presentation:presentation-page-layout-name %styleName; #IMPLIED> +<!ATTLIST draw:page draw:id %nonNegativeInteger; #IMPLIED> + +<!-- Presentation notes --> +<!ELEMENT presentation:notes (%shapes;)*> + + +<!-- presentation page layouts --> +<!ELEMENT style:presentation-page-layout (presentation:placeholder)* > +<!ATTLIST style:presentation-page-layout style:name %styleName; #REQUIRED> +<!ELEMENT presentation:placeholder EMPTY > +<!ATTLIST presentation:placeholder presentation:object (title|outline|subtitle|text|graphic|object|chart|orgchart|page|notes|handout) #REQUIRED> +<!ATTLIST presentation:placeholder svg:x %coordinateOrPercentage; #REQUIRED> +<!ATTLIST presentation:placeholder svg:y %coordinateOrPercentage; #REQUIRED> +<!ATTLIST presentation:placeholder svg:width %lengthOrPercentage; #REQUIRED> +<!ATTLIST presentation:placeholder svg:height %lengthOrPercentage; #REQUIRED> + +<!-- presentation page attributes --> +<!ATTLIST style:properties presentation:transition-type (manual|automatic|semi-automatic) #IMPLIED > +<!ATTLIST style:properties presentation:transition-style (none|fade-from-left|fade-from-top|fade-from-right|fade-from-bottom|fade-to-center|fade-from-center|move-from-left|move-from-top|move-from-right|move-from-bottom|roll-from-top|roll-from-left|roll-from-right|roll-from-bottom|vertical-stripes|horizontal-stripes|clockwise|counterclockwise|fade-from-upperleft|fade-from-upperright|fade-from-lowerleft|fade-from-lowerright|close-vertical|close-horizontal|open-vertical|open-horizontal|spiralin-left|spiralin-right|spiralout-left|spiralout-right|dissolve|wavyline-from-left|wavyline-from-top|wavyline-from-right|wavyline-from-bottom|random|stretch-from-left|stretch-from-top|stretch-from-right|stretch-from-bottom|vertical-lines|horizontal-lines) #IMPLIED > +<!ATTLIST style:properties presentation:transition-speed %presentationSpeeds; #IMPLIED > +<!ATTLIST style:properties presentation:duration %timeDuration; #IMPLIED> +<!ATTLIST style:properties presentation:visibility (visible|hidden) #IMPLIED> +<!ATTLIST style:properties draw:background-size (full|border) #IMPLIED> +<!ATTLIST style:properties presentation:background-objects-visible %boolean; #IMPLIED> +<!ATTLIST style:properties presentation:background-visible %boolean; #IMPLIED> + + +<!-- text boxes --> +<!ELEMENT draw:text-box (office:events?,draw:image-map?, + (text:h|text:p|text:ordered-list| + text:unordered-list|table:table|chart:chart| + draw:a|draw:text-box|draw:image)*)> +<!ATTLIST draw:text-box %draw-style-name;> +<!ATTLIST draw:text-box %draw-transform; > +<!ATTLIST draw:text-box draw:name %string; #IMPLIED> +<!ATTLIST draw:text-box draw:chain-next-name %string; #IMPLIED> + +<!ATTLIST draw:text-box %text-anchor;> +<!ATTLIST draw:text-box %draw-position;> +<!ATTLIST draw:text-box %draw-end-position; > +<!ATTLIST draw:text-box %table-background; > +<!ATTLIST draw:text-box svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:text-box svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:text-box fo:min-height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:text-box %zindex;> +<!ATTLIST draw:text-box %presentation-class; > +<!ATTLIST draw:text-box %draw-transform; > +<!ATTLIST draw:text-box draw:id %draw-shape-id;> +<!ATTLIST draw:text-box draw:layer %layerName; #IMPLIED> + +<!-- image --> +<!ELEMENT draw:image (office:binary-data?,office:events?,draw:image-map?,svg:desc?,(draw:contour-polygon|draw:contour-path)?)> +<!ATTLIST draw:image %draw-style-name;> +<!ATTLIST draw:image draw:name %string; #IMPLIED> +<!ATTLIST draw:image xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:image xlink:type (simple) #IMPLIED> +<!ATTLIST draw:image xlink:show (embed) #IMPLIED> +<!ATTLIST draw:image xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:image draw:filter-name %string; #IMPLIED> +<!ATTLIST draw:image %text-anchor;> +<!ATTLIST draw:image %draw-position;> +<!ATTLIST draw:image %draw-end-position; > +<!ATTLIST draw:image %table-background; > +<!ATTLIST draw:image svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:image svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:image %presentation-class; > +<!ATTLIST draw:image %zindex;> +<!ATTLIST draw:image draw:id %draw-shape-id;> +<!ATTLIST draw:image draw:layer %layerName; #IMPLIED> + +<!-- objects --> +<!ELEMENT draw:thumbnail EMPTY> +<!ATTLIST draw:thumbnail xlink:href %uriReference; #REQUIRED> +<!ATTLIST draw:thumbnail xlink:type (simple) #IMPLIED> +<!ATTLIST draw:thumbnail xlink:show (embed) #IMPLIED> +<!ATTLIST draw:thumbnail xlink:actuate (onLoad) #IMPLIED> + +<!ELEMENT math:math ANY> <!-- dummy (we have no MathML DTD currently)--> +<!ELEMENT draw:object (draw:thumbnail?,(office:document|math:math)?,office:events?, draw:image-map?, svg:desc?,(draw:contour-polygon|draw:contour-path)?)> +<!ATTLIST draw:object %draw-style-name;> +<!ATTLIST draw:object draw:name %string; #IMPLIED> +<!ATTLIST draw:object xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:object xlink:type (simple) #IMPLIED> +<!ATTLIST draw:object xlink:show (embed) #IMPLIED> +<!ATTLIST draw:object xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:object %text-anchor;> +<!ATTLIST draw:object %draw-position;> +<!ATTLIST draw:object %draw-end-position; > +<!ATTLIST draw:object %table-background; > +<!ATTLIST draw:object svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:object svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:object %presentation-class; > +<!ATTLIST draw:object %zindex;> +<!ATTLIST draw:object draw:id %draw-shape-id;> +<!ATTLIST draw:object draw:layer %layerName; #IMPLIED> +<!ATTLIST draw:object draw:notify-on-update-of-ranges %string; #IMPLIED> + +<!ELEMENT draw:object-ole (office:binary-data?|office:events?|draw:image-map?|svg:desc?|draw:contour-polygon?|draw:contour-path?|draw:thumbnail?)> +<!ATTLIST draw:object-ole draw:class-id CDATA #IMPLIED> +<!ATTLIST draw:object-ole %draw-style-name;> +<!ATTLIST draw:object-ole draw:name %string; #IMPLIED> +<!ATTLIST draw:object-ole xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:object-ole xlink:type (simple) #IMPLIED> +<!ATTLIST draw:object-ole xlink:show (embed) #IMPLIED> +<!ATTLIST draw:object-ole xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:object-ole %text-anchor;> +<!ATTLIST draw:object-ole %draw-position;> +<!ATTLIST draw:object-ole %draw-end-position; > +<!ATTLIST draw:object-ole %table-background; > +<!ATTLIST draw:object-ole svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:object-ole svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:object-ole %presentation-class; > +<!ATTLIST draw:object-ole %zindex;> +<!ATTLIST draw:object-ole draw:id %draw-shape-id;> +<!ATTLIST draw:object-ole draw:layer %layerName; #IMPLIED> + +<!ELEMENT svg:desc (#PCDATA)> + +<!ELEMENT draw:contour-polygon EMPTY> +<!ATTLIST draw:contour-polygon svg:width %coordinate; #REQUIRED> +<!ATTLIST draw:contour-polygon svg:height %coordinate; #REQUIRED> +<!ATTLIST draw:contour-polygon %draw-viewbox;> +<!ATTLIST draw:contour-polygon svg:points %points; #REQUIRED> + +<!ELEMENT draw:contour-path EMPTY> +<!ATTLIST draw:contour-path svg:width %coordinate; #REQUIRED> +<!ATTLIST draw:contour-path svg:height %coordinate; #REQUIRED> +<!ATTLIST draw:contour-path %draw-viewbox;> +<!ATTLIST draw:contour-path svg:d %pathData; #REQUIRED> + +<!-- hyperlink --> +<!ELEMENT draw:a (draw:image|draw:text-box)> +<!ATTLIST draw:a xlink:href %uriReference; #REQUIRED> +<!ATTLIST draw:a xlink:type (simple) #FIXED "simple"> +<!ATTLIST draw:a xlink:show (new|replace) #IMPLIED> +<!ATTLIST draw:a xlink:actuate (onRequest) "onRequest"> +<!ATTLIST draw:a office:name %string; #IMPLIED> +<!ATTLIST draw:a office:target-frame-name %string; #IMPLIED> +<!ATTLIST draw:a office:server-map %boolean; "false"> + +<!-- 3d properties --> +<!ATTLIST style:properties dr3d:horizontal-segments %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties dr3d:vertical-segments %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties dr3d:edge-rounding %percentage; #IMPLIED> +<!ATTLIST style:properties dr3d:edge-rounding-mode (correct|attractive) #IMPLIED> +<!ATTLIST style:properties dr3d:back-scale %percentage; #IMPLIED> +<!ATTLIST style:properties dr3d:end-angle %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties dr3d:depth %length; #IMPLIED> +<!ATTLIST style:properties dr3d:backface-culling (enabled|disabled) #IMPLIED> +<!ATTLIST style:properties dr3d:lighting-mode (standard|double-sided) #IMPLIED> +<!ATTLIST style:properties dr3d:normals-kind (object|flat|sphere) #IMPLIED> +<!ATTLIST style:properties dr3d:normals-direction (normal|inverse) #IMPLIED> +<!ATTLIST style:properties dr3d:texture-generation-mode-x (object|parallel|sphere) #IMPLIED> +<!ATTLIST style:properties dr3d:texture-generation-mode-y (object|parallel|sphere) #IMPLIED> +<!ATTLIST style:properties dr3d:texture-kind (luminance|intesity|color) #IMPLIED> +<!ATTLIST style:properties dr3d:texture-filter (enabled|disabled) #IMPLIED> +<!ATTLIST style:properties dr3d:texture-mode (replace|modulate|blend) #IMPLIED> +<!ATTLIST style:properties dr3d:ambient-color %color; #IMPLIED> +<!ATTLIST style:properties dr3d:emissive-color %color; #IMPLIED> +<!ATTLIST style:properties dr3d:specular-color %color; #IMPLIED> +<!ATTLIST style:properties dr3d:diffuse-color %color; #IMPLIED> +<!ATTLIST style:properties dr3d:shininess %percentage; #IMPLIED> +<!ATTLIST style:properties dr3d:shadow (visible|hidden) #IMPLIED> + +<!ELEMENT dr3d:light EMPTY> +<!ATTLIST dr3d:light dr3d:diffuse-color %color; #IMPLIED> +<!ATTLIST dr3d:light dr3d:direction %vector3D; #REQUIRED> +<!ATTLIST dr3d:light dr3d:enabled %boolean; #IMPLIED> +<!ATTLIST dr3d:light dr3d:specular %boolean; #IMPLIED> + +<!ENTITY % shapes3d "(dr3d:scene|dr3d:extrude|dr3d:sphere|dr3d:rotate|dr3d:cube)"> + +<!ELEMENT dr3d:cube EMPTY> +<!ATTLIST dr3d:cube dr3d:transform CDATA #IMPLIED> +<!ATTLIST dr3d:cube dr3d:min-edge %vector3D; #IMPLIED> +<!ATTLIST dr3d:cube dr3d:max-edge %vector3D; #IMPLIED> +<!ATTLIST dr3d:cube %zindex;> +<!ATTLIST dr3d:cube draw:id %draw-shape-id;> +<!ATTLIST dr3d:cube %draw-end-position; > +<!ATTLIST dr3d:cube %table-background; > +<!ATTLIST dr3d:cube %draw-style-name; > +<!ATTLIST dr3d:cube draw:layer %layerName; #IMPLIED> + +<!ELEMENT dr3d:sphere EMPTY> +<!ATTLIST dr3d:sphere dr3d:transform CDATA #IMPLIED> +<!ATTLIST dr3d:sphere dr3d:center %vector3D; #IMPLIED> +<!ATTLIST dr3d:sphere dr3d:size %vector3D; #IMPLIED> +<!ATTLIST dr3d:sphere %zindex;> +<!ATTLIST dr3d:sphere draw:id %draw-shape-id;> +<!ATTLIST dr3d:sphere %draw-end-position; > +<!ATTLIST dr3d:sphere %table-background; > +<!ATTLIST dr3d:sphere %draw-style-name; > +<!ATTLIST dr3d:sphere draw:layer %layerName; #IMPLIED> + +<!ELEMENT dr3d:extrude EMPTY> +<!ATTLIST dr3d:extrude dr3d:transform CDATA #IMPLIED> +<!ATTLIST dr3d:extrude %draw-viewbox;> +<!ATTLIST dr3d:extrude svg:d %pathData; #REQUIRED > +<!ATTLIST dr3d:extrude %zindex;> +<!ATTLIST dr3d:extrude draw:id %draw-shape-id;> +<!ATTLIST dr3d:extrude %draw-end-position; > +<!ATTLIST dr3d:extrude %table-background; > +<!ATTLIST dr3d:extrude %draw-style-name; > +<!ATTLIST dr3d:extrude draw:layer %layerName; #IMPLIED> + +<!ELEMENT dr3d:rotate EMPTY> +<!ATTLIST dr3d:rotate dr3d:transform CDATA #IMPLIED> +<!ATTLIST dr3d:rotate %draw-viewbox;> +<!ATTLIST dr3d:rotate svg:d %pathData; #REQUIRED > +<!ATTLIST dr3d:rotate %zindex;> +<!ATTLIST dr3d:rotate draw:id %draw-shape-id;> +<!ATTLIST dr3d:rotate %draw-end-position; > +<!ATTLIST dr3d:rotate %table-background; > +<!ATTLIST dr3d:rotate %draw-style-name; > +<!ATTLIST dr3d:rotate draw:layer %layerName; #IMPLIED> + +<!ELEMENT dr3d:scene (dr3d:light*,(%shapes3d;)*)> +<!ATTLIST dr3d:scene %draw-style-name; > +<!ATTLIST dr3d:scene svg:x %coordinate; #IMPLIED> +<!ATTLIST dr3d:scene svg:y %coordinate; #IMPLIED> +<!ATTLIST dr3d:scene svg:width %length; #IMPLIED> +<!ATTLIST dr3d:scene svg:height %length; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:vrp %vector3D; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:vpn %vector3D; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:vup %vector3D; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:projection (parallel|perspective) #IMPLIED> +<!ATTLIST dr3d:scene dr3d:transform CDATA #IMPLIED> +<!ATTLIST dr3d:scene dr3d:distance %length; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:focal-length %length; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:shadow-slant %nonNegativeInteger; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:shade-mode (flat|phong|gouraud|draft) #IMPLIED> +<!ATTLIST dr3d:scene dr3d:ambient-color %color; #IMPLIED> +<!ATTLIST dr3d:scene dr3d:lighting-mode %boolean; #IMPLIED> +<!ATTLIST dr3d:scene %zindex;> +<!ATTLIST dr3d:scene draw:id %draw-shape-id;> +<!ATTLIST dr3d:scene %draw-end-position; > +<!ATTLIST dr3d:scene %table-background; > + +<!-- layer --> + +<!ELEMENT draw:layer-set (draw:layer*)> + +<!ELEMENT draw:layer EMPTY> +<!ATTLIST draw:layer draw:name %layerName; #REQUIRED> + +<!-- events --> +<!ELEMENT presentation:event (presentation:sound)?> +<!ATTLIST presentation:event %event-name;> +<!ATTLIST presentation:event presentation:action (none|previous-page|next-page|first-page|last-page|hide|stop|execute|show|verb|fade-out|sound) #REQUIRED> +<!ATTLIST presentation:event presentation:effect %presentationEffects; "none"> +<!ATTLIST presentation:event presentation:direction %presentationEffectDirections; "none"> +<!ATTLIST presentation:event presentation:speed %presentationSpeeds; "medium"> +<!ATTLIST presentation:event presentation:start-scale %percentage; "100%"> +<!ATTLIST presentation:event xlink:href %uriReference; #IMPLIED> +<!ATTLIST presentation:event xlink:type (simple) #IMPLIED> +<!ATTLIST presentation:event xlink:show (embed) #IMPLIED> +<!ATTLIST presentation:event xlink:actuate (onRequest) #IMPLIED> +<!ATTLIST presentation:event presentation:verb %nonNegativeInteger; #IMPLIED> + +<!-- applets --> +<!ELEMENT draw:applet (draw:thumbnail?, draw:param*, svg:desc?)> +<!ATTLIST draw:applet xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:applet xlink:type (simple) #IMPLIED> +<!ATTLIST draw:applet xlink:show (embed) #IMPLIED> +<!ATTLIST draw:applet xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:applet draw:code CDATA #REQUIRED> +<!ATTLIST draw:applet draw:object CDATA #IMPLIED> +<!ATTLIST draw:applet draw:archive CDATA #IMPLIED> +<!ATTLIST draw:applet draw:may-script %boolean; "false"> +<!ATTLIST draw:applet draw:name CDATA #IMPLIED> +<!ATTLIST draw:applet %draw-style-name;> +<!ATTLIST draw:applet svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:applet svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:applet %zindex;> +<!ATTLIST draw:applet draw:layer %layerName; #IMPLIED> +<!ATTLIST draw:applet %draw-position;> +<!ATTLIST draw:applet %draw-end-position; > + +<!-- plugins --> +<!ELEMENT draw:plugin (draw:thumbnail?, draw:param*, svg:desc?)> +<!ATTLIST draw:plugin xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:plugin xlink:type (simple) #IMPLIED> +<!ATTLIST draw:plugin xlink:show (embed) #IMPLIED> +<!ATTLIST draw:plugin xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:plugin draw:mime-type CDATA #IMPLIED> +<!ATTLIST draw:plugin draw:name CDATA #IMPLIED> +<!ATTLIST draw:plugin %draw-style-name;> +<!ATTLIST draw:plugin svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:plugin svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:plugin %zindex;> +<!ATTLIST draw:plugin draw:layer %layerName; #IMPLIED> +<!ATTLIST draw:plugin %draw-position;> +<!ATTLIST draw:plugin %draw-end-position; > + +<!-- Paramaters --> +<!ELEMENT draw:param EMPTY> +<!ATTLIST draw:param draw:name CDATA #IMPLIED> +<!ATTLIST draw:param draw:value CDATA #IMPLIED> + +<!-- Floating Frames --> +<!ELEMENT draw:floating-frame (draw:thumbnail?, svg:desc?)> +<!ATTLIST draw:floating-frame xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:floating-frame xlink:type (simple) #IMPLIED> +<!ATTLIST draw:floating-frame xlink:show (embed) #IMPLIED> +<!ATTLIST draw:floating-frame xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST draw:floating-frame draw:name CDATA #IMPLIED> +<!ATTLIST draw:floating-frame draw:frame-name CDATA #IMPLIED> +<!ATTLIST draw:floating-frame %draw-style-name;> +<!ATTLIST draw:floating-frame svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:floating-frame svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST draw:floating-frame %zindex;> +<!ATTLIST draw:floating-frame draw:layer %layerName; #IMPLIED> +<!ATTLIST draw:floating-frame %draw-position;> +<!ATTLIST draw:floating-frame %draw-end-position; > + +<!-- Image Maps --> +<!ELEMENT draw:image-map + (draw:area-rectangle|draw:area-circle|draw:area-polygon)*> + +<!ELEMENT draw:area-rectangle (svg:desc?,office:events?)> +<!ATTLIST draw:area-rectangle xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:area-rectangle xlink:type (simple) #IMPLIED> +<!ATTLIST draw:area-rectangle office:target-frame-name CDATA #IMPLIED> +<!ATTLIST draw:area-rectangle xlink:show (new|replace) #IMPLIED> +<!ATTLIST draw:area-rectangle office:name CDATA #IMPLIED> +<!ATTLIST draw:area-rectangle draw:nohref (nohref) #IMPLIED> +<!ATTLIST draw:area-rectangle svg:x %coordinate; #REQUIRED> +<!ATTLIST draw:area-rectangle svg:y %coordinate; #REQUIRED> +<!ATTLIST draw:area-rectangle svg:width %coordinate; #REQUIRED> +<!ATTLIST draw:area-rectangle svg:height %coordinate; #REQUIRED> + +<!ELEMENT draw:area-circle (svg:desc?,office:events?)> +<!ATTLIST draw:area-circle xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:area-circle xlink:type (simple) #IMPLIED> +<!ATTLIST draw:area-circle office:target-frame-name CDATA #IMPLIED> +<!ATTLIST draw:area-circle xlink:show (new|replace) #IMPLIED> +<!ATTLIST draw:area-circle office:name CDATA #IMPLIED> +<!ATTLIST draw:area-circle draw:nohref (nohref) #IMPLIED> +<!ATTLIST draw:area-circle svg:cx %coordinate; #REQUIRED> +<!ATTLIST draw:area-circle svg:cy %coordinate; #REQUIRED> +<!ATTLIST draw:area-circle svg:r %coordinate; #REQUIRED> + +<!ELEMENT draw:area-polygon (svg:desc?,office:events?)> +<!ATTLIST draw:area-polygon xlink:href %uriReference; #IMPLIED> +<!ATTLIST draw:area-polygon xlink:type (simple) #IMPLIED> +<!ATTLIST draw:area-polygon office:target-frame-name CDATA #IMPLIED> +<!ATTLIST draw:area-polygon xlink:show (new|replace) #IMPLIED> +<!ATTLIST draw:area-polygon office:name CDATA #IMPLIED> +<!ATTLIST draw:area-polygon draw:nohref (nohref) #IMPLIED> +<!ATTLIST draw:area-polygon svg:x %coordinate; #REQUIRED> +<!ATTLIST draw:area-polygon svg:y %coordinate; #REQUIRED> +<!ATTLIST draw:area-polygon svg:width %coordinate; #REQUIRED> +<!ATTLIST draw:area-polygon svg:height %coordinate; #REQUIRED> +<!ATTLIST draw:area-polygon svg:points %points; #REQUIRED> +<!ATTLIST draw:area-polygon svg:viewBox CDATA #REQUIRED> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod b/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod new file mode 100644 index 000000000000..e4d640d012c8 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/dtypes.mod @@ -0,0 +1,143 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!-- datatypes corresponding to XML Schema Part 2 W3C Working draft of --> +<!-- 07 April 2000 --> + +<!-- string --> +<!ENTITY % string "CDATA"> +<!ENTITY % cString "#PCDATA"> + +<!-- boolean (values are "true" and "false" --> +<!ENTITY % boolean "CDATA"> + +<!-- integer ( ..., -2, -1, 0, 1, 2, ...) --> +<!ENTITY % integer "CDATA"> + +<!-- non negative integer ( 0, 1, 2, ...) --> +<!ENTITY % nonNegativeInteger "CDATA"> + +<!-- positive integer ( 1, 2, ...) --> +<!ENTITY % positiveInteger "CDATA"> +<!ENTITY % cPositiveInteger "#PCDATA"> + +<!ENTITY % positiveNumberOrDefault "CDATA"> + +<!-- time duration as specified by ISO8601, section 5.5.3.2 --> +<!ENTITY % timeDuration "CDATA"> +<!ENTITY % cTimeDuration "#PCDATA"> + +<!-- time instance as specified by ISO8601, section 5.4 --> +<!ENTITY % timeInstance "CDATA"> +<!ENTITY % cTimeInstance "#PCDATA"> + +<!-- date instance as specified by ISO8601, section 5.2.1.1, extended format--> +<!ENTITY % date "CDATA"> +<!ENTITY % cDate "#PCDATA"> + +<!-- date duration, like timDuration but truncated to full dates --> +<!ENTITY % dateDuration "CDATA"> +<!ENTITY % cDateDuration "#PCDATA"> + +<!-- URI reference --> +<!ENTITY % uriReference "CDATA"> + +<!-- language code as specified by RFC1766 --> +<!ENTITY % language "CDATA"> +<!ENTITY % cLanguage "#PCDATA"> + +<!-- float --> +<!ENTITY % float "CDATA"> + +<!-- Some other common used data types --> + +<!-- a single UNICODE character --> +<!ENTITY % character "CDATA"> + +<!-- a style name --> +<!ENTITY % styleName "CDATA"> + +<!-- a target frame mame --> +<!ENTITY % targetFrameName "CDATA"> + +<!-- a language without a country as specified by ISO639 --> +<!ENTITY % languageOnly "CDATA"> + +<!-- a country as specified by ISO3166 --> +<!ENTITY % country "CDATA"> + +<!-- a color value having the format #rrggbb --> +<!ENTITY % color "CDATA"> +<!-- a color value having the format #rrggbb or "transparent" --> +<!ENTITY % transparentOrColor "CDATA"> + +<!-- a percentage --> +<!ENTITY % percentage "CDATA"> + +<!-- a length (i.e. 1cm or .6inch) --> +<!ENTITY % length "CDATA"> +<!ENTITY % positiveLength "CDATA"> +<!ENTITY % nonNegativeLength "CDATA"> +<!ENTITY % lengthOrNoLimit "CDATA"> + +<!-- a length or a percentage --> +<!ENTITY % lengthOrPercentage "CDATA"> +<!ENTITY % positiveLengthOrPercentage "CDATA"> + +<!-- a pixel length (i.e. 2px) --> +<!ENTITY % nonNegativePixelLength "CDATA"> + +<!-- a float or a percentage --> +<!ENTITY % floatOrPercentage "CDATA"> + +<!-- a text encoding --> +<!ENTITY % textEncoding "CDATA"> + +<!-- cell address and cell range address --> +<!ENTITY % cell-address "CDATA"> +<!ENTITY % cell-range-address "CDATA"> +<!ENTITY % cell-range-address-list "CDATA"> + +<!-- value types --> +<!ENTITY % valueType "(float|time|date|percentage|currency|boolean|string)"> + +<!-- an svg coordinate in different distance formats --> +<!ENTITY % coordinate "CDATA"> + +<!ENTITY % coordinateOrPercentage "CDATA"> + +<!ENTITY % shape "draw:rect|draw:line|draw:polyline|draw:polygon|draw:path| + draw:circle|draw:ellipse|draw:g|draw:page-thumbnail| + draw:text-box|draw:image|draw:object|draw:object-ole| + draw:applet|draw:floating-frame|draw:plugin| + draw:measure|draw:caption|draw:connector|chart:chart| + dr3d:scene|draw:control" > +<!ENTITY % shapes "(%shape;)" > + +<!ENTITY % anchorType "(page|frame|paragraph|char|as-char)"> + +<!ENTITY % control-id "form:id CDATA #REQUIRED"> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/form.mod b/xmerge/source/palmtests/qa/comparator/dtd/form.mod new file mode 100644 index 000000000000..77a91206c451 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/form.mod @@ -0,0 +1,308 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ENTITY % controls "form:text|form:textarea|form:fixed-text|form:file| + form:password|form:formatted-text|form:button|form:image| + form:checkbox|form:radio|form:listbox|form:combobox|form:frame| + form:hidden|form:image-frame|form:grid|form:generic-control"> + +<!ENTITY % name "form:name CDATA #IMPLIED"> +<!ENTITY % service-name "form:service-name CDATA #IMPLIED"> + +<!ENTITY % navigation "(none|current|parent)"> +<!ENTITY % cycles "(records|current|page)"> +<!ENTITY % url "CDATA"> + + +<!ENTITY % types "(submit|reset|push|url)"> +<!ENTITY % button-type "form:button-type %types; 'push'"> +<!ENTITY % current-selected "form:current-selected %boolean; 'false'"> +<!ENTITY % current-value "form:current-value CDATA #IMPLIED"> +<!ENTITY % value "form:value CDATA #IMPLIED"> +<!ENTITY % disabled "form:disabled %boolean; 'false'"> +<!ENTITY % dropdown "form:dropdown %boolean; 'false'"> +<!ENTITY % for "form:for CDATA #IMPLIED"> +<!ENTITY % image-data "form:image-data %url; #IMPLIED"> +<!ENTITY % label "form:label CDATA #IMPLIED"> +<!ENTITY % max-length "form:max-length CDATA #IMPLIED"> +<!ENTITY % printable "form:printable %boolean; 'true'"> +<!ENTITY % readonly "form:readonly %boolean; 'false'"> +<!ENTITY % size "form:size CDATA #IMPLIED"> +<!ENTITY % selected "form:selected %boolean; 'false'"> +<!ENTITY % size "form:size CDATA #IMPLIED"> +<!ENTITY % tab-index "form:tab-index CDATA #IMPLIED"> +<!ENTITY % target-frame "office:target-frame CDATA '_blank'"> +<!ENTITY % target-location "xlink:href %url; #IMPLIED"> +<!ENTITY % tab-stop "form:tab-stop %boolean; 'true'"> +<!ENTITY % title "form:title CDATA #IMPLIED"> +<!ENTITY % default-value "form:default-value CDATA #IMPLIED"> +<!ENTITY % bound-column "form:bound-column CDATA #IMPLIED"> +<!ENTITY % convert-empty "form:convert-empty-to-null %boolean; 'false'"> +<!ENTITY % data-field "form:data-field CDATA #IMPLIED"> +<!ENTITY % list-source "form:list-source CDATA #IMPLIED"> +<!ENTITY % list-source-types "(table|query|sql|sql-pass-through|value-list|table-fields)"> +<!ENTITY % list-source-type "form:list-source-type %list-source-types; #IMPLIED"> + +<!ELEMENT form:control (%controls;)+> +<!ATTLIST form:control %name; + %service-name; + %control-id;> + +<!ELEMENT form:form (form:properties?, office:events?, (form:control|form:form)*)> +<!ATTLIST form:form %name; %service-name;> +<!ATTLIST form:form xlink:href %url; #IMPLIED> +<!ATTLIST form:form form:enctype CDATA "application/x-www-form-urlencoded"> +<!ATTLIST form:form form:method CDATA "get"> +<!ATTLIST form:form office:target-frame CDATA "_blank"> +<!ATTLIST form:form form:allow-deletes %boolean; "true"> +<!ATTLIST form:form form:allow-inserts %boolean; "true"> +<!ATTLIST form:form form:allow-updates %boolean; "true"> +<!ATTLIST form:form form:apply-filter %boolean; "false"> +<!ATTLIST form:form form:command CDATA #IMPLIED> +<!ATTLIST form:form form:command-type (table|query|command) "command"> +<!ATTLIST form:form form:datasource CDATA #IMPLIED> +<!ATTLIST form:form form:detail-fields CDATA #IMPLIED> +<!ATTLIST form:form form:escape-processing %boolean; "true"> +<!ATTLIST form:form form:filter CDATA #IMPLIED> +<!ATTLIST form:form form:ignore-result %boolean; "false"> +<!ATTLIST form:form form:master-fields CDATA #IMPLIED> +<!ATTLIST form:form form:navigation-mode %navigation; #IMPLIED> +<!ATTLIST form:form form:order CDATA #IMPLIED> +<!ATTLIST form:form form:tab-cycle %cycles; #IMPLIED> + +<!ELEMENT office:forms (form:form*)> +<!ATTLIST office:forms form:automatic-focus %boolean; "false"> +<!ATTLIST office:forms form:apply-design-mode %boolean; "true"> + +<!ELEMENT form:text (form:properties?, office:events?)> +<!ATTLIST form:text %current-value; + %disabled; + %max-length; + %printable; + %readonly; + %tab-index; + %tab-stop; + %title; + %value; + %convert-empty; + %data-field;> + +<!ELEMENT form:textarea (form:properties?, office:events?)> +<!ATTLIST form:textarea %current-value; + %disabled; + %max-length; + %printable; + %readonly; + %tab-index; + %tab-stop; + %title; + %value; + %convert-empty; + %data-field;> + +<!ELEMENT form:password (form:properties?, office:events?)> +<!ATTLIST form:password %disabled; + %max-length; + %printable; + %tab-index; + %tab-stop; + %title; + %value; + %convert-empty;> + +<!ATTLIST form:password form:echo-char CDATA "*"> + +<!ELEMENT form:file (form:properties?, office:events?)> +<!ATTLIST form:file %current-value; + %disabled; + %max-length; + %printable; + %readonly; + %tab-index; + %tab-stop; + %title; + %value;> + +<!ELEMENT form:formatted-text (form:properties?, office:events?)> +<!ATTLIST form:formatted-text %current-value; + %disabled; + %max-length; + %printable; + %readonly; + %tab-index; + %tab-stop; + %title; + %value; + %convert-empty; + %data-field;> +<!ATTLIST form:formatted-text form:max-value CDATA #IMPLIED> +<!ATTLIST form:formatted-text form:min-value CDATA #IMPLIED> +<!ATTLIST form:formatted-text form:validation %boolean; "false"> + +<!ELEMENT form:fixed-text (form:properties?, office:events?)> +<!ATTLIST form:fixed-text %for; + %disabled; + %label; + %printable; + %title;> +<!ATTLIST form:fixed-text form:multi-line %boolean; "false"> + +<!ELEMENT form:combobox (form:properties?, office:events?, form:item*)> +<!ATTLIST form:combobox %current-value; + %disabled; + %dropdown; + %max-length; + %printable; + %readonly; + %size; + %tab-index; + %tab-stop; + %title; + %value; + %convert-empty; + %data-field; + %list-source; + %list-source-type;> +<!ATTLIST form:combobox form:auto-complete %boolean; #IMPLIED> + +<!ELEMENT form:item (#PCDATA)> +<!ATTLIST form:item %label;> + +<!ELEMENT form:listbox (form:properties?, office:events?, form:option*)> +<!ATTLIST form:listbox %disabled; + %dropdown; + %printable; + %size; + %tab-index; + %tab-stop; + %title; + %bound-column; + %data-field; + %list-source; + %list-source-type;> +<!ATTLIST form:listbox form:multiple %boolean; "false"> + +<!ELEMENT form:option (#PCDATA)> +<!ATTLIST form:option %current-selected; + %selected; + %label; + %value;> + +<!ELEMENT form:button (form:properties?, office:events?)> +<!ATTLIST form:button %button-type; + %disabled; + %label; + %image-data; + %printable; + %tab-index; + %tab-stop; + %target-frame; + %target-location; + %title; + %value;> +<!ATTLIST form:button form:default-button %boolean; "false"> + +<!ELEMENT form:image (form:properties?, office:events?)> +<!ATTLIST form:image %button-type; + %disabled; + %image-data; + %printable; + %tab-index; + %tab-stop; + %target-frame; + %target-location; + %title; + %value;> + +<!ELEMENT form:checkbox (form:properties?, office:events?)> +<!ATTLIST form:checkbox %disabled; + %label; + %printable; + %tab-index; + %tab-stop; + %title; + %value; + %data-field;> +<!ENTITY % states "(unchecked|checked|unknown)"> +<!ATTLIST form:checkbox form:current-state %states; #IMPLIED> +<!ATTLIST form:checkbox form:is-tristate %boolean; "false"> +<!ATTLIST form:checkbox form:state %states; "unchecked"> + +<!ELEMENT form:radio (form:properties?, office:events?)> +<!ATTLIST form:radio %current-selected; + %disabled; + %label; + %printable; + %selected; + %tab-index; + %tab-stop; + %title; + %value; + %data-field;> + +<!ELEMENT form:frame (form:properties?, office:events?)> +<!ATTLIST form:frame %disabled; + %for; + %label; + %printable; + %title;> + +<!ELEMENT form:image-frame (form:properties?, office:events?)> +<!ATTLIST form:image-frame %disabled; + %image-data; + %printable; + %readonly; + %title; + %data-field;> + +<!ELEMENT form:hidden (form:properties?, office:events?)> +<!ATTLIST form:hidden %name; + %service-name; + %value;> + +<!ELEMENT form:grid (form:properties?, office:events?, form:column*)> +<!ATTLIST form:grid %disabled; + %printable; + %tab-index; + %tab-stop; + %title;> +<!ENTITY % column-type "form:text| form:textarea| form:formatted-text|form:checkbox| form:listbox| form:combobox"> +<!ELEMENT form:column (%column-type;)+> +<!ATTLIST form:column %name; + %service-name; + %label;> + +<!ELEMENT form:generic-control (form:properties?, office:events?)> + + +<!ELEMENT form:properties (form:property+)> +<!ELEMENT form:property (form:property-value*)> +<!ATTLIST form:property form:property-is-list %boolean; #IMPLIED> +<!ATTLIST form:property form:property-name CDATA #REQUIRED> +<!ATTLIST form:property form:property-type (boolean|short|int|long|double|string) #REQUIRED> +<!ELEMENT form:property-value (#PCDATA)> + diff --git a/xmerge/source/palmtests/qa/comparator/dtd/meta.mod b/xmerge/source/palmtests/qa/comparator/dtd/meta.mod new file mode 100644 index 000000000000..1ea845bcb02d --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/meta.mod @@ -0,0 +1,90 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + + +<!ELEMENT meta:generator (%cString;)> + +<!ELEMENT dc:title (%cString;)> + +<!ELEMENT dc:description (%cString;)> + +<!ELEMENT dc:subject (%cString;)> + +<!ELEMENT meta:keywords (meta:keyword)*> +<!ELEMENT meta:keyword (%cString;)> + +<!ELEMENT meta:initial-creator (%cString;)> + +<!ELEMENT dc:creator (%cString;)> + +<!ELEMENT meta:printed-by (%cString;)> + +<!ELEMENT meta:creation-date (%cTimeInstance;)> + +<!ELEMENT dc:date (%cTimeInstance;)> + +<!ELEMENT meta:print-date (%cTimeInstance;)> + +<!ELEMENT meta:template EMPTY> +<!ATTLIST meta:template xlink:type (simple) #FIXED "simple"> +<!ATTLIST meta:template xlink:actuate (onRequest) "onRequest"> +<!ATTLIST meta:template xlink:href %uriReference; #REQUIRED> +<!ATTLIST meta:template xlink:title %string; #IMPLIED> +<!ATTLIST meta:template meta:date %timeInstance; #IMPLIED> + +<!ELEMENT meta:auto-reload EMPTY> +<!ATTLIST meta:auto-reload xlink:type (simple) #IMPLIED> +<!ATTLIST meta:auto-reload xlink:show (replace) #IMPLIED> +<!ATTLIST meta:auto-reload xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST meta:auto-reload xlink:href %uriReference; #IMPLIED> +<!ATTLIST meta:auto-reload meta:delay %timeDuration; "P0S"> + +<!ELEMENT meta:hyperlink-behaviour EMPTY> +<!ATTLIST meta:hyperlink-behaviour office:target-frame-name %targetFrameName; #IMPLIED> +<!ATTLIST meta:hyperlink-behaviour xlink:show (new|replace) #IMPLIED> + +<!ELEMENT dc:language (%cLanguage;)> + +<!ELEMENT meta:editing-cycles (%cPositiveInteger;)> + +<!ELEMENT meta:editing-duration (%cTimeDuration;)> + +<!ELEMENT meta:user-defined (%cString;)> +<!ATTLIST meta:user-defined meta:name %string; #REQUIRED> + +<!ELEMENT meta:document-statistic EMPTY> +<!ATTLIST meta:document-statistic meta:page-count %positiveInteger; #IMPLIED + meta:table-count %nonNegativeInteger; #IMPLIED + meta:draw-count %nonNegativeInteger; #IMPLIED + meta:image-count %nonNegativeInteger; #IMPLIED + meta:ole-object-count %nonNegativeInteger; #IMPLIED + meta:paragraph-count %nonNegativeInteger; #IMPLIED + meta:word-count %nonNegativeInteger; #IMPLIED + meta:character-count %nonNegativeInteger; #IMPLIED + meta:row-count %nonNegativeInteger; #IMPLIED + meta:cell-count %nonNegativeInteger; #IMPLIED + meta:object-count %positiveInteger; #IMPLIED> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod b/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod new file mode 100644 index 000000000000..b7f6b64140a6 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/nmspace.mod @@ -0,0 +1,50 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ENTITY nFO "http://www.w3.org/1999/XSL/Format"> +<!ENTITY nXLink "http://www.w3.org/1999/xlink"> +<!ENTITY nSVG "http://www.w3.org/2000/svg"> + +<!-- StarOffice namespace names and prefixes --> + +<!ENTITY nOpenOffice "http://openoffice.org/2000"> +<!ENTITY nOpenOffice2001 "http://openoffice.org/2001"> + +<!ENTITY nOffice "&nOpenOffice;/office"> +<!ENTITY nStyle "&nOpenOffice;/style"> +<!ENTITY nText "&nOpenOffice;/text"> +<!ENTITY nTable "&nOpenOffice;/table"> +<!ENTITY nMeta "&nOpenOffice;/meta"> +<!ENTITY nScript "&nOpenOffice;/script"> +<!ENTITY nDraw "&nOpenOffice;/drawing"> +<!ENTITY nChart "&nOpenOffice;/chart"> +<!ENTITY nNumber "&nOpenOffice;/datastyle"> +<!ENTITY nConfig "&nOpenOffice2001;/config"> + + +<!-- dublin core namespace name and prefic --> +<!ENTITY nDC "http://purl.org/dc/elements/1.1/"> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/office.dtd b/xmerge/source/palmtests/qa/comparator/dtd/office.dtd new file mode 100644 index 000000000000..9bcd37edf325 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/office.dtd @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ENTITY % dtypes-mod SYSTEM "dtypes.mod"> +%dtypes-mod; +<!ENTITY % nmspace-mod SYSTEM "nmspace.mod"> +%nmspace-mod; +<!ENTITY % style-mod SYSTEM "style.mod"> +%style-mod; +<!ENTITY % office-mod SYSTEM "office.mod"> +%office-mod; +<!ENTITY % meta-mod SYSTEM "meta.mod"> +%meta-mod; +<!ENTITY % script-mod SYSTEM "script.mod"> +%script-mod; +<!ENTITY % drawing-mod SYSTEM "drawing.mod"> +%drawing-mod; +<!ENTITY % text-mod SYSTEM "text.mod"> +%text-mod; +<!ENTITY % table-mod SYSTEM "table.mod"> +%table-mod; +<!ENTITY % chart-mod SYSTEM "chart.mod"> +%chart-mod; +<!ENTITY % datastyl-mod SYSTEM "datastyl.mod"> +%datastyl-mod; +<!ENTITY % form-mod SYSTEM "form.mod"> +%form-mod; +<!ENTITY % settings-mod SYSTEM "settings.mod"> +%settings-mod; diff --git a/xmerge/source/palmtests/qa/comparator/dtd/office.mod b/xmerge/source/palmtests/qa/comparator/dtd/office.mod new file mode 100644 index 000000000000..f8e3775fa6da --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/office.mod @@ -0,0 +1,234 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ELEMENT office:document ( office:meta?, + office:settings?, + office:script?, + office:font-decls?, + office:styles?, + office:automatic-styles?, + office:master-styles?, + office:body ) > + +<!ATTLIST office:document xmlns:office CDATA #FIXED "&nOffice;"> +<!ATTLIST office:document xmlns:meta CDATA #FIXED "&nMeta;"> +<!ATTLIST office:document xmlns:script CDATA #FIXED "&nScript;"> +<!ATTLIST office:document xmlns:style CDATA #FIXED "&nStyle;"> +<!ATTLIST office:document xmlns:text CDATA #FIXED "&nText;"> +<!ATTLIST office:document xmlns:table CDATA #FIXED "&nTable;"> +<!ATTLIST office:document xmlns:draw CDATA #FIXED "&nDraw;"> +<!ATTLIST office:document xmlns:chart CDATA #FIXED "&nChart;"> +<!ATTLIST office:document xmlns:number CDATA #FIXED "&nNumber;"> +<!ATTLIST office:document xmlns:fo CDATA #FIXED "&nFO;"> +<!ATTLIST office:document xmlns:xlink CDATA #FIXED "&nXLink;"> +<!ATTLIST office:document xmlns:svg CDATA #FIXED "&nSVG;"> +<!ATTLIST office:document xmlns:dc CDATA #FIXED "&nDC;"> + +<!ATTLIST office:document office:class + (text|text-global| + drawing|presentation| + spreadsheet|chart) #REQUIRED> + +<!ATTLIST office:document office:version %string; #IMPLIED> + +<!-- document-styles --> +<!ELEMENT office:document-styles ( + office:font-decls?, + office:styles?, + office:automatic-styles?, + office:master-styles? ) > + +<!ATTLIST office:document-styles xmlns:office CDATA #FIXED "&nOffice;"> +<!ATTLIST office:document-styles xmlns:meta CDATA #FIXED "&nMeta;"> +<!ATTLIST office:document-styles xmlns:script CDATA #FIXED "&nScript;"> +<!ATTLIST office:document-styles xmlns:style CDATA #FIXED "&nStyle;"> +<!ATTLIST office:document-styles xmlns:text CDATA #FIXED "&nText;"> +<!ATTLIST office:document-styles xmlns:table CDATA #FIXED "&nTable;"> +<!ATTLIST office:document-styles xmlns:draw CDATA #FIXED "&nDraw;"> +<!ATTLIST office:document-styles xmlns:chart CDATA #FIXED "&nChart;"> +<!ATTLIST office:document-styles xmlns:number CDATA #FIXED "&nNumber;"> +<!ATTLIST office:document-styles xmlns:fo CDATA #FIXED "&nFO;"> +<!ATTLIST office:document-styles xmlns:xlink CDATA #FIXED "&nXLink;"> +<!ATTLIST office:document-styles xmlns:svg CDATA #FIXED "&nSVG;"> +<!ATTLIST office:document-styles xmlns:dc CDATA #FIXED "&nDC;"> + +<!ATTLIST office:document-styles office:version %string; #IMPLIED> + +<!-- document-content --> + +<!ELEMENT office:document-content ( + office:script?, + office:font-decls?, + office:automatic-styles?, + office:body ) > + +<!ATTLIST office:document-content xmlns:office CDATA #FIXED "&nOffice;"> +<!ATTLIST office:document-content xmlns:meta CDATA #FIXED "&nMeta;"> +<!ATTLIST office:document-content xmlns:script CDATA #FIXED "&nScript;"> +<!ATTLIST office:document-content xmlns:style CDATA #FIXED "&nStyle;"> +<!ATTLIST office:document-content xmlns:text CDATA #FIXED "&nText;"> +<!ATTLIST office:document-content xmlns:table CDATA #FIXED "&nTable;"> +<!ATTLIST office:document-content xmlns:draw CDATA #FIXED "&nDraw;"> +<!ATTLIST office:document-content xmlns:chart CDATA #FIXED "&nChart;"> +<!ATTLIST office:document-content xmlns:number CDATA #FIXED "&nNumber;"> +<!ATTLIST office:document-content xmlns:fo CDATA #FIXED "&nFO;"> +<!ATTLIST office:document-content xmlns:xlink CDATA #FIXED "&nXLink;"> +<!ATTLIST office:document-content xmlns:svg CDATA #FIXED "&nSVG;"> +<!ATTLIST office:document-content xmlns:dc CDATA #FIXED "&nDC;"> + +<!ATTLIST office:document-content office:class + (text|text-global| + drawing|presentation| + spreadsheet|chart) #REQUIRED> + +<!ATTLIST office:document-content office:version %string; #IMPLIED> + +<!-- document-content --> + +<!ELEMENT office:document-meta ( office:meta? ) > + +<!ATTLIST office:document-meta xmlns:office CDATA #FIXED "&nOffice;"> +<!ATTLIST office:document-meta xmlns:meta CDATA #FIXED "&nMeta;"> +<!ATTLIST office:document-meta xmlns:script CDATA #FIXED "&nScript;"> +<!ATTLIST office:document-meta xmlns:style CDATA #FIXED "&nStyle;"> +<!ATTLIST office:document-meta xmlns:text CDATA #FIXED "&nText;"> +<!ATTLIST office:document-meta xmlns:table CDATA #FIXED "&nTable;"> +<!ATTLIST office:document-meta xmlns:draw CDATA #FIXED "&nDraw;"> +<!ATTLIST office:document-meta xmlns:chart CDATA #FIXED "&nChart;"> +<!ATTLIST office:document-meta xmlns:number CDATA #FIXED "&nNumber;"> +<!ATTLIST office:document-meta xmlns:fo CDATA #FIXED "&nFO;"> +<!ATTLIST office:document-meta xmlns:xlink CDATA #FIXED "&nXLink;"> +<!ATTLIST office:document-meta xmlns:svg CDATA #FIXED "&nSVG;"> +<!ATTLIST office:document-meta xmlns:dc CDATA #FIXED "&nDC;"> + +<!ATTLIST office:document-meta office:version %string; #IMPLIED> + +<!ELEMENT office:document-settings (office:settings) > +<!ATTLIST office:document-settings xmlns:office CDATA #FIXED "&nOffice;"> +<!ATTLIST office:document-settings xmlns:xlink CDATA #FIXED "&nXLink;"> +<!ATTLIST office:document-settings xmlns:config CDATA #FIXED "&nConfig;"> + +<!ATTLIST office:document-settings office:version %string; #IMPLIED> + +<!ENTITY % meta "(meta:generator?, + dc:title?, + dc:description?, + dc:subject?, + meta:initial-creator?, + meta:creation-date?, + dc:creator?, + dc:date?, + meta:printed-by?, + meta:print-date?, + meta:keywords?, + dc:language?, + meta:editing-cycles?, + meta:editing-duration?, + meta:hyperlink-behaviour?, + meta:auto-reload?, + meta:template?, + meta:user-defined*, + meta:document-statistic?)"> +<!ELEMENT office:meta %meta;> + +<!ENTITY % script "(script:library-embedded | + script:library-linked)*"> +<!ELEMENT office:script %script;> + +<!ELEMENT office:font-decls (style:font-decl)*> + +<!ENTITY % styles "(style:default-style|style:style|text:list-style| + number:number-style|number:currency-style|number:percentage-style| + number:date-style|number:time-style|number:boolean-style| + number:text-style| + draw:gradient|draw:hatch|draw:fill-image|draw:marker|draw:stroke-dash| + style:presentation-page-layout|draw:transparency)"> + +<!-- Validity constraint: The elements + text:outline-style, + text:footnotes-configuration, + text:endnotes-configuration, + text:bibliography-configuration and + text:linenumbering-configuration + may appear only once! + Unfortunatetly, this constraint cannot be easily specified in the DTD. +--> +<!ELEMENT office:styles (%styles;|text:outline-style| + text:footnotes-configuration|text:endnotes-configuration| + text:bibliography-configuration|text:linenumbering-configuration)*> + +<!ELEMENT office:automatic-styles (%styles;|style:page-master)*> + +<!ELEMENT office:master-styles (draw:layer-set?,style:handout-master?,style:master-page*) > + +<!ENTITY % text-decls "text:variable-decls?, text:sequence-decls?, + text:user-field-decls?, text:dde-connection-decls?, + text:alphabetical-index-auto-mark-file?" > + +<!ENTITY % change-marks "text:change | text:change-start | text:change-end"> + +<!ENTITY % body "(office:forms?,(text:tracked-changes|table:tracked-changes)?,%text-decls;,table:calculation-settings?,table:content-validations?,table:label-ranges?, + (text:h|text:p|text:ordered-list| + text:unordered-list|table:table|draw:page| + draw:a|%shape;|text:section|text:table-of-content| + text:illustration-index|text:table-index|text:object-index| + text:user-index|text:alphabetical-index|text:bibliography| + %change-marks;)*, + table:named-expressions?, + table:database-ranges?,table:data-pilot-tables?, + table:consolidation?, + table:dde-links?, + presentation:settings?)"> +<!ELEMENT office:body %body;> +<!ATTLIST office:body table:structure-protected %boolean; "false" + table:protection-key CDATA #IMPLIED> + +<!ELEMENT office:events (script:event|presentation:event)*> + +<!-- DDE source: for text sections and tables --> +<!ELEMENT office:dde-source EMPTY> +<!ATTLIST office:dde-source office:dde-application CDATA #IMPLIED> +<!ATTLIST office:dde-source office:dde-topic CDATA #IMPLIED> +<!ATTLIST office:dde-source office:dde-item CDATA #IMPLIED> +<!ATTLIST office:dde-source office:automatic-update %boolean; "false"> +<!ATTLIST office:dde-source office:name CDATA #IMPLIED> +<!ATTLIST office:dde-source table:conversion-mode (into-default-style-data-style|into-english-number|let-text) "into-default-style-data-style" > + +<!-- annotations --> +<!-- limitation: in the current implementation, only plain text inside of + paragraphs is supported --> +<!ELEMENT office:annotation (text:p)*> +<!ATTLIST office:annotation office:author %string; #IMPLIED> +<!ATTLIST office:annotation office:create-date %date; #IMPLIED> +<!ATTLIST office:annotation office:create-date-string %string; #IMPLIED> +<!ATTLIST office:annotation office:display %boolean; "false"> + +<!ELEMENT office:change-info (text:p)*> +<!ATTLIST office:change-info office:chg-author %string; #REQUIRED> +<!ATTLIST office:change-info office:chg-date-time %timeInstance; #REQUIRED> + +<!ELEMENT office:binary-data (#PCDATA)> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/script.mod b/xmerge/source/palmtests/qa/comparator/dtd/script.mod new file mode 100644 index 000000000000..4d13ff74aebc --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/script.mod @@ -0,0 +1,51 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ELEMENT script:library-embedded (script:module*)> +<!ATTLIST script:library-embedded script:name %string; #REQUIRED> +<!ATTLIST script:library-embedded script:password %string; #IMPLIED> + +<!ELEMENT script:library-linked EMPTY> +<!ATTLIST script:library-linked script:name %string; #REQUIRED> +<!ATTLIST script:library-linked xlink:href %string; #REQUIRED> +<!ATTLIST script:library-linked xlink:type (simple) #FIXED "simple"> + +<!ELEMENT script:module (#PCDATA)> +<!ATTLIST script:module script:name %string; #REQUIRED> +<!ATTLIST script:module script:language %string; #IMPLIED> + + +<!ENTITY % script-language "script:language %string; #REQUIRED"> +<!ENTITY % event-name "script:event-name %string; #REQUIRED"> +<!ENTITY % location "script:location (document|application) #REQUIRED"> +<!ENTITY % macro-name "script:macro-name %string; #REQUIRED"> + +<!ELEMENT script:event (#PCDATA)> +<!ATTLIST script:event %script-language; + %event-name; + %location; + %macro-name;> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/settings.mod b/xmerge/source/palmtests/qa/comparator/dtd/settings.mod new file mode 100644 index 000000000000..bb9224237fa8 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/settings.mod @@ -0,0 +1,49 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ELEMENT office:settings (config:config-item-set+)> + +<!ENTITY % items "(config:config-item | + config:config-item-set | + config:config-item-map-named | + config:config-item-map-indexed)+"> + +<!ELEMENT config:config-item-set %items;> +<!ATTLIST config:config-item-set config:name CDATA #REQUIRED> + +<!ELEMENT config:config-item (#PCDATA)> +<!ATTLIST config:config-item config:name CDATA #REQUIRED + config:type (boolean | short | int | long | double | string | datetime | base64Binary) #REQUIRED> + +<!ELEMENT config:config-item-map-named (config:config-item-map-entry)+> +<!ATTLIST config:config-item-map-named config:name CDATA #REQUIRED> + +<!ELEMENT config:config-item-map-indexed (config:config-item-map-entry)+> +<!ATTLIST config:config-item-map-indexed config:name CDATA #REQUIRED> + +<!ELEMENT config:config-item-map-entry %items;> +<!ATTLIST config:config-item-map-entry config:name CDATA #IMPLIED> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/style.mod b/xmerge/source/palmtests/qa/comparator/dtd/style.mod new file mode 100644 index 000000000000..21a3d9d17dd1 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/style.mod @@ -0,0 +1,391 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ELEMENT style:font-decl EMPTY> +<!ATTLIST style:font-decl style:name %string; #REQUIRED> +<!ATTLIST style:font-decl fo:font-family %string; #REQUIRED> +<!ATTLIST style:font-decl style:font-style-name %string; #IMPLIED> +<!ENTITY % fontFamilyGeneric "(roman|swiss|modern|decorative|script|system)"> +<!ATTLIST style:font-decl style:font-family-generic %fontFamilyGeneric; + #IMPLIED> +<!ENTITY % fontPitch "(fixed|variable)"> +<!ATTLIST style:font-decl style:font-pitch %fontPitch; #IMPLIED> +<!ATTLIST style:font-decl style:font-charset %textEncoding; #IMPLIED> + +<!ELEMENT style:style ( style:properties?,office:events?,style:map*)> + +<!ATTLIST style:style style:name %styleName; #REQUIRED> + +<!ENTITY % styleFamily "(paragraph|text|section| + table|table-column|table-row|table-cell|table-page|chart|graphics|default|drawing-page|presentation|control)"> +<!ATTLIST style:style style:family %styleFamily; #REQUIRED> + +<!ATTLIST style:style style:parent-style-name %styleName; #IMPLIED> +<!ATTLIST style:style style:master-page-name %styleName; #IMPLIED> +<!ATTLIST style:style style:next-style-name %styleName; #IMPLIED> +<!ATTLIST style:style style:list-style-name %styleName; #IMPLIED> +<!ATTLIST style:style style:data-style-name %styleName; #IMPLIED> + +<!ATTLIST style:style style:auto-update %boolean; "false"> + +<!ATTLIST style:style style:class %string; #IMPLIED> + +<!ELEMENT style:default-style (style:properties?)> +<!ATTLIST style:default-style style:family %styleFamily; #REQUIRED> + +<!ELEMENT style:map EMPTY> + +<!ATTLIST style:map style:condition %string; #REQUIRED> +<!ATTLIST style:map style:apply-style-name %styleName; #REQUIRED> +<!ATTLIST style:map style:base-cell-address %cell-address; #IMPLIED> + +<!ELEMENT style:properties ANY> + +<!-- number format properties --> +<!ATTLIST style:properties style:num-prefix %string; #IMPLIED> +<!ATTLIST style:properties style:num-suffix %string; #IMPLIED> +<!ATTLIST style:properties style:num-format %string; #IMPLIED> +<!ATTLIST style:properties style:num-letter-sync %boolean; #IMPLIED> + +<!-- frame properties --> +<!ATTLIST style:properties fo:width %positiveLength; #IMPLIED> +<!ATTLIST style:properties fo:height %positiveLength; #IMPLIED> +<!ATTLIST style:properties style:vertical-pos (top|middle|bottom|from-top) #IMPLIED> +<!ATTLIST style:properties style:vertical-rel (page|page-content| + frame|frame-content| + paragraph|paragraph-content|char| + line|baseline|text) #IMPLIED> +<!ATTLIST style:properties style:horizontal-pos (left|center|right|from-left|inside|outside|from-inside) #IMPLIED> +<!ATTLIST style:properties style:horizontal-rel (page|page-content| + frame|frame-content| + paragraph|paragraph-content| + char) #IMPLIED> +<!ATTLIST style:properties svg:width %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties svg:height %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:min-height %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:min-width %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:max-height %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:max-width %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties text:anchor-type %anchorType; #IMPLIED> +<!ATTLIST style:properties text:anchor-page-number %positiveInteger; #IMPLIED> +<!ATTLIST style:properties svg:x %coordinate; #IMPLIED> +<!ATTLIST style:properties svg:y %coordinate; #IMPLIED> +<!ATTLIST style:properties style:print-content %boolean; #IMPLIED> +<!ATTLIST style:properties style:protect %boolean; #IMPLIED> +<!ATTLIST style:properties style:wrap (none|left|right|parallel|dynamic|run-through) #IMPLIED> +<!ENTITY % noLimitOrPositiveInteger "CDATA"> +<!ATTLIST style:properties style:number-wrapped-paragraphs %noLimitOrPositiveInteger; #IMPLIED> +<!ATTLIST style:properties style:wrap-contour %boolean; #IMPLIED> +<!ATTLIST style:properties style:wrap-contour-mode (full|outside) #IMPLIED> +<!ATTLIST style:properties style:run-through (foreground|background) #IMPLIED> +<!ATTLIST style:properties style:editable %boolean; #IMPLIED> +<!ATTLIST style:properties style:mirror CDATA #IMPLIED> +<!ATTLIST style:properties fo:clip CDATA #IMPLIED> +<!ATTLIST style:properties text:animation (none|scroll|alternate|slide) #IMPLIED> +<!ATTLIST style:properties text:animation-direction (left|right|up|down) #IMPLIED> +<!ATTLIST style:properties text:animation-start-inside %boolean; #IMPLIED> +<!ATTLIST style:properties text:animation-stop-inside %boolean; #IMPLIED> +<!ATTLIST style:properties text:animation-repeat %integer; #IMPLIED> +<!ATTLIST style:properties text:animation-delay %timeDuration; #IMPLIED> +<!ATTLIST style:properties text:animation-steps %length; #IMPLIED> + +<!-- text properties --> +<!ATTLIST style:properties fo:font-variant (normal|small-caps) #IMPLIED> +<!ATTLIST style:properties fo:text-transform (none|lowercase| + uppercase|capitalize) #IMPLIED> +<!ATTLIST style:properties fo:color %color; #IMPLIED> +<!ATTLIST style:properties style:use-window-font-color %boolean; #IMPLIED> +<!ATTLIST style:properties style:text-outline %boolean; #IMPLIED> +<!ATTLIST style:properties style:text-crossing-out + (none|single-line|double-line|thick-line|slash|X) + #IMPLIED> +<!ATTLIST style:properties style:text-position CDATA #IMPLIED> +<!ATTLIST style:properties style:text-align (left|right|start|center|end|justify|justified) #IMPLIED> + +<!ATTLIST style:properties style:font-name %string; #IMPLIED> +<!ATTLIST style:properties fo:font-family %string; #IMPLIED> +<!ATTLIST style:properties style:font-family-generic %fontFamilyGeneric; + #IMPLIED> +<!ATTLIST style:properties style:font-style-name %string; #IMPLIED> +<!ATTLIST style:properties style:font-pitch %fontPitch; #IMPLIED> +<!ATTLIST style:properties style:font-charset %textEncoding; #IMPLIED> +<!ATTLIST style:properties style:font-name-asian %string; #IMPLIED> +<!ATTLIST style:properties style:font-family-asian %string; #IMPLIED> +<!ATTLIST style:properties style:font-family-generic-asian %fontFamilyGeneric; + #IMPLIED> +<!ATTLIST style:properties style:font-style-name-asian %string; #IMPLIED> +<!ATTLIST style:properties style:font-pitch-asian %fontPitch; #IMPLIED> +<!ATTLIST style:properties style:font-charset-asian %textEncoding; #IMPLIED> +<!ATTLIST style:properties style:font-name-complex %string; #IMPLIED> +<!ATTLIST style:properties style:font-family-complex %string; #IMPLIED> +<!ATTLIST style:properties style:font-family-generic-complex %fontFamilyGeneric; + #IMPLIED> +<!ATTLIST style:properties style:font-style-name-complex %string; #IMPLIED> +<!ATTLIST style:properties style:font-pitch-complex %fontPitch; #IMPLIED> +<!ATTLIST style:properties style:font-charset-complex %textEncoding; #IMPLIED> + +<!ATTLIST style:properties fo:font-size %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties style:font-size-rel %length; #IMPLIED> +<!ATTLIST style:properties style:font-size-asian %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties style:font-size-rel-asian %length; #IMPLIED> +<!ATTLIST style:properties style:font-size-complex %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties style:font-size-rel-complex %length; #IMPLIED> +<!ENTITY % normalOrLength "CDATA"> +<!ATTLIST style:properties fo:letter-spacing %normalOrLength; #IMPLIED> +<!ATTLIST style:properties fo:language %languageOnly; #IMPLIED> +<!ATTLIST style:properties style:language-asian %languageOnly; #IMPLIED> +<!ATTLIST style:properties style:language-complex %languageOnly; #IMPLIED> +<!ATTLIST style:properties fo:country %country; #IMPLIED> +<!ATTLIST style:properties style:country-asian %country; #IMPLIED> +<!ATTLIST style:properties style:country-complex %country; #IMPLIED> +<!ENTITY % fontStyle "(normal|italic|oblique)"> +<!ATTLIST style:properties fo:font-style %fontStyle; #IMPLIED> +<!ATTLIST style:properties style:font-style-asian %fontStyle; #IMPLIED> +<!ATTLIST style:properties style:font-style-complex %fontStyle; #IMPLIED> +<!ENTITY % fontRelief "(none|embossed|engraved)"> +<!ATTLIST style:properties style:font-relief %fontRelief; #IMPLIED> +<!ATTLIST style:properties fo:text-shadow CDATA #IMPLIED> +<!ATTLIST style:properties style:text-underline + (none|single|double|dotted|dash|long-dash|dot-dash| + dot-dot-dash|wave|bold|bold-dotted|bold-dash| + bold-long-dash|bold-dot-dash|bold-dot-dot-dash| + bold-wave|double-wave|small-wave) #IMPLIED> +<!ATTLIST style:properties style:text-autospace (none | ideograph-alpha) #IMPLIED> +<!ATTLIST style:properties style:punctuation-wrap (simple | hanging) #IMPLIED> +<!ATTLIST style:properties style:line-break (normal | strict) #IMPLIED> +<!ENTITY % fontColorOrColor "CDATA"> +<!ATTLIST style:properties style:text-underline-color %fontColorOrColor; + #IMPLIED> +<!ATTLIST style:properties fo:font-weight CDATA #IMPLIED> +<!ATTLIST style:properties style:font-weight-asian CDATA #IMPLIED> +<!ATTLIST style:properties style:font-weight-complex CDATA #IMPLIED> +<!ATTLIST style:properties fo:score-spaces %boolean; #IMPLIED> +<!ATTLIST style:properties style:letter-kerning %boolean; #IMPLIED> +<!ATTLIST style:properties style:text-blinking %boolean; #IMPLIED> +<!ATTLIST style:properties style:text-background-color %transparentOrColor; + #IMPLIED> + +<!ATTLIST style:properties style:text-combine (none|letters|lines) #IMPLIED> +<!ATTLIST style:properties style:text-combine-start-char %character; #IMPLIED> +<!ATTLIST style:properties style:text-combine-end-char %character; #IMPLIED> +<!ATTLIST style:properties style:text-emphasize CDATA #IMPLIED> +<!ATTLIST style:properties style:text-scale %percentage; #IMPLIED> +<!ATTLIST style:properties style:text-rotation-angle %integer; #IMPLIED> +<!ATTLIST style:properties style:text-rotation-scale (fixed|line-height) #IMPLIED> + +<!-- paragraph properties --> +<!ENTITY % nonNegativeLengthOrPercentageOrNormal "CDATA"> +<!ATTLIST style:properties fo:line-height + %nonNegativeLengthOrPercentageOrNormal; #IMPLIED> +<!ATTLIST style:properties style:line-height-at-least %nonNegativeLength; + #IMPLIED> +<!ATTLIST style:properties style:line-spacing %length; #IMPLIED> +<!ATTLIST style:properties fo:text-align (start|end|center|justify) #IMPLIED> +<!ATTLIST style:properties fo:text-align-last (start|center|justify) #IMPLIED> +<!ATTLIST style:properties style:text-align-source (fix|value-type) #IMPLIED> +<!ATTLIST style:properties style:justify-single-word %boolean; #IMPLIED> +<!ATTLIST style:properties style:break-inside (auto|avoid) #IMPLIED> +<!ATTLIST style:properties fo:widows %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties fo:orphans %nonNegativeInteger; #IMPLIED> + +<!ATTLIST style:properties fo:hyphenate %boolean; #IMPLIED> +<!ATTLIST style:properties fo:hyphenate-keep (none|page) #IMPLIED> +<!ATTLIST style:properties fo:hyphenation-remain-char-count %positiveInteger; + #IMPLIED> +<!ATTLIST style:properties fo:hyphenation-push-char-count %positiveInteger; + #IMPLIED> +<!ATTLIST style:properties fo:hyphenation-ladder-count + %noLimitOrPositiveInteger; #IMPLIED> +<!ATTLIST style:properties style:page-number %positiveInteger; #IMPLIED> + +<!ELEMENT style:tab-stops (style:tab-stop)*> +<!ELEMENT style:tab-stop EMPTY> +<!ATTLIST style:tab-stop style:position %nonNegativeLength; #REQUIRED> +<!ATTLIST style:tab-stop style:type (left|center|right|char|default) "left"> +<!ATTLIST style:tab-stop style:char %character; #IMPLIED> +<!ATTLIST style:tab-stop style:leader-char %character; " "> + +<!ELEMENT style:drop-cap EMPTY> +<!ENTITY % wordOrPositiveInteger "CDATA"> +<!ATTLIST style:drop-cap style:length %wordOrPositiveInteger; "1"> +<!ATTLIST style:drop-cap style:lines %positiveInteger; "1"> +<!ATTLIST style:drop-cap style:distance %length; "0cm"> +<!ATTLIST style:drop-cap style:style-name %styleName; #IMPLIED> + +<!ATTLIST style:properties style:register-true %boolean; #IMPLIED> +<!ATTLIST style:properties style:register-truth-ref-style-name %styleName; #IMPLIED> +<!ATTLIST style:properties fo:margin-left %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:margin-right %positiveLengthOrPercentage; + #IMPLIED> +<!ATTLIST style:properties fo:text-indent %lengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties style:auto-text-indent %boolean; #IMPLIED> +<!ATTLIST style:properties fo:margin-top %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:margin-bottom %positiveLengthOrPercentage; #IMPLIED> +<!ATTLIST style:properties fo:break-before (auto|column|page) #IMPLIED> +<!ATTLIST style:properties fo:break-after (auto|column|page) #IMPLIED> +<!ATTLIST style:properties fo:background-color %transparentOrColor; #IMPLIED> + +<!ELEMENT style:background-image (office:binary-data?)> +<!ATTLIST style:background-image xlink:type (simple) #IMPLIED> +<!ATTLIST style:background-image xlink:href %uriReference; #IMPLIED> +<!ATTLIST style:background-image xlink:show (embed) #IMPLIED> +<!ATTLIST style:background-image xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST style:background-image style:repeat (no-repeat|repeat|stretch) + "repeat"> +<!ATTLIST style:background-image style:position CDATA "center"> +<!ATTLIST style:background-image style:filter-name %string; #IMPLIED> + +<!ELEMENT style:symbol-image (office:binary-data?)> +<!ATTLIST style:symbol-image xlink:type (simple) #IMPLIED> +<!ATTLIST style:symbol-image xlink:href %uriReference; #IMPLIED> +<!ATTLIST style:symbol-image xlink:show (embed) #IMPLIED> +<!ATTLIST style:symbol-image xlink:actuate (onLoad) #IMPLIED> + +<!ATTLIST style:properties fo:border CDATA #IMPLIED> +<!ATTLIST style:properties fo:border-top CDATA #IMPLIED> +<!ATTLIST style:properties fo:border-bottom CDATA #IMPLIED> +<!ATTLIST style:properties fo:border-left CDATA #IMPLIED> +<!ATTLIST style:properties fo:border-right CDATA #IMPLIED> +<!ATTLIST style:properties style:border-line-width CDATA #IMPLIED> +<!ATTLIST style:properties style:border-line-width-top CDATA #IMPLIED> +<!ATTLIST style:properties style:border-line-width-bottom CDATA #IMPLIED> +<!ATTLIST style:properties style:border-line-width-left CDATA #IMPLIED> +<!ATTLIST style:properties style:border-line-width-right CDATA #IMPLIED> +<!ATTLIST style:properties fo:padding %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties fo:padding-top %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties fo:padding-bottom %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties fo:padding-left %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties fo:padding-right %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties style:shadow CDATA #IMPLIED> +<!ATTLIST style:properties fo:keep-with-next %boolean; #IMPLIED> + +<!ATTLIST style:properties text:number-lines %boolean; "false"> +<!ATTLIST style:properties text:line-number %nonNegativeInteger; #IMPLIED> + +<!ATTLIST style:properties style:decimal-places %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:properties style:tab-stop-distance %nonNegativeLength; #IMPLIED> + +<!-- table properties --> +<!ATTLIST style:properties style:width %positiveLength; #IMPLIED> +<!ATTLIST style:properties style:rel-width %percentage; #IMPLIED> +<!ATTLIST style:properties style:may-break-between-rows %boolean; #IMPLIED> +<!ATTLIST style:properties table:page-style-name %styleName; #IMPLIED> +<!ATTLIST style:properties table:display %boolean; #IMPLIED> + +<!-- table column properties --> +<!ATTLIST style:properties style:column-width %positiveLength; #IMPLIED> +<!ENTITY % relWidth "CDATA"> +<!ATTLIST style:properties style:rel-column-width %relWidth; #IMPLIED> +<!ATTLIST style:properties style:use-optimal-column-width %boolean; #IMPLIED> + +<!-- table row properties --> +<!ATTLIST style:properties style:row-height %positiveLength; #IMPLIED> +<!ATTLIST style:properties style:min-row-height %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties style:use-optimal-row-height %boolean; #IMPLIED> + +<!-- table cell properties --> +<!ATTLIST style:properties + table:align (left | center | right | margins) #IMPLIED + table:border-model (collapsing | separating) #IMPLIED + fo:vertical-align (top | middle | bottom | automatic) #IMPLIED + fo:direction (ltr | ttb) #IMPLIED + style:rotation-angle %nonNegativeInteger; #IMPLIED + style:rotation-align (none | bottom | top | center) #IMPLIED + style:cell-protect CDATA #IMPLIED + fo:wrap-option (no-wrap | wrap) #IMPLIED +> +<!ELEMENT style:columns (style:column-sep?,style:column*)> +<!ATTLIST style:columns fo:column-count %nonNegativeInteger; #IMPLIED> +<!ATTLIST style:columns fo:column-gap %positiveLength; #IMPLIED> + +<!ELEMENT style:column EMPTY> +<!ATTLIST style:column style:rel-width CDATA #IMPLIED> +<!ATTLIST style:column fo:margin-left %positiveLength; #IMPLIED> +<!ATTLIST style:column fo:margin-right %positiveLength; #IMPLIED> + +<!ELEMENT style:column-sep EMPTY> +<!ATTLIST style:column-sep style:style (none|solid|dotted|dashed|dot-dashed) + "solid"> +<!ATTLIST style:column-sep style:width %length; #REQUIRED> +<!ATTLIST style:column-sep style:height %percentage; "100%"> +<!ATTLIST style:column-sep style:vertical-align (top|middle|bottom) "top"> +<!ATTLIST style:column-sep style:color %color; "#000000"> + +<!-- page master properties --> +<!ELEMENT style:page-master (style:properties?, style:header-style?, style:footer-style?)> +<!ATTLIST style:page-master style:name %styleName; #REQUIRED> +<!ATTLIST style:page-master style:page-usage (all|left|right|mirrored) "all"> + +<!ELEMENT style:header-style (style:properties?)> +<!ELEMENT style:footer-style (style:properties?)> + +<!ATTLIST style:properties fo:page-width %length; #IMPLIED> +<!ATTLIST style:properties fo:page-height %length; #IMPLIED> +<!ATTLIST style:properties style:paper-tray-number %positiveNumberOrDefault; #IMPLIED> +<!ATTLIST style:properties style:print-orientation (portrait|landscape) #IMPLIED> +<!ATTLIST style:properties style:print CDATA #IMPLIED> +<!ATTLIST style:properties style:print-page-order (ttb|ltr) #IMPLIED> +<!ATTLIST style:properties style:first-page-number %positiveInteger; #IMPLIED> +<!ATTLIST style:properties style:scale-to %percentage; #IMPLIED> +<!ATTLIST style:properties style:scale-to-pages %positiveInteger; #IMPLIED> +<!ATTLIST style:properties style:table-centering (horizontal | vertical | both | none) #IMPLIED> + +<!ATTLIST style:properties style:footnote-max-height %lengthOrNoLimit; #IMPLIED> +<!ATTLIST style:properties style:vertical-align (top|bottom|middle|basline|auto) #IMPLIED> + +<!ELEMENT style:footnote-sep EMPTY> +<!ATTLIST style:footnote-sep style:width %length; #IMPLIED> +<!ATTLIST style:footnote-sep style:rel-width %percentage; #IMPLIED> +<!ATTLIST style:footnote-sep style:color %color; #IMPLIED> +<!ATTLIST style:footnote-sep style:adjustment (left|center|right) "left"> +<!ATTLIST style:footnote-sep style:distance-before-sep %length; #IMPLIED> +<!ATTLIST style:footnote-sep style:distance-after-sep %length; #IMPLIED> + +<!-- master page --> +<!ELEMENT style:master-page ( (style:header, style:header-left?)?, (style:footer, style:footer-left?)?, + office:forms?,style:style*, (%shapes;)*, presentation:notes? )> +<!ATTLIST style:master-page style:name %styleName; #REQUIRED> +<!ATTLIST style:master-page style:page-master-name %styleName; #REQUIRED> +<!ATTLIST style:master-page style:next-style-name %styleName; #IMPLIED> +<!ATTLIST style:master-page draw:style-name %styleName; #IMPLIED> + +<!-- handout master --> +<!ELEMENT style:handout-master (%shapes;)*> +<!ATTLIST style:handout-master presentation:presentation-page-layout-name %styleName; #IMPLIED> + +<!ENTITY % hd-ft-content "( text:p | (style:region-left?, style:region-center?, style:region-right?) )"> +<!ELEMENT style:header %hd-ft-content;> +<!ELEMENT style:footer %hd-ft-content;> +<!ELEMENT style:header-left %hd-ft-content;> +<!ATTLIST style:header-left style:display %boolean; "true"> +<!ELEMENT style:footer-left %hd-ft-content;> +<!ATTLIST style:footer-left style:display %boolean; "true"> + +<!ENTITY % region-content "(text:p*)"> +<!ELEMENT style:region-left %region-content;> +<!ELEMENT style:region-center %region-content;> +<!ELEMENT style:region-right %region-content;> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/table.mod b/xmerge/source/palmtests/qa/comparator/dtd/table.mod new file mode 100644 index 000000000000..6d9f3cdb2a8f --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/table.mod @@ -0,0 +1,493 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ELEMENT table:calculation-settings (table:null-date?, table:iteration?)> +<!ATTLIST table:calculation-settings + table:case-sensitive %boolean; "true" + table:precision-as-shown %boolean; "false" + table:search-criteria-must-apply-to-whole-cell %boolean; "true" + table:automatic-find-labels %boolean; "true" + table:use-regular-expressions %boolean; "true" + table:null-year %positiveInteger; "1930" +> +<!ELEMENT table:null-date EMPTY> +<!ATTLIST table:null-date + table:value-type %valueType; #FIXED "date" + table:date-value %date; "1899-12-30" +> +<!ELEMENT table:iteration EMPTY> +<!ATTLIST table:iteration + table:status (enable | disable) "disable" + table:steps %positiveInteger; "100" + table:maximum-difference %float; "0.001" +> + +<!ELEMENT table:tracked-changes (table:cell-content-change | table:insertion | table:deletion | table:movement | table:rejection)*> +<!ATTLIST table:tracked-changes table:track-changes %boolean; "true" + table:protected %boolean; "false" + table:protection-key CDATA #IMPLIED +> + +<!ELEMENT table:dependences (table:dependence)+> +<!ELEMENT table:dependence EMPTY> +<!ATTLIST table:dependence + table:id CDATA #REQUIRED +> +<!ELEMENT table:deletions (table:cell-content-deletion | table:change-deletion)+> +<!ELEMENT table:cell-content-deletion (table:cell-address?, table:change-track-table-cell?)> +<!ATTLIST table:cell-content-deletion + table:id CDATA #IMPLIED +> +<!ELEMENT table:change-deletion EMPTY> +<!ATTLIST table:change-deletion + table:id CDATA #IMPLIED +> +<!ELEMENT table:insertion (office:change-info, table:dependences?, table:deletions?)> +<!ATTLIST table:insertion + table:id CDATA #REQUIRED + table:acceptance-state (accepted | rejected | pending) "pending" + table:rejecting-change-id %positiveInteger; #IMPLIED + table:type (row | column | table) #REQUIRED + table:position %integer; #REQUIRED + table:count %positiveInteger; "1" + table:table %integer; #IMPLIED +> +<!ELEMENT table:deletion (office:change-info, table:dependences?, table:deletions?, table:cut-offs?)> +<!ATTLIST table:deletion + table:id CDATA #REQUIRED + table:acceptance-state (accepted | rejected | pending) "pending" + table:rejecting-change-id %positiveInteger; #IMPLIED + table:type (row | column | table) #REQUIRED + table:position %integer; #REQUIRED + table:count %positiveInteger; "1" + table:table %integer; #IMPLIED + table:multi-deletion-spanned %integer; #IMPLIED +> +<!ELEMENT table:cut-offs (table:movement-cut-off+ | (table:insertion-cut-off, table:movement-cut-off*))> +<!ELEMENT table:insertion-cut-off EMPTY> +<!ATTLIST table:insertion-cut-off + table:id CDATA #REQUIRED + table:position %integer; #REQUIRED +> +<!ELEMENT table:movement-cut-off EMPTY> +<!ATTLIST table:movement-cut-off + table:id CDATA #REQUIRED + table:start-position %integer; #IMPLIED + table:end-position %integer; #IMPLIED + table:position %integer; #IMPLIED +> +<!ELEMENT table:movement (table:source-range-address, table:target-range-address, office:change-info, table:dependences?, table:deletions?)> +<!ATTLIST table:movement + table:id CDATA #REQUIRED + table:acceptance-state (accepted | rejected | pending) "pending" + table:rejecting-change-id %positiveInteger; #IMPLIED +> +<!ELEMENT table:target-range-address EMPTY> +<!ATTLIST table:target-range-address + table:column %integer; #IMPLIED + table:row %integer; #IMPLIED + table:table %integer; #IMPLIED + table:start-column %integer; #IMPLIED + table:start-row %integer; #IMPLIED + table:start-table %integer; #IMPLIED + table:end-column %integer; #IMPLIED + table:end-row %integer; #IMPLIED + table:end-table %integer; #IMPLIED +> +<!ELEMENT table:source-range-address EMPTY> +<!ATTLIST table:source-range-address + table:column %integer; #IMPLIED + table:row %integer; #IMPLIED + table:table %integer; #IMPLIED + table:start-column %integer; #IMPLIED + table:start-row %integer; #IMPLIED + table:start-table %integer; #IMPLIED + table:end-column %integer; #IMPLIED + table:end-row %integer; #IMPLIED + table:end-table %integer; #IMPLIED +> +<!ELEMENT table:change-track-table-cell (text:p*)> +<!ATTLIST table:change-track-table-cell + table:cell-address %cell-address; #IMPLIED + table:matrix-covered (true | false) "false" + table:formula %string; #IMPLIED + table:number-matrix-rows-spanned %positiveInteger; #IMPLIED + table:number-matrix-columns-spanned %positiveInteger; #IMPLIED + table:value-type %valueType; "string" + table:value %float; #IMPLIED + table:date-value %date; #IMPLIED + table:time-value %timeInstance; #IMPLIED + table:string-value %string; #IMPLIED +> +<!ELEMENT table:cell-content-change (table:cell-address, office:change-info, table:dependences?, table:deletions?, table:previous)> +<!ATTLIST table:cell-content-change + table:id CDATA #REQUIRED + table:acceptance-state (accepted | rejected | pending) "pending" + table:rejecting-change-id %positiveInteger; #IMPLIED +> +<!ELEMENT table:cell-address EMPTY> +<!ATTLIST table:cell-address + table:column %integer; #IMPLIED + table:row %integer; #IMPLIED + table:table %integer; #IMPLIED +> +<!ELEMENT table:previous (table:change-track-table-cell)> +<!ATTLIST table:previous + table:id CDATA #IMPLIED +> +<!ELEMENT table:rejection (office:change-info, table:dependences?, table:deletions?)> +<!ATTLIST table:rejection + table:id CDATA #REQUIRED + table:acceptance-state (accepted | rejected | pending) "pending" + table:rejecting-change-id %positiveInteger; #IMPLIED +> + +<!ENTITY % table-columns "table:table-columns | ( table:table-column | table:table-column-group )+"> +<!ENTITY % table-header-columns "table:table-header-columns"> +<!ENTITY % table-rows "table:table-rows | ( table:table-row | table:table-row-group )+"> +<!ENTITY % table-header-rows "table:table-header-rows"> +<!ENTITY % table-column-groups "((%table-columns;),(%table-header-columns;,(%table-columns;)?)?) | (%table-header-columns;,(%table-columns;)?)"> +<!ENTITY % table-row-groups "((%table-rows;),(%table-header-rows;,(%table-rows;)?)?) | (%table-header-rows;,(%table-rows;)?)"> +<!ELEMENT table:table (table:table-source?, table:scenario?, office:forms?, table:shapes?, (%table-column-groups;), (%table-row-groups;))> +<!ATTLIST table:table + table:name %string; #IMPLIED + table:style-name %styleName; #IMPLIED + table:protected %boolean; "false" + table:protection-key CDATA #IMPLIED + table:print-ranges %cell-range-address-list; #IMPLIED +> +<!ELEMENT table:table-source EMPTY> +<!ATTLIST table:table-source + table:mode (copy-all | copy-results-only) "copy-all" + xlink:type (simple) #FIXED "simple" + xlink:actuate (onRequest) "onRequest" + xlink:href %uriReference; #REQUIRED + table:filter-name CDATA #IMPLIED + table:table-name CDATA #IMPLIED + table:filter-options CDATA #IMPLIED + table:refresh-delay %timeDuration; #IMPLIED +> +<!ELEMENT table:scenario EMPTY> +<!ATTLIST table:scenario + table:display-border %boolean; "true" + table:border-color %color; #IMPLIED + table:copy-back %boolean; "true" + table:copy-styles %boolean; "true" + table:copy-formulas %boolean; "true" + table:is-active %boolean; #REQUIRED + table:scenario-ranges %cell-range-address-list; #REQUIRED + table:comment CDATA #IMPLIED +> +<!ELEMENT table:shapes %shapes;> +<!ELEMENT table:table-column-group (table:table-header-columns | table:table-column | table:table-column-group)+> +<!ATTLIST table:table-column-group + table:display %boolean; "true" +> +<!ELEMENT table:table-header-columns (table:table-column | table:table-column-group)+> +<!ELEMENT table:table-columns (table:table-column | table:table-column-group)+> +<!ELEMENT table:table-column EMPTY> +<!ATTLIST table:table-column + table:number-columns-repeated %positiveInteger; "1" + table:style-name %styleName; #IMPLIED + table:visibility (visible | collapse | filter) "visible" + table:default-cell-style-name %styleName; #IMPLIED +> +<!ELEMENT table:table-row-group (table:table-header-rows | table:table-row | table:table-row-group)+> +<!ATTLIST table:table-row-group + table:display %boolean; "true" +> +<!ELEMENT table:table-header-rows (table:table-row | table:table-row-group)+> +<!ELEMENT table:table-rows (table:table-row | table:table-row-group)+> +<!ENTITY % table-cells "(table:table-cell|table:covered-table-cell)+"> +<!ELEMENT table:table-row %table-cells;> +<!ATTLIST table:table-row + table:number-rows-repeated %positiveInteger; "1" + table:style-name %styleName; #IMPLIED + table:visibility (visible | collapse | filter) "visible" + table:default-cell-style-name %styleName; #IMPLIED +> + +<!ENTITY % text-wo-table "(text:h|text:p|text:ordered-list|text:unordered-list|%shapes;)*"> +<!ENTITY % cell-content "(table:cell-range-source?,office:annotation?,table:detective?,(table:sub-table|%text-wo-table;))"> +<!ELEMENT table:table-cell %cell-content;> +<!ELEMENT table:covered-table-cell %cell-content;> +<!ATTLIST table:table-cell + table:number-columns-repeated %positiveInteger; "1" + table:number-rows-spanned %positiveInteger; "1" + table:number-columns-spanned %positiveInteger; "1" + table:style-name %styleName; #IMPLIED + table:validation-name CDATA #IMPLIED + table:formula %string; #IMPLIED + table:number-matrix-rows-spanned %positiveInteger; #IMPLIED + table:number-matrix-columns-spanned %positiveInteger; #IMPLIED + table:value-type %valueType; "string" + table:value %float; #IMPLIED + table:date-value %date; #IMPLIED + table:time-value %timeInstance; #IMPLIED + table:boolean-value %boolean; #IMPLIED + table:string-value %string; #IMPLIED + table:currency %string; #IMPLIED +> +<!ATTLIST table:covered-table-cell + table:number-columns-repeated %positiveInteger; "1" + table:style-name %styleName; #IMPLIED + table:validation-name CDATA #IMPLIED + table:formula %string; #IMPLIED + table:number-matrix-rows-spanned %positiveInteger; #IMPLIED + table:number-matrix-columns-spanned %positiveInteger; #IMPLIED + table:value-type %valueType; "string" + table:value %float; #IMPLIED + table:date-value %date; #IMPLIED + table:time-value %timeInstance; #IMPLIED + table:boolean-value %boolean; #IMPLIED + table:string-value %string; #IMPLIED + table:currency %string; #IMPLIED +> +<!-- cell protection in writer: cell attribute; calc uses format --> +<!ATTLIST table:table-cell table:protected %boolean; "false"> + +<!ELEMENT table:cell-range-source EMPTY> +<!ATTLIST table:cell-range-source + table:name %string; #REQUIRED + xlink:type (simple) #FIXED "simple" + xlink:actuate (onRequest) #FIXED "onRequest" + xlink:href %uriReference; #REQUIRED + table:filter-name %string; #REQUIRED + table:filter-options %string; #IMPLIED + table:last-column-spanned %positiveInteger; #REQUIRED + table:last-row-spanned %positiveInteger; #REQUIRED + table:refresh-delay %timeDuration; #IMPLIED +> + +<!ELEMENT table:detective (table:highlighted-range*, table:operation*)> +<!ELEMENT table:highlighted-range EMPTY> +<!ATTLIST table:highlighted-range + table:cell-range-address %cell-range-address; #IMPLIED + table:direction (from-another-table | to-another-table | from-same-table | to-same-table) #REQUIRED + table:contains-error %boolean; "false" +> +<!ELEMENT table:operation EMPTY> +<!ATTLIST table:operation + table:name (trace-dependents | remove-dependents | trace-precedents | remove-precedents | trace-errors) #REQUIRED + table:index %nonNegativeInteger; #REQUIRED +> + +<!ELEMENT table:content-validations (table:content-validation)+> +<!ELEMENT table:content-validation (table:help-message?, (table:error-message | (table:error-macro, office:events?))?)> +<!ATTLIST table:content-validation + table:name CDATA #REQUIRED + table:condition CDATA #IMPLIED + table:base-cell-address %cell-address; #IMPLIED + table:allow-empty-cell %boolean; #IMPLIED +> +<!ELEMENT table:help-message (text:p*)> +<!ATTLIST table:help-message + table:title CDATA #IMPLIED + table:display %boolean; #IMPLIED +> +<!ELEMENT table:error-message (text:p*)> +<!ATTLIST table:error-message + table:title CDATA #IMPLIED + table:message-type (stop | warning | information) #IMPLIED + table:display %boolean; #IMPLIED +> +<!ELEMENT table:error-macro EMPTY> +<!ATTLIST table:error-macro + table:name CDATA #IMPLIED + table:execute %boolean; #IMPLIED +> + +<!ELEMENT table:sub-table ((%table-column-groups;) , (%table-row-groups;))> + +<!ELEMENT table:label-ranges (table:label-range)*> +<!ELEMENT table:label-range EMPTY> +<!ATTLIST table:label-range + table:label-cell-range-address %cell-range-address; #REQUIRED + table:data-cell-range-address %cell-range-address; #REQUIRED + table:orientation (column | row) #REQUIRED +> + +<!ELEMENT table:named-expressions (table:named-range | table:named-expression)*> +<!ELEMENT table:named-range EMPTY> +<!ATTLIST table:named-range + table:name CDATA #REQUIRED + table:cell-range-address %cell-range-address; #REQUIRED + table:base-cell-address %cell-address; #IMPLIED + table:range-usable-as CDATA "none" +> +<!ELEMENT table:named-expression EMPTY> +<!ATTLIST table:named-expression + table:name CDATA #REQUIRED + table:expression CDATA #REQUIRED + table:base-cell-address %cell-address; #IMPLIED +> + +<!ELEMENT table:filter (table:filter-condition | table:filter-and | table:filter-or)> +<!ATTLIST table:filter + table:target-range-address %cell-range-address; #IMPLIED + table:condition-source-range-address %cell-range-address; #IMPLIED + table:condition-source (self | cell-range) "self" + table:display-duplicates %boolean; "true" +> +<!ELEMENT table:filter-and (table:filter-or | table:filter-condition)+> +<!ELEMENT table:filter-or (table:filter-and | table:filter-condition)+> +<!ELEMENT table:filter-condition EMPTY> +<!ATTLIST table:filter-condition + table:field-number %nonNegativeInteger; #REQUIRED + table:case-sensitive %boolean; "false" + table:data-type (text | number) "text" + table:value CDATA #REQUIRED + table:operator CDATA #REQUIRED +> + +<!ELEMENT table:database-ranges (table:database-range)*> +<!ELEMENT table:database-range ((table:database-source-sql | table:database-source-table | table:database-source-query)?, table:filter?, table:sort?, table:subtotal-rules?)> +<!ATTLIST table:database-range + table:name CDATA #IMPLIED + table:is-selection %boolean; "false" + table:on-update-keep-styles %boolean; "false" + table:on-update-keep-size %boolean; "true" + table:has-persistant-data %boolean; "true" + table:orientation (row | column) "row" + table:contains-header %boolean; "true" + table:display-filter-buttons %boolean; "false" + table:target-range-address %cell-range-address; #REQUIRED + table:refresh-delay %timeDuration; #IMPLIED +> +<!ELEMENT table:database-source-sql EMPTY> +<!ATTLIST table:database-source-sql + table:database-name CDATA #REQUIRED + table:sql-statement CDATA #REQUIRED + table:parse-sql-statements %boolean; "false" +> +<!ELEMENT table:database-source-table EMPTY> +<!ATTLIST table:database-source-table + table:database-name CDATA #REQUIRED + table:table-name CDATA #REQUIRED +> +<!ELEMENT table:database-source-query EMPTY> +<!ATTLIST table:database-source-query + table:database-name CDATA #REQUIRED + table:query-name CDATA #REQUIRED +> + +<!ELEMENT table:sort (table:sort-by)+> +<!ATTLIST table:sort + table:bind-styles-to-content %boolean; "true" + table:target-range-address %cell-range-address; #IMPLIED + table:case-sensitive %boolean; "false" + table:language CDATA #IMPLIED + table:country CDATA #IMPLIED + table:algorithm CDATA #IMPLIED +> +<!ELEMENT table:sort-by EMPTY> +<!ATTLIST table:sort-by + table:field-number %nonNegativeInteger; #REQUIRED + table:data-type (text | number | automatic | qname-but-not-ncname) "automatic" + table:order (ascending | descending) "ascending" +> + +<!ELEMENT table:subtotal-rules (table:sort-groups? | table:subtotal-rule*)?> +<!ATTLIST table:subtotal-rules + table:bind-styles-to-content %boolean; "true" + table:case-sensitive %boolean; "false" + table:page-breaks-on-group-change %boolean; "false" +> +<!ELEMENT table:sort-groups EMPTY> +<!ATTLIST table:sort-groups + table:data-type (text | number | automatic | qname-but-not-ncname) "automatic" + table:order (ascending | descending) "ascending" +> +<!ELEMENT table:subtotal-rule (table:subtotal-field)*> +<!ATTLIST table:subtotal-rule + table:group-by-field-number %nonNegativeInteger; #REQUIRED +> +<!ELEMENT table:subtotal-field EMPTY> +<!ATTLIST table:subtotal-field + table:field-number %nonNegativeInteger; #REQUIRED + table:function CDATA #REQUIRED +> + +<!ELEMENT table:data-pilot-tables (table:data-pilot-table)*> +<!ELEMENT table:data-pilot-table ((table:database-source-sql | table:database-source-table | table:database-source-query | table:source-service | table:source-cell-range)?, table:data-pilot-field+)> +<!ATTLIST table:data-pilot-table + table:name CDATA #REQUIRED + table:application-data CDATA #IMPLIED + table:grand-total (none | row | column | both) "both" + table:ignore-empty-rows %boolean; "false" + table:identify-categories %boolean; "false" + table:target-range-address %cell-range-address; #REQUIRED + table:buttons %cell-range-address-list; #REQUIRED +> +<!ELEMENT table:source-service EMPTY> +<!ATTLIST table:source-service + table:name CDATA #REQUIRED + table:source-name CDATA #REQUIRED + table:object-name CDATA #REQUIRED + table:username CDATA #IMPLIED + table:password CDATA #IMPLIED +> +<!ELEMENT table:source-cell-range (table:filter)?> +<!ATTLIST table:source-cell-range + table:cell-range-address %cell-range-address; #REQUIRED +> +<!ELEMENT table:data-pilot-field (table:data-pilot-level)?> +<!ATTLIST table:data-pilot-field + table:source-field-name CDATA #REQUIRED + table:is-data-layout-field %boolean; "false" + table:function CDATA #REQUIRED + table:orientation (row | column | data | page | hidden) #REQUIRED + table:used-hierarchy %positiveInteger; "1" +> +<!ELEMENT table:data-pilot-level (table:data-pilot-subtotals?, table:data-pilot-members?)> +<!ATTLIST table:data-pilot-level + table:display-empty %boolean; #IMPLIED +> +<!ELEMENT table:data-pilot-subtotals (table:data-pilot-subtotal)*> +<!ELEMENT table:data-pilot-subtotal EMPTY> +<!ATTLIST table:data-pilot-subtotal + table:function CDATA #REQUIRED +> +<!ELEMENT table:data-pilot-members (table:data-pilot-member)*> +<!ELEMENT table:data-pilot-member EMPTY> +<!ATTLIST table:data-pilot-member + table:name CDATA #REQUIRED + table:display %boolean; #IMPLIED + table:display-details %boolean; #IMPLIED +> + +<!ELEMENT table:consolidation EMPTY> +<!ATTLIST table:consolidation + table:function CDATA #REQUIRED + table:source-cell-range-addresses %cell-range-address-list; #REQUIRED + table:target-cell-address %cell-address; #REQUIRED + table:use-label (none | column | row | both) "none" + table:link-to-source-data %boolean; "false" +> + +<!ELEMENT table:dde-links (table:dde-link)+> +<!ELEMENT table:dde-link (office:dde-source, table:table)> diff --git a/xmerge/source/palmtests/qa/comparator/dtd/text.mod b/xmerge/source/palmtests/qa/comparator/dtd/text.mod new file mode 100644 index 000000000000..792b0fdde55e --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/dtd/text.mod @@ -0,0 +1,1099 @@ +<!-- + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + + Copyright 2000, 2010 Oracle and/or its affiliates. + + OpenOffice.org - a multi-platform office productivity suite + + This file is part of OpenOffice.org. + + OpenOffice.org is free software: you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License version 3 + only, as published by the Free Software Foundation. + + OpenOffice.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Lesser General Public License version 3 for more details + (a copy is included in the LICENSE file that accompanied this code). + + You should have received a copy of the GNU Lesser General Public License + version 3 along with OpenOffice.org. If not, see + <http://www.openoffice.org/license.html> + for a copy of the LGPLv3 License. + +--> + +<!ENTITY % fields "text:date | + text:time | + text:page-number | + text:page-continuation | + text:sender-firstname | + text:sender-lastname | + text:sender-initials | + text:sender-title | + text:sender-position | + text:sender-email | + text:sender-phone-private | + text:sender-fax | + text:sender-company | + text:sender-phone-work | + text:sender-street | + text:sender-city | + text:sender-postal-code | + text:sender-country | + text:sender-state-or-province | + text:author-name | + text:author-initials | + text:placeholder | + text:variable-set | + text:variable-get | + text:variable-input | + text:user-field-get | + text:user-field-input | + text:sequence | + text:expression | + text:text-input | + text:database-display | + text:database-next | + text:database-row-select | + text:database-row-number | + text:database-name | + text:initial-creator | + text:creation-date | + text:creation-time | + text:description | + text:user-defined | + text:print-time | + text:print-date | + text:printed-by | + text:title | + text:subject | + text:keywords | + text:editing-cycles | + text:editing-duration | + text:modification-time | + text:modification-date | + text:creator | + text:conditional-text | + text:hidden-text | + text:hidden-paragraph | + text:chapter | + text:file-name | + text:template-name | + text:set-page-variable | + text:get-page-variable | + text:execute-macro | + text:dde-connection | + text:reference-ref | + text:sequence-ref | + text:bookmark-ref | + text:footnote-ref | + text:endnote-ref | + text:sheet-name | + text:bibliography-mark | + text:page-count | + text:paragraph-count | + text:word-count | + text:character-count | + text:table-count | + text:image-count | + text:object-count | + office:annotation | + text:script | + text:measure" > + +<!ENTITY % inline-text "(#PCDATA| + text:span|text:tab-stop|text:s|text:line-break| + text:footnote|text:endnote|text:a| + text:bookmark|text:bookmark-start|text:bookmark-end| + text:reference-mark|text:reference-mark-start| + text:reference-mark-end|%fields;|%shape;| + text:toc-mark-start | text:toc-mark-end | + text:toc-mark | text:user-index-mark-start | + text:user-index-mark-end | text:user-index-mark | + text:alphabetical-index-mark-start | + text:alphabetical-index-mark-end | + text:alphabetical-index-mark | + %change-marks; | draw:a | text:ruby)*"> + +<!ELEMENT text:p %inline-text;> +<!ELEMENT text:h %inline-text;> + +<!ATTLIST text:p text:style-name %styleName; #IMPLIED> +<!ATTLIST text:p text:cond-style-name %styleName; #IMPLIED> + +<!ATTLIST text:h text:style-name %styleName; #IMPLIED> +<!ATTLIST text:h text:cond-style-name %styleName; #IMPLIED> +<!ATTLIST text:h text:level %positiveInteger; "1"> + +<!ELEMENT text:span %inline-text;> +<!ATTLIST text:span text:style-name %styleName; #REQUIRED> + +<!ELEMENT text:a %inline-text;> +<!ATTLIST text:a xlink:href %uriReference; #REQUIRED> +<!ATTLIST text:a xlink:type (simple) #FIXED "simple"> +<!ATTLIST text:a xlink:actuate (onRequest) "onRequest"> +<!ATTLIST text:a xlink:show (new|replace) "replace"> +<!ATTLIST text:a office:name %string; #IMPLIED> +<!ATTLIST text:a office:target-frame-name %string; #IMPLIED> +<!ATTLIST text:a text:style-name %styleName; #IMPLIED> +<!ATTLIST text:a text:visited-style-name %styleName; #IMPLIED> + + +<!ELEMENT text:s EMPTY> +<!ATTLIST text:s text:c %positiveInteger; "1"> + +<!ELEMENT text:tab-stop EMPTY> + +<!ELEMENT text:line-break EMPTY> + + +<!ENTITY % list-items "((text:list-header,text:list-item*)|text:list-item+)"> +<!ELEMENT text:ordered-list %list-items;> +<!ELEMENT text:unordered-list %list-items;> + + +<!ATTLIST text:ordered-list text:style-name %styleName; #IMPLIED> +<!ATTLIST text:unordered-list text:style-name %styleName; #IMPLIED> + +<!ATTLIST text:ordered-list text:continue-numbering %boolean; "false"> + +<!ELEMENT text:list-header (text:p)+> +<!ELEMENT text:list-item (text:p|text:ordered-list|text:unordered-list)+> + +<!ATTLIST text:list-item text:restart-numbering %boolean; "false"> +<!ATTLIST text:list-item text:start-value %positiveInteger; #IMPLIED> + +<!ELEMENT text:list-style (text:list-level-style-number| + text:list-level-style-bullet| + text:list-level-style-image)+> + +<!ATTLIST text:list-style style:name %styleName; #IMPLIED> + +<!ATTLIST text:list-style text:consecutive-numbering %boolean; "false"> + + +<!ELEMENT text:list-level-style-number (style:properties?)> + +<!ATTLIST text:list-level-style-number text:level %positiveInteger; + #REQUIRED> +<!ATTLIST text:list-level-style-number text:style-name %styleName; #IMPLIED> + +<!ATTLIST text:list-level-style-number style:num-format %string; #REQUIRED> +<!ATTLIST text:list-level-style-number style:num-prefix %string; #IMPLIED> +<!ATTLIST text:list-level-style-number style:num-suffix %string; #IMPLIED> +<!ATTLIST text:list-level-style-number style:num-letter-sync %boolean; + "false"> +<!ATTLIST text:list-level-style-number text:display-levels %positiveInteger; + "1"> +<!ATTLIST text:list-level-style-number text:start-value %positiveInteger; + "1"> +<!ELEMENT text:list-level-style-bullet (style:properties?)> + +<!ATTLIST text:list-level-style-bullet text:level %positiveInteger; #REQUIRED> +<!ATTLIST text:list-level-style-bullet text:style-name %styleName; #IMPLIED> +<!ATTLIST text:list-level-style-bullet text:bullet-char %character; #REQUIRED> +<!ATTLIST text:list-level-style-bullet style:num-prefix %string; #IMPLIED> +<!ATTLIST text:list-level-style-bullet style:num-suffix %string; #IMPLIED> + +<!ELEMENT text:list-level-style-image (style:properties?,office:binary-data?)> + +<!ATTLIST text:list-level-style-image text:level %positiveInteger; #REQUIRED> +<!ATTLIST text:list-level-style-image xlink:type (simple) #IMPLIED> +<!ATTLIST text:list-level-style-image xlink:href %uriReference; #IMPLIED> +<!ATTLIST text:list-level-style-image xlink:actuate (onLoad) #IMPLIED> +<!ATTLIST text:list-level-style-image xlink:show (embed) #IMPLIED> + + +<!-- list properties --> +<!ATTLIST style:properties text:space-before %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties text:min-label-width %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties text:min-label-distance %nonNegativeLength; #IMPLIED> +<!ATTLIST style:properties text:enable-numbering %boolean; #IMPLIED> +<!ATTLIST style:properties style:list-style-name %styleName; #IMPLIED> + +<!ELEMENT text:outline-style (text:outline-level-style)+> + +<!ELEMENT text:outline-level-style (style:properties?)> + +<!ATTLIST text:outline-level-style text:level %positiveInteger; + #REQUIRED> +<!ATTLIST text:outline-level-style text:style-name %styleName; #IMPLIED> + +<!ATTLIST text:outline-level-style style:num-format %string; #REQUIRED> +<!ATTLIST text:outline-level-style style:num-prefix %string; #IMPLIED> +<!ATTLIST text:outline-level-style style:num-suffix %string; #IMPLIED> +<!ATTLIST text:outline-level-style style:num-letter-sync %boolean; + "false"> +<!ATTLIST text:outline-level-style text:display-levels %positiveInteger; + "1"> +<!ATTLIST text:outline-level-style text:start-value %positiveInteger; + "1"> + +<!ENTITY % field-declarations "text:variable-decls?, + text:user-field-decls?, + text:sequence-decls?"> + +<!ENTITY % variableName "CDATA"> + +<!ENTITY % formula "CDATA"> + +<!ENTITY % valueAttr "text:value-type %valueType; #REQUIRED"> + +<!ENTITY % valueAndTypeAttr "%valueAttr; + text:value %float; #IMPLIED + text:date-value %date; #IMPLIED + text:time-value %timeInstance; #IMPLIED + text:boolean-value %boolean; #IMPLIED + text:string-value %string; #IMPLIED + text:currency CDATA #IMPLIED" > + +<!ENTITY % numFormat 'style:num-format CDATA #IMPLIED + style:num-letter-sync %boolean; "false"'> + + +<!ELEMENT text:date (#PCDATA)> +<!ATTLIST text:date text:date-value %date; #IMPLIED> +<!ATTLIST text:date text:date-adjust %dateDuration; #IMPLIED> +<!ATTLIST text:date text:fixed %boolean; "false"> +<!ATTLIST text:date style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:time (#PCDATA)> +<!ATTLIST text:time text:time-value %timeInstance; #IMPLIED> +<!ATTLIST text:time text:time-adjust %timeDuration; #IMPLIED> +<!ATTLIST text:time text:fixed %boolean; "false"> +<!ATTLIST text:time style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:page-number (#PCDATA)> +<!ATTLIST text:page-number text:page-adjust %positiveInteger; #IMPLIED> +<!ATTLIST text:page-number text:select-page (previous|current|next) "current"> +<!ATTLIST text:page-number %numFormat;> + +<!ELEMENT text:page-continuation (#PCDATA)> +<!ATTLIST text:page-continuation text:select-page (previous|next) #REQUIRED> +<!ATTLIST text:page-continuation text:string-value %string; #IMPLIED> + +<!ELEMENT text:sender-firstname (#PCDATA)> +<!ATTLIST text:sender-firstname text:fixed %boolean; "true"> + +<!ELEMENT text:sender-lastname (#PCDATA)> +<!ATTLIST text:sender-lastname text:fixed %boolean; "true"> + +<!ELEMENT text:sender-initials (#PCDATA)> +<!ATTLIST text:sender-initials text:fixed %boolean; "true"> + +<!ELEMENT text:sender-title (#PCDATA)> +<!ATTLIST text:sender-title text:fixed %boolean; "true"> + +<!ELEMENT text:sender-position (#PCDATA)> +<!ATTLIST text:sender-position text:fixed %boolean; "true"> + +<!ELEMENT text:sender-email (#PCDATA)> +<!ATTLIST text:sender-email text:fixed %boolean; "true"> + +<!ELEMENT text:sender-phone-private (#PCDATA)> +<!ATTLIST text:sender-phone-private text:fixed %boolean; "true"> + +<!ELEMENT text:sender-fax (#PCDATA)> +<!ATTLIST text:sender-fax text:fixed %boolean; "true"> + +<!ELEMENT text:sender-company (#PCDATA)> +<!ATTLIST text:sender-company text:fixed %boolean; "true"> + +<!ELEMENT text:sender-phone-work (#PCDATA)> +<!ATTLIST text:sender-phone-work text:fixed %boolean; "true"> + +<!ELEMENT text:sender-street (#PCDATA)> +<!ATTLIST text:sender-street text:fixed %boolean; "true"> + +<!ELEMENT text:sender-city (#PCDATA)> +<!ATTLIST text:sender-city text:fixed %boolean; "true"> + +<!ELEMENT text:sender-postal-code (#PCDATA)> +<!ATTLIST text:sender-postal-code text:fixed %boolean; "true"> + +<!ELEMENT text:sender-country (#PCDATA)> +<!ATTLIST text:sender-country text:fixed %boolean; "true"> + +<!ELEMENT text:sender-state-or-province (#PCDATA)> +<!ATTLIST text:sender-state-or-province text:fixed %boolean; "true"> + +<!ELEMENT text:author-name (#PCDATA)> +<!ATTLIST text:author-name text:fixed %boolean; "true"> + +<!ELEMENT text:author-initials (#PCDATA)> +<!ATTLIST text:author-initials text:fixed %boolean; "true"> + +<!ELEMENT text:placeholder (#PCDATA)> +<!ATTLIST text:placeholder text:placeholder-type (text|table|text-box|image|object) #REQUIRED> +<!ATTLIST text:placeholder text:description %string; #IMPLIED> + +<!ELEMENT text:variable-decls (text:variable-decl)*> + +<!ELEMENT text:variable-decl EMPTY> +<!ATTLIST text:variable-decl text:name %variableName; #REQUIRED> +<!ATTLIST text:variable-decl %valueAndTypeAttr;> + +<!ELEMENT text:variable-set (#PCDATA)> +<!ATTLIST text:variable-set text:name %variableName; #REQUIRED> +<!ATTLIST text:variable-set text:formula %formula; #IMPLIED> +<!ATTLIST text:variable-set %valueAndTypeAttr;> +<!ATTLIST text:variable-set text:display (value|none) "value"> +<!ATTLIST text:variable-set style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:variable-get (#PCDATA)> +<!ATTLIST text:variable-get text:name %variableName; #REQUIRED> +<!ATTLIST text:variable-get text:display (value|formula) "value"> +<!ATTLIST text:variable-get style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:variable-input (#PCDATA)> +<!ATTLIST text:variable-input text:name %variableName; #REQUIRED> +<!ATTLIST text:variable-input text:description %string; #IMPLIED> +<!ATTLIST text:variable-input %valueAndTypeAttr;> +<!ATTLIST text:variable-input text:display (value|none) "value"> +<!ATTLIST text:variable-input style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:user-field-decls (text:user-field-decl)*> + +<!ELEMENT text:user-field-decl EMPTY> +<!ATTLIST text:user-field-decl text:name %variableName; #REQUIRED> +<!ATTLIST text:user-field-decl text:formula %formula; #IMPLIED> +<!ATTLIST text:user-field-decl %valueAndTypeAttr;> + +<!ELEMENT text:user-field-get (#PCDATA)> +<!ATTLIST text:user-field-get text:name %variableName; #REQUIRED> +<!ATTLIST text:user-field-get text:display (value|formula|none) "value"> +<!ATTLIST text:user-field-get style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:user-field-input (#PCDATA)> +<!ATTLIST text:user-field-input text:name %variableName; #REQUIRED> +<!ATTLIST text:user-field-input text:description %string; #IMPLIED> +<!ATTLIST text:user-field-input style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:sequence-decls (text:sequence-decl)*> + +<!ELEMENT text:sequence-decl EMPTY> +<!ATTLIST text:sequence-decl text:name %variableName; #REQUIRED> +<!ATTLIST text:sequence-decl text:display-outline-level %positiveInteger; "0"> +<!ATTLIST text:sequence-decl text:separation-character %character; "."> + +<!ELEMENT text:sequence (#PCDATA)> +<!ATTLIST text:sequence text:name %variableName; #REQUIRED> +<!ATTLIST text:sequence text:formula %formula; #IMPLIED> +<!ATTLIST text:sequence %numFormat;> +<!ATTLIST text:sequence text:ref-name ID #IMPLIED> + +<!ELEMENT text:expression (#PCDATA)> +<!ATTLIST text:expression text:formula %formula; #IMPLIED> +<!ATTLIST text:expression text:display (value|formula ) "value"> +<!ATTLIST text:expression %valueAndTypeAttr;> +<!ATTLIST text:expression style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:text-input (#PCDATA)> +<!ATTLIST text:text-input text:description %string; #IMPLIED> + +<!ENTITY % database-table "text:database-name CDATA #REQUIRED + text:table-name CDATA #REQUIRED"> + +<!ELEMENT text:database-display (#PCDATA)> +<!ATTLIST text:database-display %database-table;> +<!ATTLIST text:database-display text:column-name %string; #REQUIRED> +<!ATTLIST text:database-display style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:database-next (#PCDATA)> +<!ATTLIST text:database-next %database-table;> +<!ATTLIST text:database-next text:condition %formula; #IMPLIED> + +<!ELEMENT text:database-row-select (#PCDATA)> +<!ATTLIST text:database-row-select %database-table;> +<!ATTLIST text:database-row-select text:condition %formula; #IMPLIED> +<!ATTLIST text:database-row-select text:row-number %integer; #REQUIRED> + +<!ELEMENT text:database-row-number (#PCDATA)> +<!ATTLIST text:database-row-number %database-table;> +<!ATTLIST text:database-row-number %numFormat;> +<!ATTLIST text:database-row-number text:value %integer; #IMPLIED> + +<!ELEMENT text:database-name (#PCDATA)> +<!ATTLIST text:database-name %database-table;> + +<!ELEMENT text:initial-creator (#PCDATA)> +<!ATTLIST text:initial-creator text:fixed %boolean; "false"> + +<!ELEMENT text:creation-date (#PCDATA)> +<!ATTLIST text:creation-date text:fixed %boolean; "false"> +<!ATTLIST text:creation-date text:date-value %date; #IMPLIED> +<!ATTLIST text:creation-date style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:creation-time (#PCDATA)> +<!ATTLIST text:creation-time text:fixed %boolean; "false"> +<!ATTLIST text:creation-time text:time-value %timeInstance; #IMPLIED> +<!ATTLIST text:creation-time style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:description (#PCDATA)> +<!ATTLIST text:description text:fixed %boolean; "false"> + +<!ELEMENT text:user-defined (#PCDATA)> +<!ATTLIST text:user-defined text:fixed %boolean; "false"> +<!ATTLIST text:user-defined text:name %string; #REQUIRED> + +<!ELEMENT text:print-time (#PCDATA)> +<!ATTLIST text:print-time text:fixed %boolean; "false"> +<!ATTLIST text:print-time text:time-value %timeInstance; #IMPLIED> +<!ATTLIST text:print-time style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:print-date (#PCDATA)> +<!ATTLIST text:print-date text:fixed %boolean; "false"> +<!ATTLIST text:print-date text:date-value %date; #IMPLIED> +<!ATTLIST text:print-date style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:printed-by (#PCDATA)> +<!ATTLIST text:printed-by text:fixed %boolean; "false"> + +<!ELEMENT text:title (#PCDATA)> +<!ATTLIST text:title text:fixed %boolean; "false"> + +<!ELEMENT text:subject (#PCDATA)> +<!ATTLIST text:subject text:fixed %boolean; "false"> + +<!ELEMENT text:keywords (#PCDATA)> +<!ATTLIST text:keywords text:fixed %boolean; "false"> + +<!ELEMENT text:editing-cycles (#PCDATA)> +<!ATTLIST text:editing-cycles text:fixed %boolean; "false"> + +<!ELEMENT text:editing-duration (#PCDATA)> +<!ATTLIST text:editing-duration text:fixed %boolean; "false"> +<!ATTLIST text:editing-duration text:duration %timeDuration; #IMPLIED> +<!ATTLIST text:editing-duration style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:modification-time (#PCDATA)> +<!ATTLIST text:modification-time text:fixed %boolean; "false"> +<!ATTLIST text:modification-time text:time-value %timeInstance; #IMPLIED> +<!ATTLIST text:modification-time style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:modification-date (#PCDATA)> +<!ATTLIST text:modification-date text:fixed %boolean; "false"> +<!ATTLIST text:modification-date text:date-value %date; #IMPLIED> +<!ATTLIST text:modification-date style:data-style-name %styleName; #IMPLIED> + +<!ELEMENT text:creator (#PCDATA)> +<!ATTLIST text:creator text:fixed %boolean; "false"> + +<!ELEMENT text:conditional-text (#PCDATA)> +<!ATTLIST text:conditional-text text:condition %formula; #REQUIRED> +<!ATTLIST text:conditional-text text:string-value-if-false %string; #REQUIRED> +<!ATTLIST text:conditional-text text:string-value-if-true %string; #REQUIRED> +<!ATTLIST text:conditional-text text:current-value %boolean; "false"> + +<!ELEMENT text:hidden-text (#PCDATA)> +<!ATTLIST text:hidden-text text:condition %formula; #REQUIRED> +<!ATTLIST text:hidden-text text:string-value %string; #REQUIRED> +<!ATTLIST text:hidden-text text:is-hidden %boolean; "false"> + +<!ELEMENT text:hidden-paragraph EMPTY> +<!ATTLIST text:hidden-paragraph text:condition %formula; #REQUIRED> +<!ATTLIST text:hidden-paragraph text:is-hidden %boolean; "false"> + +<!ELEMENT text:chapter (#PCDATA)> +<!ATTLIST text:chapter text:display (name|number|number-and-name| + plain-number-and-name|plain-number) + "number-and-name"> +<!ATTLIST text:chapter text:outline-level %integer; "1"> + +<!ELEMENT text:file-name (#PCDATA)> +<!ATTLIST text:file-name text:display (full|path|name|name-and-extension) + "full"> +<!ATTLIST text:file-name text:fixed %boolean; "false"> + +<!ELEMENT text:template-name (#PCDATA)> +<!ATTLIST text:template-name text:display (full|path|name|name-and-extension| + area|title) "full"> + +<!ELEMENT text:set-page-variable EMPTY> +<!ATTLIST text:set-page-variable text:active %boolean; "true"> +<!ATTLIST text:set-page-variable text:page-adjust %integer; "0"> + +<!ELEMENT text:get-page-variable (#PCDATA)> +<!ATTLIST text:get-page-variable %numFormat;> + +<!ELEMENT text:execute-macro (#PCDATA|office:events)* > +<!ATTLIST text:execute-macro text:description %string; #IMPLIED> + + +<!ELEMENT text:dde-connection-decls (text:dde-connection-decl)*> + +<!ELEMENT text:dde-connection-decl EMPTY> +<!ATTLIST text:dde-connection-decl text:name %string; #REQUIRED> +<!ATTLIST text:dde-connection-decl text:dde-application %string; #REQUIRED> +<!ATTLIST text:dde-connection-decl text:dde-topic %string; #REQUIRED> +<!ATTLIST text:dde-connection-decl text:dde-item %string; #REQUIRED> +<!ATTLIST text:dde-connection-decl text:automatic-update %boolean; "false"> + +<!ELEMENT text:dde-connection (#PCDATA)> +<!ATTLIST text:dde-connection text:connection-name %string; #REQUIRED> + +<!ELEMENT text:reference-ref (#PCDATA)> +<!ATTLIST text:reference-ref text:ref-name %string; #REQUIRED> +<!ATTLIST text:reference-ref text:reference-format (page|chapter|text|direction) #IMPLIED> + +<!ELEMENT text:sequence-ref (#PCDATA)> +<!ATTLIST text:sequence-ref text:ref-name %string; #REQUIRED> +<!ATTLIST text:sequence-ref text:reference-format (page|chapter|text|direction|category-and-value|caption|value) #IMPLIED> + +<!ELEMENT text:bookmark-ref (#PCDATA)> +<!ATTLIST text:bookmark-ref text:ref-name %string; #REQUIRED> +<!ATTLIST text:bookmark-ref text:reference-format (page|chapter|text|direction) #IMPLIED> + +<!ELEMENT text:footnote-ref (#PCDATA)> +<!ATTLIST text:footnote-ref text:ref-name %string; #REQUIRED> +<!ATTLIST text:footnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED> + +<!ELEMENT text:endnote-ref (#PCDATA)> +<!ATTLIST text:endnote-ref text:ref-name %string; #REQUIRED> +<!ATTLIST text:endnote-ref text:reference-format (page|chapter|text|direction) #IMPLIED> + +<!ELEMENT text:sheet-name (#PCDATA)> + +<!ELEMENT text:page-count (#PCDATA)> +<!ATTLIST text:page-count style:num-format %string; #IMPLIED> +<!ATTLIST text:page-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:paragraph-count (#PCDATA)> +<!ATTLIST text:paragraph-count style:num-format %string; #IMPLIED> +<!ATTLIST text:paragraph-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:word-count (#PCDATA)> +<!ATTLIST text:word-count style:num-format %string; #IMPLIED> +<!ATTLIST text:word-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:character-count (#PCDATA)> +<!ATTLIST text:character-count style:num-format %string; #IMPLIED> +<!ATTLIST text:character-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:table-count (#PCDATA)> +<!ATTLIST text:table-count style:num-format %string; #IMPLIED> +<!ATTLIST text:table-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:image-count (#PCDATA)> +<!ATTLIST text:image-count style:num-format %string; #IMPLIED> +<!ATTLIST text:image-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:object-count (#PCDATA)> +<!ATTLIST text:object-count style:num-format %string; #IMPLIED> +<!ATTLIST text:object-count style:num-letter-sync %boolean; "false"> + +<!ELEMENT text:bibliography-mark (#PCDATA)> +<!ATTLIST text:bibliography-mark text:bibiliographic-type + ( article | book | booklet | conference | custom1 | custom2 | custom3 | + custom4 | custom5 | email | inbook | incollection | inproceedings | + journal | manual | mastersthesis | misc | phdthesis | proceedings | + techreport | unpublished | www ) #REQUIRED > +<!ATTLIST text:bibliography-mark text:identifier CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:address CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:annote CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:author CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:booktitle CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:chapter CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:edition CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:editor CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:howpublished CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:institution CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:journal CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:month CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:note CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:number CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:organizations CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:pages CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:publisher CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:school CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:series CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:title CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:report-type CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:volume CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:year CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:url CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:custom1 CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:custom2 CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:custom3 CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:custom4 CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:custom5 CDATA #IMPLIED> +<!ATTLIST text:bibliography-mark text:isbn CDATA #IMPLIED> + + +<!ELEMENT text:bookmark EMPTY> +<!ATTLIST text:bookmark text:name CDATA #REQUIRED> + +<!ELEMENT text:bookmark-start EMPTY> +<!ATTLIST text:bookmark-start text:name CDATA #REQUIRED> + +<!ELEMENT text:bookmark-end EMPTY> +<!ATTLIST text:bookmark-end text:name CDATA #REQUIRED> + +<!ELEMENT text:reference-mark EMPTY> +<!ATTLIST text:reference-mark text:name CDATA #REQUIRED> + +<!ELEMENT text:reference-mark-start EMPTY> +<!ATTLIST text:reference-mark-start text:name CDATA #REQUIRED> + +<!ELEMENT text:reference-mark-end EMPTY> +<!ATTLIST text:reference-mark-end text:name CDATA #REQUIRED> + +<!ELEMENT text:footnotes-configuration (text:footnote-continuation-notice-forward?,text:footnote-continuation-notice-backward?)> +<!ATTLIST text:footnotes-configuration style:num-prefix %string; #IMPLIED> +<!ATTLIST text:footnotes-configuration style:num-suffix %string; #IMPLIED> +<!ATTLIST text:footnotes-configuration style:num-format %string; #IMPLIED> +<!ATTLIST text:footnotes-configuration style:num-letter-sync %string; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:citation-body-style-name %styleName; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:citation-style-name %styleName; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:default-style-name %styleName; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:master-page-name %styleName; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:start-value %integer; #IMPLIED> +<!ATTLIST text:footnotes-configuration text:footnotes-position (document|page) "page"> +<!ATTLIST text:footnotes-configuration text:start-numbering-at (document|chapter|page) "document"> + +<!ELEMENT text:footnote-continuation-notice-forward (#PCDATA)> +<!ELEMENT text:footnote-continuation-notice-backward (#PCDATA)> + +<!ELEMENT text:endnotes-configuration EMPTY> +<!ATTLIST text:endnotes-configuration style:num-prefix %string; #IMPLIED> +<!ATTLIST text:endnotes-configuration style:num-suffix %string; #IMPLIED> +<!ATTLIST text:endnotes-configuration style:num-format %string; #IMPLIED> +<!ATTLIST text:endnotes-configuration style:num-letter-sync %string; #IMPLIED> +<!ATTLIST text:endnotes-configuration text:start-value %integer; #IMPLIED> +<!ATTLIST text:endnotes-configuration text:citation-style-name %styleName; #IMPLIED> +<!ATTLIST text:endnotes-configuration text:citation-body-style-name %styleName; #IMPLIED> +<!ATTLIST text:endnotes-configuration text:default-style-name %styleName; #IMPLIED> +<!ATTLIST text:endnotes-configuration text:master-page-name %styleName; #IMPLIED> + +<!-- Validity constraint: text:footnote and text:endnote elements may not + contain other text:footnote or text:endnote elements, even though the DTD + allows this (via the %text; in the foot-/endnote-body). + Unfortunatetly, this constraint cannot be easily specified in the DTD. +--> +<!ELEMENT text:footnote (text:footnote-citation, text:footnote-body)> +<!ATTLIST text:footnote text:id ID #IMPLIED> + +<!ELEMENT text:footnote-citation (#PCDATA)> +<!ATTLIST text:footnote-citation text:label %string; #IMPLIED> + +<!ELEMENT text:footnote-body (text:h|text:p| + text:ordered-list|text:unordered-list)*> + +<!ELEMENT text:endnote (text:endnote-citation, text:endnote-body)> +<!ATTLIST text:endnote text:id ID #IMPLIED> + +<!ELEMENT text:endnote-citation (#PCDATA)> +<!ATTLIST text:endnote-citation text:label %string; #IMPLIED> + +<!ELEMENT text:endnote-body (text:h|text:p| + text:ordered-list|text:unordered-list)*> + +<!ENTITY % sectionText "(text:h|text:p|text:ordered-list| + text:unordered-list|table:table|chart:chart|draw:page| + draw:a|draw:text-box|draw:image|text:section| + text:table-of-content|text:illustration-index| + text:table-index|text:object-index|text:user-index| + text:alphabetical-index|text:bibliography| + text:index-title|%change-marks;)*"> + +<!ELEMENT text:section ((text:section-source|office:dde-source)?, + %sectionText;) > + +<!ATTLIST text:section text:name CDATA #REQUIRED> +<!ATTLIST text:section text:style-name %styleName; #IMPLIED> +<!ATTLIST text:section text:display (true|none|condition) "true"> +<!ATTLIST text:section text:condition %formula; #IMPLIED> +<!ATTLIST text:section text:protected %boolean; "false"> +<!ATTLIST text:section text:protection-key CDATA #IMPLIED> + +<!ELEMENT text:section-source EMPTY> +<!ATTLIST text:section-source xlink:href %string; #IMPLIED> +<!ATTLIST text:section-source xlink:type (simple) #FIXED "simple"> +<!ATTLIST text:section-source xlink:show (embed) #FIXED "embed"> +<!ATTLIST text:section-source text:section-name %string; #IMPLIED> +<!ATTLIST text:section-source text:filter-name %string; #IMPLIED> + +<!ELEMENT text:table-of-content (text:table-of-content-source, + text:index-body) > +<!ATTLIST text:table-of-content text:style-name %styleName; #IMPLIED> +<!ATTLIST text:table-of-content text:protected %boolean; "false"> + +<!ELEMENT text:table-of-content-source (text:index-title-template? , + text:table-of-content-entry-template*, + text:index-source-styles* ) > +<!ATTLIST text:table-of-content-source text:outline-level %integer; #IMPLIED> +<!ATTLIST text:table-of-content-source text:use-index-marks %boolean; "true"> +<!ATTLIST text:table-of-content-source text:use-index-source-styles + %boolean; "false"> +<!ATTLIST text:table-of-content-source text:index-scope (document|chapter) + "document"> +<!ATTLIST text:table-of-content-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:table-of-content-source fo:language %string; #IMPLIED> +<!ATTLIST text:table-of-content-source fo:country %string; #IMPLIED> +<!ATTLIST text:table-of-content-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:table-of-content-entry-template (text:index-entry-chapter-number | + text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop | + text:index-entry-link-start | + text:index-entry-link-end)* > +<!ATTLIST text:table-of-content-entry-template text:outline-level + %integer; #REQUIRED> +<!ATTLIST text:table-of-content-entry-template text:style-name + %styleName; #REQUIRED> + +<!ELEMENT text:illustration-index + (text:illustration-index-source, text:index-body)> +<!ATTLIST text:illustration-index text:style-name %styleName; #IMPLIED> +<!ATTLIST text:illustration-index text:protected %boolean; "false"> + +<!ELEMENT text:illustration-index-source (text:index-title-template?, + text:illustration-index-entry-template?) > +<!ATTLIST text:illustration-index-source text:index-scope + (document|chapter) "document"> +<!ATTLIST text:illustration-index-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:illustration-index-source text:use-caption %boolean; "true"> +<!ATTLIST text:illustration-index-source text:caption-sequence-name + %string; #IMPLIED> +<!ATTLIST text:illustration-index-source text:caption-sequence-format + (text|category-and-value|caption) "text"> +<!ATTLIST text:illustration-index-source fo:language %string; #IMPLIED> +<!ATTLIST text:illustration-index-source fo:country %string; #IMPLIED> +<!ATTLIST text:illustration-index-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:illustration-index-entry-template + ( text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop )* > +<!ATTLIST text:illustration-index-entry-template text:style-name + %styleName; #REQUIRED> + +<!ELEMENT text:table-index (text:table-index-source, text:index-body)> +<!ATTLIST text:table-index text:style-name %styleName; #IMPLIED> +<!ATTLIST text:table-index text:protected %boolean; "false"> + +<!ELEMENT text:table-index-source (text:index-title-template?, + text:table-index-entry-template?) > +<!ATTLIST text:table-index-source text:index-scope + (document|chapter) "document"> +<!ATTLIST text:table-index-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:table-index-source text:use-caption %boolean; "true"> +<!ATTLIST text:table-index-source text:caption-sequence-name + %string; #IMPLIED> +<!ATTLIST text:table-index-source text:caption-sequence-format + (text|category-and-value|caption) "text"> +<!ATTLIST text:table-index-source fo:language %string; #IMPLIED> +<!ATTLIST text:table-index-source fo:country %string; #IMPLIED> +<!ATTLIST text:table-index-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:table-index-entry-template ( text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop )* > +<!ATTLIST text:table-index-entry-template text:style-name + %styleName; #REQUIRED> + +<!ELEMENT text:object-index ( text:object-index-source, text:index-body ) > +<!ATTLIST text:object-index text:style-name %styleName; #IMPLIED> +<!ATTLIST text:object-index text:protected %boolean; "false"> + +<!ELEMENT text:object-index-source ( text:index-title-template?, + text:object-index-entry-template? ) > +<!ATTLIST text:object-index-source text:index-scope + (document|chapter) "document"> +<!ATTLIST text:object-index-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:object-index-source text:use-spreadsheet-objects + %boolean; "false"> +<!ATTLIST text:object-index-source text:use-draw-objects %boolean; "false"> +<!ATTLIST text:object-index-source text:use-chart-objects %boolean; "false"> +<!ATTLIST text:object-index-source text:use-other-objects %boolean; "false"> +<!ATTLIST text:object-index-source text:use-math-objects %boolean; "false"> +<!ATTLIST text:object-index-source fo:language %string; #IMPLIED> +<!ATTLIST text:object-index-source fo:country %string; #IMPLIED> +<!ATTLIST text:object-index-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:object-index-entry-template ( text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop )* > +<!ATTLIST text:object-index-entry-template text:style-name + %styleName; #REQUIRED > + +<!ELEMENT text:user-index (text:user-index-source, text:index-body) > +<!ATTLIST text:user-index text:style-name %styleName; #IMPLIED> +<!ATTLIST text:user-index text:protected %boolean; "false"> + +<!ELEMENT text:user-index-source ( text:index-title-template?, + text:user-index-entry-template*, + text:index-source-styles* ) > +<!ATTLIST text:user-index-source text:index-scope + (document|chapter) "document"> +<!ATTLIST text:user-index-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:user-index-source text:use-index-marks %boolean; "false"> +<!ATTLIST text:user-index-source text:use-graphics %boolean; "false"> +<!ATTLIST text:user-index-source text:use-tables %boolean; "false"> +<!ATTLIST text:user-index-source text:use-floating-frames %boolean; "false"> +<!ATTLIST text:user-index-source text:use-objects %boolean; "false"> +<!ATTLIST text:user-index-source text:use-index-source-styles + %boolean; "false"> +<!ATTLIST text:user-index-source text:copy-outline-level %boolean; "false"> +<!ATTLIST text:user-index-source fo:language %string; #IMPLIED> +<!ATTLIST text:user-index-source fo:country %string; #IMPLIED> +<!ATTLIST text:user-index-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:user-index-entry-template ( text:index-entry-chapter | + text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop )* > +<!ATTLIST text:user-index-entry-template text:outline-level %integer; #REQUIRED> +<!ATTLIST text:user-index-entry-template text:style-name %styleName; #REQUIRED> + +<!ELEMENT text:alphabetical-index (text:alphabetical-index-source, + text:index-body)> +<!ATTLIST text:alphabetical-index text:style-name %styleName; #IMPLIED> +<!ATTLIST text:alphabetical-index text:protected %boolean; "false"> + +<!ELEMENT text:alphabetical-index-source ( text:index-title-template?, + text:alphabetical-index-entry-template* ) > +<!ATTLIST text:alphabetical-index-source text:index-scope + (document|chapter) "document"> +<!ATTLIST text:alphabetical-index-source text:relative-tab-stop-position + %boolean; "true"> +<!ATTLIST text:alphabetical-index-source text:ignore-case %boolean; "false"> +<!ATTLIST text:alphabetical-index-source text:main-entry-style-name + %styleName; #IMPLIED> +<!ATTLIST text:alphabetical-index-source text:alphabetical-separators + %boolean; "false"> +<!ATTLIST text:alphabetical-index-source text:combine-entries + %boolean; "true"> +<!ATTLIST text:alphabetical-index-source text:combine-entries-with-dash + %boolean; "false"> +<!ATTLIST text:alphabetical-index-source text:combine-entries-with-pp + %boolean; "true"> +<!ATTLIST text:alphabetical-index-source text:use-keys-as-entries + %boolean; "false"> +<!ATTLIST text:alphabetical-index-source text:capitalize-entries + %boolean; "false"> +<!ATTLIST text:alphabetical-index-source text:comma-separated + %boolean; "false"> +<!ATTLIST text:alphabetical-index-source fo:language %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-source fo:country %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-source text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:alphabetical-index-entry-template ( text:index-entry-chapter | + text:index-entry-page-number | + text:index-entry-text | + text:index-entry-span | + text:index-entry-tab-stop )* > +<!ATTLIST text:alphabetical-index-entry-template text:outline-level + (1|2|3|separator) #REQUIRED> +<!ATTLIST text:alphabetical-index-entry-template text:style-name + %styleName; #REQUIRED> + +<!ELEMENT text:alphabetical-index-auto-mark-file EMPTY> +<!ATTLIST text:alphabetical-index-auto-mark-file xlink:href CDATA #IMPLIED> +<!ATTLIST text:alphabetical-index-auto-mark-file xlink:type (simple) #FIXED "simple"> + +<!ELEMENT text:bibliography (text:bibliography-source, text:index-body) > +<!ATTLIST text:bibliography text:style-name %styleName; #IMPLIED> +<!ATTLIST text:bibliography text:protected %boolean; "false"> + +<!ELEMENT text:bibliography-source ( text:index-title-template?, + text:bibliography-entry-template* ) > + +<!ELEMENT text:bibliography-entry-template ( text:index-entry-span | + text:index-entry-tab-stop | + text:index-entry-bibliography )* > +<!ATTLIST text:bibliography-entry-template text:bibliography-type + ( article | book | booklet | conference | custom1 | custom2 | + custom3 | custom4 | custom5 | email | inbook | incollection | + inproceedings | journal | manual | mastersthesis | misc | + phdthesis | proceedings | techreport | unpublished | www ) + #REQUIRED > +<!ATTLIST text:bibliography-entry-template text:style-name + %styleName; #REQUIRED> + +<!ELEMENT text:index-body %sectionText; > + +<!-- +Validity constraint: text:index-title elements may appear only in +indices, and there may be only one text:index-title element. +--> +<!ELEMENT text:index-title %sectionText; > +<!ATTLIST text:index-title text:style-name %styleName; #IMPLIED> +<!ATTLIST text:index-title text:name %string; #IMPLIED> + +<!ELEMENT text:index-title-template (#PCDATA)> +<!ATTLIST text:index-title-template text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-chapter-number EMPTY> +<!ATTLIST text:index-entry-chapter-number text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-chapter EMPTY> +<!ATTLIST text:index-entry-chapter text:style-name %styleName; #IMPLIED> +<!ATTLIST text:index-entry-chapter text:display (name|number|number-and-name) + "number-and-name" > + +<!ELEMENT text:index-entry-text EMPTY> +<!ATTLIST text:index-entry-text text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-page-number EMPTY> +<!ATTLIST text:index-entry-page-number text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-span (#PCDATA)> +<!ATTLIST text:index-entry-span text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-bibliography EMPTY> +<!ATTLIST text:index-entry-bibliography text:style-name %styleName; #IMPLIED> +<!ATTLIST text:index-entry-bibliography text:bibliography-data-field + ( address | annote | author | bibiliographic_type | + booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor | + howpublished | identifier | institution | isbn | + journal | month | note | number | organizations | + pages | publisher | report_type | school | + series | title | url | volume | year ) #REQUIRED> + + +<!ELEMENT text:index-entry-tab-stop EMPTY> +<!ATTLIST text:index-entry-tab-stop text:style-name %styleName; #IMPLIED> +<!ATTLIST text:index-entry-tab-stop style:leader-char %character; " "> +<!ATTLIST text:index-entry-tab-stop style:type (left|right) "left"> +<!ATTLIST text:index-entry-tab-stop style:position %length; #IMPLIED> + +<!ELEMENT text:index-entry-link-start EMPTY> +<!ATTLIST text:index-entry-link-start text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-entry-link-end EMPTY> +<!ATTLIST text:index-entry-link-end text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:index-source-styles (text:index-source-style)*> +<!ATTLIST text:index-source-styles text:outline-level %integer; #REQUIRED> + +<!ELEMENT text:index-source-style EMPTY> +<!ATTLIST text:index-source-style text:style-name %styleName; #REQUIRED> + +<!ELEMENT text:toc-mark-start EMPTY> +<!ATTLIST text:toc-mark-start text:id %string; #REQUIRED> +<!ATTLIST text:toc-mark-start text:outline-level %integer; #IMPLIED> + +<!ELEMENT text:toc-mark-end EMPTY> +<!ATTLIST text:toc-mark-end text:id %string; #REQUIRED> + +<!ELEMENT text:toc-mark EMPTY> +<!ATTLIST text:toc-mark text:string-value %string; #REQUIRED> +<!ATTLIST text:toc-mark text:outline-level %integer; #IMPLIED> + +<!ELEMENT text:user-index-mark-start EMPTY> +<!ATTLIST text:user-index-mark-start text:id %string; #REQUIRED> +<!ATTLIST text:user-index-mark-start text:outline-level %integer; #IMPLIED> +<!ATTLIST text:user-index-mark-start text:index-name %string; #IMPLIED> + +<!ELEMENT text:user-index-mark-end EMPTY> +<!ATTLIST text:user-index-mark-end text:id %string; #REQUIRED> + +<!ELEMENT text:user-index-mark EMPTY> +<!ATTLIST text:user-index-mark text:string-value %string; #REQUIRED> +<!ATTLIST text:user-index-mark text:outline-level %integer; #IMPLIED> +<!ATTLIST text:user-index-mark text:index-name %string; #IMPLIED> + +<!ELEMENT text:alphabetical-index-mark-start EMPTY> +<!ATTLIST text:alphabetical-index-mark-start text:id %string; #REQUIRED> +<!ATTLIST text:alphabetical-index-mark-start text:key1 %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-mark-start text:key2 %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-mark-start text:main-etry %boolean; "false"> + +<!ELEMENT text:alphabetical-index-mark-end EMPTY> +<!ATTLIST text:alphabetical-index-mark-end text:id %string; #REQUIRED> + +<!ELEMENT text:alphabetical-index-mark EMPTY> +<!ATTLIST text:alphabetical-index-mark text:string-value %string; #REQUIRED> +<!ATTLIST text:alphabetical-index-mark text:key1 %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-mark text:key2 %string; #IMPLIED> +<!ATTLIST text:alphabetical-index-mark text:main-etry %boolean; "false"> + +<!ELEMENT text:bibliography-configuration (text:sort-key)*> +<!ATTLIST text:bibliography-configuration text:prefix %string; #IMPLIED> +<!ATTLIST text:bibliography-configuration text:suffix %string; #IMPLIED> +<!ATTLIST text:bibliography-configuration text:sort-by-position %boolean; "true"> +<!ATTLIST text:bibliography-configuration text:numbered-entries %boolean; "false"> +<!ATTLIST text:bibliography-configuration fo:language %string; #IMPLIED> +<!ATTLIST text:bibliography-configuration fo:country %string; #IMPLIED> +<!ATTLIST text:bibliography-configuration text:sort-algorithm %string; #IMPLIED> + +<!ELEMENT text:sort-key EMPTY> +<!ATTLIST text:sort-key text:key ( address | annote | author | + bibiliographic_type | booktitle | chapter | custom1 | custom2 | + custom3 | custom4 | custom5 | edition | editor | howpublished | + identifier | institution | isbn | journal | month | note | number | + organizations | pages | publisher | report_type | school | series | + title | url | volume | year ) #REQUIRED> +<!ATTLIST text:sort-key text:sort-ascending %boolean; "true"> + +<!ELEMENT text:linenumbering-configuration (text:linenumbering-separator?)> +<!ATTLIST text:linenumbering-configuration text:style-name %styleName; #IMPLIED> +<!ATTLIST text:linenumbering-configuration text:number-lines %boolean; "true"> +<!ATTLIST text:linenumbering-configuration text:count-empty-lines %boolean; "true"> +<!ATTLIST text:linenumbering-configuration text:count-in-floating-frames %boolean; "false"> +<!ATTLIST text:linenumbering-configuration text:restart-numbering %boolean; "false"> +<!ATTLIST text:linenumbering-configuration text:offset %nonNegativeLength; #IMPLIED> +<!ATTLIST text:linenumbering-configuration style:num-format (1|a|A|i|I) "1"> +<!ATTLIST text:linenumbering-configuration style:num-letter-sync %boolean; "false"> +<!ATTLIST text:linenumbering-configuration text:number-position (left|rigth|inner|outer) "left"> +<!ATTLIST text:linenumbering-configuration text:increment %nonNegativeInteger; #IMPLIED> + +<!ELEMENT text:linenumbering-separator (#PCDATA)> +<!ATTLIST text:linenumbering-separator text:increment %nonNegativeInteger; #IMPLIED> + +<!ELEMENT text:script (#PCDATA)> +<!ATTLIST text:script script:language CDATA #REQUIRED> +<!ATTLIST text:script xlink:href CDATA #IMPLIED> +<!ATTLIST text:script xlink:type (simple) #FIXED "simple"> + +<!ELEMENT text:measure (#PCDATA)> +<!ATTLIST text:measure text:kind (value|unit|gap) #REQUIRED> + +<!ELEMENT text:ruby (text:ruby-base, text:ruby-text)> +<!ATTLIST text:ruby text:style-name %styleName; #IMPLIED> + +<!ELEMENT text:ruby-base %inline-text;> + +<!ELEMENT text:ruby-text (#PCDATA)> +<!ATTLIST text:ruby-text text:style-name %styleName; #IMPLIED> + +<!-- elements for change tracking --> + +<!ELEMENT text:change EMPTY> +<!ATTLIST text:change text:change-id CDATA #REQUIRED> + +<!ELEMENT text:change-start EMPTY> +<!ATTLIST text:change-start text:change-id CDATA #REQUIRED> + +<!ELEMENT text:change-end EMPTY> +<!ATTLIST text:change-end text:change-id CDATA #REQUIRED> + +<!ELEMENT text:tracked-changes (text:changed-region)*> +<!ATTLIST text:tracked-changes text:track-changes %boolean; "true"> +<!ATTLIST text:tracked-changes text:protection-key CDATA #IMPLIED> + +<!ELEMENT text:changed-region (text:insertion | + (text:deletion, text:insertion?) | + text:format-change) > +<!ATTLIST text:changed-region text:id ID #REQUIRED> + +<!ELEMENT text:insertion (office:change-info, %sectionText;)> +<!ELEMENT text:deletion (office:change-info, %sectionText;)> +<!ELEMENT text:format-change (office:change-info)> + diff --git a/xmerge/source/palmtests/qa/comparator/pdbcomparison.java b/xmerge/source/palmtests/qa/comparator/pdbcomparison.java new file mode 100644 index 000000000000..785abbad0e75 --- /dev/null +++ b/xmerge/source/palmtests/qa/comparator/pdbcomparison.java @@ -0,0 +1,542 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +import java.io.*; +import java.util.*; + +public class pdbcomparison +{ + + private String LOGTAG ="LOGFILE"; + private String OUTTAG ="OUTFILE"; + private String LISTTAG ="LISTFILE"; + private String PDBTAG1 ="PDBNAME1"; + private String PDBTAG2 ="PDBNAME2"; + + private String OUTFILE="pdbcomparison.out"; + private String LOGFILE="pdbcomparison.log"; + + private String pdbarr1[]; + private String pdbarr2[]; + + + /** + * Default Constructor + * + * @param + * @return + * + */ + public void pdbcomparison() + { + } + + /** + * Prints the command line arguments for this class + * + * @param + * + * @return void + * + */ + public void usage() + { + String str = new String(); + str += "********************************************************\n"; + str += " java pdbcomparison.java <propFile> \n"; + str += " where propFile is name of Property File...\n"; + str += "********************************************************\n"; + + System.out.println(str); + + } + + /** + * This method, read the Property file and validates the + * entries in that file, and accordingly sets the log file + * output file and updates the array pdbarr1 and pdbarr2 with + * list of pdb's to be compared. + * + * @param propFile Property filename which list the log/outputfile/list/pdb + * names + * @return + * + */ + public void parsePropertyFile(String propFile) + { + Properties defaultProps = new Properties(); + + try { + FileInputStream in = new FileInputStream(propFile); + defaultProps.load(in); + in.close(); + } catch (IOException e) { + System.out.println("Could not open Property File " + propFile); + return; + } + + + String logFile = defaultProps.getProperty(this.LOGTAG); + String outFile = defaultProps.getProperty(this.OUTTAG); + String listFile = defaultProps.getProperty(this.LISTTAG); + String pdbname1 = defaultProps.getProperty(this.PDBTAG1); + String pdbname2 = defaultProps.getProperty(this.PDBTAG2); + + // validate all command line arguments + if ((listFile == null) && ((pdbname1 == null) || (pdbname2 == null))) + { + System.out.println("Missing listFile or missing pdb filenames in Property file " + propFile); + return; + } + + if (logFile == null || logFile.length() == 0) + logFile = this.LOGFILE; + + if (outFile == null || outFile.length() == 0) + outFile = this.LOGFILE; + + + // validate log and output files + if (! validateAndCreateFile(logFile)) return; + if (! validateAndCreateFile(outFile)) return; + LOGFILE = logFile; + OUTFILE = outFile; + + System.out.println("Output is written to log file... " + LOGFILE); + if (listFile != null) + { + if (! checkFile(listFile)) return; + populatePDBArray(listFile); + } else { + if (! checkFile(pdbname1)) return; + if (! checkFile(pdbname2)) return; + populatePDBArray(pdbname1, pdbname2); + } + } + + /** + * This method validates if the file passed exists. + * If it does , then it is moved to <filename>.bak and then creates a newFile. + * Also validates permissions to create. + * + * @param filename name of file to be created + * @return true, if file could be created + * false, if could not. + * + */ + private boolean validateAndCreateFile (String filename) + { + if (filename == null) return false; + + File f = null; + try { + f = new File(filename); + } catch (NullPointerException e) { + System.out.println("Could not create a File object for file " + filename); + return false; + } + + if (f.exists()) + { + String newFile = filename + ".bak"; + File newF=null; + try { + newF = new File(newFile); + } catch (Exception ex) { + System.out.println("Could not get File Object instance for " + newFile); + return false; + } + + if (newF.exists()) + { + try { + newF.delete(); + } catch ( SecurityException se) { + System.out.println("Could not get delete " + newFile); + return false; + } + } + + try { + if (! f.renameTo(newF)) + { + System.out.println("Could not rename " + filename + " to " + newFile ); + return false; + } + } catch (SecurityException s) { + System.out.println("SecurityException: " + s.toString()); + return false; + } catch (NullPointerException n) { + System.out.println("NullPointerException: " + n.toString()); + return false; + } + } else { + try { + if (! f.createNewFile()) + { + System.out.println("Could not create " + filename + " Check permissions.."); + return false; + } + } catch (IOException e) { + System.out.println("IOException: " + e.toString()); + return false; + } catch (SecurityException s) { + System.out.println("SecuriityException: " + s.toString() ); + return false; + } + + } + + return true; + + } + + /** + * This method validates if the file exists and is readable + * + * @param filename name of file to be created + * @return true, if file exists and is readable + * false, if not. + * + */ + private boolean checkFile(String filename) + { + if (filename == null) return false; + + File f = null; + try { + f = new File(filename); + } catch (NullPointerException e) { + System.out.println("Could not create a File object for file " + filename); + return false; + } + + if (! f.exists()) + { + System.out.println("File " + filename + " does not exist... "); + return false; + } + + if (! f.canRead()) + { + System.out.println("Cannot read file " + filename); + return false; + } + + return true; + + } + + /** + * This method populates the pdb arrays with the names of the pdbs to + * compare. Ths listFile lists a series of entries, wherein each + * line indicates the PDB names to be compared. + * <pdbname1>=<pdbname2> + * + * @param listFile name of the listfile + * @return + * + */ + private void populatePDBArray(String listFile) + { + // open ListFile and populate the PDB list to be compared + if (listFile != null) + { + Properties listProps = new Properties(); + try { + FileInputStream in = new FileInputStream(listFile); + listProps.load(in); + in.close(); + } catch (IOException ex) { + System.out.println("Could not open List File " + listFile); + return; + } + + pdbarr1 = new String[listProps.size()]; + pdbarr2 = new String[listProps.size()]; + Enumeration e = listProps.keys(); + int j=0; + while (e.hasMoreElements()) + { + pdbarr1[j] = (String)e.nextElement(); + pdbarr2[j] = listProps.getProperty(pdbarr1[j]); + j++; + } + + } + } + + /** + * This method populates the pdb arrays with the names of the pdbs to + * compare. + * + * @param pdbname1 Name of 2nd PDB file to be compared + * @param pdbname2 Name of 2nd PDB file to be compared + * @return + * + */ + private void populatePDBArray(String pdbname1, String pdbname2) + { + if (pdbname1 == null) return; + if (pdbname2 == null) return; + + if ((pdbname1 != null) && (pdbname2 != null)) + { + pdbarr1 = new String[1]; + pdbarr2 = new String[1]; + + pdbarr1[0] = pdbname1; + pdbarr2[0] = pdbname2; + } + } + + /** + * This method populates the pdb arrays with the names of the pdbs to + * compare. + * + * @param arrayno Array number which corresponds to the pdb array + * containing list of pdbs + * If 1 then send pdbarr1, if 2 send pdbarr2 else null + * + * @return PDB string array containing list of PDB's + * + */ + private String[] getPDBArray(int arrayno) + { + if (arrayno == 1) return pdbarr1; + if (arrayno == 2) return pdbarr2; + + return null; + } + + /** + * This method comares 2 PDB's and returns true if comparison is equal. + * It uses the PDB Decoder class to decode to a PDB structure and then + * does record comparison + * + * @param pdbname1 Name of one PDB file to be compared + * @param pdbname2 Name of other PDB file to be compared + * + * @return returns true if both PDB's are equal else returns false + * + */ + private boolean comparePDB(String pdbname1, String pdbname2) + { + PalmDB pdb1=null, pdb2=null; + PDBDecoder decoder = new PDBDecoder(); + try { + pdb1 = decoder.parse(pdbname1); + } catch (Exception e) { + System.out.println("Could not parse PDB " + pdbname1); + return false; + } + + try { + pdb2 = decoder.parse(pdbname2); + } catch (Exception e) { + System.out.println("Could not parse PDB " + pdbname2); + return false; + } + + if (pdb1.equals(pdb2)) { + writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are equal"); + + return true; + } else { + writeToLog("PDB " + pdbname1 + " and PDB " + pdbname2 + " are not equal"); + return false; + } + } + + + + /** + * Write message to LOGFILE + * + * @param msg Message to be written to log file + * @return + * + */ + private void writeToLog(String msg) + { + if (msg == null) return; + + // Get Output Stream from Log file + RandomAccessFile raf=null; + try { + raf = new RandomAccessFile(LOGFILE, "rw"); + } catch (Exception e) { + System.out.println ("Could not open file " + LOGFILE); + return; + } + + try { + long len = raf.length(); + raf.seek(len); + raf.write(msg.getBytes()); + raf.write("\n".getBytes()); + } catch (IOException e) { + System.out.println("ERROR: Could not write to File " + LOGFILE); + return; + } + } + + /** + * Write status of comparison to OUTFILE + * + * @param status Indicates whether comparsion of PDB's PASSED or FAILED + * @param pdbname1 file name of pdb which was compared. + * @param pdbname2 file name of pdb which was compared. + * + * @return + * + */ + private void writeToOutputFile(String status, String pdbname1, String pdbname2) + { + if (status == null) return; + if (pdbname1 == null) return; + if (pdbname2 == null) return; + + String msg = pdbname1 + "=" + pdbname2 + ":" + status; + + // Get Output Stream from Log file + RandomAccessFile raf=null; + try { + raf = new RandomAccessFile(OUTFILE, "rw"); + } catch (Exception e) { + System.out.println ("Could not open file " + OUTFILE); + return; + } + + try { + long len = raf.length(); + raf.seek(len); + + raf.write(msg.getBytes()); + raf.write("\n".getBytes()); + } catch (IOException e) { + System.out.println("ERROR: Could not write to File " + OUTFILE); + return; + } + + try { + raf.close(); + } catch (Exception e) { + System.out.println("ERROR: Could not close File " + OUTFILE); + return; + } + + } + + + + /** + * Main starting block of execution + * + * @param command line args captured in an array of Strings + * @return + * + */ + public static void main(String args[]) + { + + Date startTime = new Date(); + pdbcomparison pdbcmp = new pdbcomparison(); + int nargs = args.length; + int status=0; + + if (nargs != 1) + { + System.out.println("Incorrect no. of arguments passed..."); + pdbcmp.usage(); + System.exit(-1); + + } + + String propFile = args[0]; + + File f=null; + try { + f = new File(propFile); + } catch (Exception e) { + System.out.println("Exception: Could not open file " + propFile); + System.exit(-1); + } + + if (! f.canRead()) { + System.out.println("Exception: " + propFile + " is not a file "); + System.exit(-1); + } + + if (! f.canRead()) { + System.out.println("Exception: Cannot open file for reading. Please check permissions "); + System.exit(-1); + } + + // parse Property file + pdbcmp.parsePropertyFile(propFile); + + String pdbarr1[] = pdbcmp.getPDBArray(1); + String pdbarr2[] = pdbcmp.getPDBArray(2); + if ( (pdbarr1 == null) || + (pdbarr2 == null) || + (pdbarr1.length == 0) || + (pdbarr1.length == 0)) + { + System.out.println("pdbArray is empty. No PDBS to compare... \n"); + System.exit(-1); + } + + + pdbcmp.writeToLog("************** Start *****************"); + pdbcmp.writeToLog("PDB Comparison: start time " + startTime); + for (int i=0; i<pdbarr1.length; i++) + { + Date pdb_startTime = new Date(); + pdbcmp.writeToLog("\n"); + pdbcmp.writeToLog("start time " + pdb_startTime); + boolean val = pdbcmp.comparePDB(pdbarr1[i], pdbarr2[i]); + Date pdb_endTime = new Date(); + pdbcmp.writeToLog("end time " + pdb_endTime); + + if (val) { + pdbcmp.writeToOutputFile("PASSED", pdbarr1[i], pdbarr2[i]); + status=0; + } else { + pdbcmp.writeToOutputFile("FAILED", pdbarr1[i], pdbarr2[i]); + status=-1; + } + } + + Date endTime = new Date(); + pdbcmp.writeToLog("PDB Comparison: end time " + endTime); + pdbcmp.writeToLog("************** End *****************n"); + pdbcmp.writeToLog("\n"); + + System.exit(status); + } +} |