[jdom-interest] Beta8 Document and DocType semantics incorrect?

Les Hill leh at galaxynine.com
Sun Apr 21 19:53:58 PDT 2002


The beta8 implementation of Document.setDocType() looks incorrect.
Specifically, it seems to fail production 22 of the XML spec+.  As a
side-effect of this, Document.getContent() should return all children of the
Document including the DocType, in order.

An implementation should fall along similar lines to
Document.setRootElement() -- this will not compile because ContentList does
not accept DocType:

    public Document setDocType(DocType docType) {
        if (docType != null) {
            if (docType.getDocument() != null) {
                throw new IllegalAddException(this, docType,
                          "The docType already is attached to a document");
            }
            docType.setDocument(this);
        }

        if (this.docType != null) {
            this.docType.setDocument(null);
        }

        this.docType = docType;

        // Similar to RE
        int REindex = content.indexOfFirstElement();
        int DTindex = content.indexOfDocType();
        if (DTindex < 0 && REindex < 0) {
            // Add to content
            content.add(docType);
        }
        else if (DTindex >= 0) {
            // Replace previous
            content.set(DTindex, docType);
        }
        else {
            // We have comments, pis, and a RE -- add just before RE
            content.insert(REindex, docType);
        }

        return this;
    }

+ Remind me of the irony of this message some other time, I am sure it will
crop up :)

Les Hill
leh at galaxynine.com





More information about the jdom-interest mailing list