Home
Release 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1, 2.2, 2.3, 3.0
This release has capability for editing large documents, which cannot stay entirely in memory space. This capability is based on an intermediary document storage format, which has been called "BRXI/0" for "Binary format for Randomly accessed XML Infoset, variant zero". This binary format has the following characteristics:
- Standalone. No DOCTYPE.
- Encoding UTF-16BE.
- Each Node is streamed with its length in order to be easily skiped.
- Namespace unaware.
As the tool is based on DOM, the release contains a BRXI DOM implementation. This implementation is limited to just what the tool uses, which is about 80% of DOM level 1 and 10% of DOM level 2. It is thread safe, as required by the GUI.
Enhancements
- For each element name, the element labelling in the tree panel may be modified. It may use attributes (as before) or element childs that contains only a text child. One attribute or single element may be selected.
- Indentation capability (but not for mixed content) has been reintroduced.
- The document comparison algorithm has been improved.
- The position and size of dialogs are made persistent during a tool session.
- XML version 1.0 and 1.1 are supported (depending on Xerces for parsing).
- At the source level, a better isolation has been made between operations
and document view.
- An Ant build file is provided with sources.
Bugs fixed
- The XPath evaluation wizzard didn't work with J2SE 1.4. This is fixed.
- The task cancel button didn't appear any more with J2SE 1.4. This is fixed.
- A bug on refreshing some combo-box (attribute value enumeration, entity reference name) is fixed.
- A bug in localizing an element at (line, row) is fixed.
- A bug on the condition for an element to be inserted repeatdly, when using some RELAX NG schemas, is fixed.
Deprecation
- Tool dependencies and the "Depend" schema have been removed. They are deprecated by using JavaSkeleton.
- Distribution error fixed. The
relaxng/xmloperator_2_2_*.rng
files were missing. Thanks to John Dubery who has revealed the problem.
- The document comparison design has been enhanced. It is namespace aware and doesn't depend any more on the order of the elements.
- New operation for replacing the selected nodes by the document fragment.
- Support of the system clipboard additionaly to the document's fragments.
- A content model view is created.
- A long, character data, attribute can be selected in the attribute table in order to be edited in a text area that occupy the detail view.
- On packing one text node whose a fragment is selected, only the selected fragment is packed. The text is first splited at start and end of selection.
- A namespace prefix pair list is proposed for adding xmlns:*** attributes on root element.
- A missing prefix is represented by the namespace URI between parenthesis.
- Importing nodes was not possible with RELAX NG and not the lazy mode. This is fixed.
- A bug at guiding editing for an interleave content model is fixed.
- Fixes a null pointer exception at inserting a child element (regression).
Schemas relative enhancements
- RELAX NG "externalRef" and "include" elements are now supported.
- Invalid attributes make the content not valid.
- The bug on parsing a relax ng param element is fixed.
- The bug on aggregating relax ng choice patterns is fixed.
- Using a DTD, the attributes are added to the displayed content model.
- Using a DTD, a missing required attribute makes the content not valid.
- The last reference DTDs are migrated to RELAG NG.
- The namespace URIs on xmloperator.org are moved to xmloperator.net in order to be dereferencable.
Document types and converters
- A document type info is no more required to specify the root element name.
- Converters are replaced par Transformers using the TraX API. A transformer from CSSXML 1.0 to CSS is provided as a demonstration of plain text production. CSSXML is defined using a RELAX NG schema. It supports only CSS 1.0.
- One can define a transformation's group for executing as a batch.
Miscellaneous
- The "xml:base" attributes are taken into account for entity reference resolution.
- At inserting an new element, a list of possible element names is now systematically proposed even if the content model allows to repeat the name of the selected element.
- The bug of the blank detail view on J2SE 1.4 is fixed.
This release offers some support for the RELAX NG schema language.
It has required a lot of work :
- new framework for providing equal support for DTDs and RELAX NG,
- RELAX NG syntax processing,
- full namespace support,
- empowered attributes managing, ...
The tool has quite the same look. Notable differences are the following:
- Only the actual attributes of an element are displayed, then there is no more "All attr." checkbox.
- The element name combo-box in the detail view is replaced by a button.
- The field under the element name button becomes an indicator for content (superficial) validity.
- There is no more options file by document type. Too complex, not enough usefull.
The user guide has been enhanced. It uses a "what do you want to do" approach. Format is XHTML. The "doc" format has been abandoned.
Thanks to James Clark and MURATA Makoto for their so well designed schema language !
- This release is based on Xerces-J 2.0.x and Xalan-J 2.3.0.
- Enhances lazy mode :
- Set lazy mode automatically when selecting nodes whose siblings are not DTD conformant.
- When seting normal mode (not lazy), adds as many siblings as necessary for making the selected nodes sequence DTD conformant.
- Bug fix about valid insert. Inserting an element
b
between the elements a
and c
was proposed in case of an ((a|b),(b|c))
content model. - When creating an element, the element name may be either selected in a list by the user either chosen automatically by the tool. It depends on an option.
- Displays content models by using tool tips on the element name combo-box and on a new read-only field named "content model".
- Shows the options default values in the options dialog box.
- Minor GUI enhancements.
- Bug fix : to select an entity reference node which has child element(s) but no sibling element caused a null pointer exception. Thanks to Randy Watson who has revealed the bug.
- Historization bug fixed.
- The third-party archives are packaged within a separated file.
- Text searched and XPath expression evaluated are historized.
- Tool options pathname can be specified in the command line.
- As options, prefered directory paths can be specified for XML, XSL, DTD,
options and operations files.
- Empty value has been added to the value list
of an implied enumeration attribute.
- When an element is automatically inserted in a document
in order to keep the document valid relatively to its DTD,
the element name is now selected in a way that minimizes
the count of required child elements.
- Element name list for valid element name replace has been completed.
- An element having a text child node can no more be renamed in a way
which would make the document not valid against its DTD.
Web site URL has changed
The "xmloperator.org" domain name has been rerouted at 2001-12-01. As consequences :
- The "xmloperator.org" project is renamed "The_xmloperator_project".
- The_xmloperator_project Web site URL is http://www.xmloperator.net/. An alternate URL could be http://www.xmloperator.com/, in the future.
- Namespace "org.xmloperator" is unchanged.
- Namespaces "http://www.xmloperator.org/namespace/*" are unchanged.
- DTDs can be edited using DTDXML, an XML form for DTDs. The_xmloperator_project proposes its own definition for DTDXML 1.0. Its includes a DTDXML DTD but not a complete specification. Translators from DTD to DTDXML 1.0 and from DTDXML 1.0 to DTD are provided. The concept and keyword of DTDXML has been proposed by Peter Murray-Rust in 1998
.
- Special complex operations can be developed for a given document type. They are called "operators". They are programmed using a restrictive DOM-style framework. They have to implement the new interface "Operator" and can be linked at run-time. An example of operator is given in the configuration management domain.
- Document type name is added to document converter info in order to propose only the right converters as default converter when using a document type info dialog.
- Last destination path name is stored in document converter info in order to be able to reexecute document convertion without entering the destination pathname again.
- Prefix of generated ID becomes an option.
- Warning and errors raised at document validation (against its DTD) are now associated with the right elements and not with their parent elements.
Installation procedure
Thanks to Alain Bret for its contribution on the installation procedure for Linux.
xmloperator is one year old
Happy birthday !
This release fixes a bug at loading a bad-formed document.
- Options management has been revisited.
- The "standalone" option is removed. The "standalone" indicator can be changed in the detail view of the document node.
- The encoding of a document can be changed in the detail view of its document node. The "default encoding" option concerns the new documents.
- The "Empty element shortcut" flag is added to the document type info and removed from options.
- A new "View" menu option allows to evaluate an XPath expression. A wizzard is proposed for building a location path.
- Direct access to the document type of the current document is proposed by the Document menu.
- One can insert in a command either the relative path name (by "%d") or the absolute path name (by "%D") of the current document.
- The predefined entities are systematically apended to the entity list.
- Entities and notations of the resulting DTD completes the stylesheet DTD. The stylesheet DTD uses UTF-8 encoding.
- A new "integration" directory contains tool integration examples. Advanced integration is obtained through the new "ExternalControl" java interface.
- An "lastUpdate" attribute is added to the DTDs of "doc", "depend" and "schema".
- XSLT versions of "doc", "depend" and "schema" to HTML converters are provided.
- This release is based on Xerces-J 1.4.0 and Xalan-J 2.1.0.
- The DocumentConverter interface has been simplified. Its removed properties has been added to the DocumentConverterInfo record.
- Options are provided for tracing XSL Transformations in a file. A dialog is displayed when a problem occurs.
- Building XSL stylesheet DTD is proposed.
- At document loading, if no document type information maps to this document then the document type information creation dialog is opened automatically.
- At document creation or document loading, if there is no DTD attached to it and a user relative DTD system Id is indicated in the document type info then this DTD can be automatically loaded as edit guide.
- A document can be saved in spite of having no document type info attached.
- With default value saving options, "encoding" and "standalone" of the opened document are kept.
- A new saving option decides on writing out or not the fixed value attributes.
- A new saving option allows file name automatic incrementing.
- Tool options are automatically reloaded at tool options file saving.
- The DTD is kept unchanged at document reload.
- The original DTD of a document can be retrieved without reloading the document.
- The status of the current DTD (attached or not to the document, completed or not) is indicated in the document node detail view.
- Main view layout can be changed more quickly, without rebuilding the frame.
- Relative URIs are recognized during document or DTD loading.
- External entity URIs are displayed during document or DTD loading.
- The global DTD has been removed. It was not coherent with ID managing.
Bug fixes
- Writing out a DTD with something like "ELEMENT colgroup (col)*".
- Writing out an internal entity declaration including a quote or an ampersand.
- Tool options save command.
Installation procedure
Thanks to Jamie Singer for its contribution on the installation procedure, less "Windows-centric".
This release is accompanied of an english user guide.
Thanks to Plazmic Inc. for its contributions on tool documentation.
- XSL Transformations are proposed through an XSLT converter. Transformation process is realized by Xalan 1.2.2 (Apache software). Error messages reporting is not yet supported.
- The "document type prefix" is renamed "additional key" in order to avoid a confusion with the document element name prefix.
- An HTTP DTD System Id is added to the document type structure. Each time this data is recognized within a document DOCTYPE, it is replaced by the document relative DTD System Id in order to use a local file instead of a Web resource.
- There is a converters view which is independent of the document types view. A document type refers to a default converter which can be changed through the document type view.
- The list of supported encodings has been extended.
- A DTD can be loaded. If a document is loaded at this time then its DTD is overloaded else the loaded DTD is global for all tool instances. When there is a global DTD, each local DTD is hided by the global DTD. A checkbox, labelled "DTD kept" indicates the global DTD existence. Setting this checkbox make global the current local DTD.
- A new checkBox labelled "All attr." allows displaying only attributes whose value is not empty. Some attributes that must be always shown can be specified by a display option.
- An attribute which gets its default value will be not displayed, like an empty value attribute.
- Additional menu items can be created and added to the Options menu. Attached actions consist of launching processes by calling "exec" commands.
- The tool can be launched using a document System Id as first parameter and, optionally, a DTD System Id as second parameter. The document and the DTD will be loaded immediatly.
Bug fixes
- Text join operation reversibility.
- Saving operation for setting values including double quotes.
- Inserting a fragment including an internal forward reference.
- Another document comparison algorithm is proposed. It is more efficient in time than the old one but cannot resolve some cases that the old one can. A comparison option specify which one to use (the new one by default). The old one works by element name. The new one works from leaves.
- Associated documents can be merged to a new document. The documents must have the same type.
- The first attribute names used for labeling elements within the document tree view can be specified. The option FirstAttributeNames of the display label category is responsible of that.
- Element interval with the same name can be reordered (ascending or descending) according to the value of the first attributes names which are defined above.
- File menu is splited to File menu and Document menu.
- Edit menu is splited to Edit menu and Move menu.
This release fixes a bug in documents comparison.
- Comparison of two documents is proposed. Each document must be opened within a tool instance. Document comparison consist in creating associations between
the mappings elements. Document tree display enhances comparison in this way : exactly mapping elements are displayed using normal font, approximative mapping elements are displayed using italic font, elements with no mapping are displayed using bold font.
- Distant move can be executed in two steps. The first step consists in selecting nodes to be moved. The second step consists in executing the move before, after or as childs of a selected node. Between the two steps the node detail view display the first and the last node to be moved and any other editing operation is forbiden. The second step can be cancelled.
- At saving a document, a document type info is created using the DOCTYPE properties of the document, if such a document type info doesn't exists. Document type info is no more created at document loading.
- Background tasks are strictly sequenced in order to avoid swing reentrancy. Background tasks such as document load or documents comparison are cancelable.
- Document conversion is available throw a general DocumentConverter interface. A converter class can be attached to a document type at run time. Converter implementations for simple doc 1.1, dependencies 1.0 and object oriented schema 1.0 are provided.
Changes about DTD conformance
- A "Lazy" check box at the bottom of the main frame replaces
the option "DTDConformant".
- A non empty element can be replaced
(by changing its node type or its node name). Childs are kept if they conform to the DTD or in lazy mode, elsewhere childs are removed.
- DTD conformance is completed for moving and packing.
- A message informs the user when the element sequence which contains
the selected node is not DTD conformant.
- Some errors in building the "children content" are fixed.
Other changes
- The Edit menu is splited to Edit menu and Fragment menu.
- Formating and cleaning options are removed. Removing empty texts is proposed by file menu.
- No more confirmation for multiple node removing.
- A Browsing history frame keeps trace of browsed nodes.
- Search result frame is updated at any operation concerning a node
from the list.
- A few bugs about operation saving are fixed.
DTD conformance is applied (by default). This causes changes on :
- inserting, deleting, replacing and pasting nodes,
- proposing nodes types and element names,
- automatic child and sibling nodes creation
after inserting or replacing nodes or creating a new document,
- grouping operations in order to maintain the document valid.
Other changes are :
- Operation design is revisited.
- A special operation (with no effect on the document) is inserted between operations which must be executed together.
- Editing comments, processing instructions, CData sections
and entity references can be allowed or not by setting options.
- Removing an element referenced by itself is allowed.
- Operation file
"xxxx.ope"
is removed if it is empty at document closing. - An HTTP system id is redirected to the user relative system id which
maps to the same public id.
- Option "Advanced use". For a standard use, the user interface is simplified.
- Messages are cleared after a few seconds.
- Searched text is selected within text node detail view.
- Distinction is made between
READONLY_SWITCHABLE
and READONLY_NOTSWICHABLE
.
This is the first release including source code. It is based on Xerces-J 1.2.2.
It contains the following changes :
- Documents can be loaded from the Web, using or not an http proxy.
- A prefix is used to distinguish document types using the same document element name.
- The following File menu items are added : "Save and reload" and "Save DTD as...".
- The options management is redesigned. Each option value is defined or not for the document type and for the tool. If the option value is defined for the document type then this option value apply. Else, if the option value is defined for the tool then this option value apply. Else default option value apply. Options whose values are undefined are not writed in the option files.
- New Load options, Parsing options and Save options are defined. Parsing options are features implemented by Xerces.
- The edit status - read only or ready for edit - can be set by a switch. The switch is disabled if the document is modified.
- The
encoding=xxx
xmloperator processing instruction is suppressed. The corresponding option is used. - The
DTDInternal
xmloperator processing instruction is suppressed. DTD will be writed out as internal subset if and only if no DTD system id is specified for the document type.
This release fixes a bug on saving a document including an internal DTD. The element content specifications was incorrectly writed out. Thanks to Michael Altenhofen who has revealed the bug.
This is the first public release. It is based on Xerces-J 1.0.2.