+2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/xml/dom/html2/DomHTMLParser.java:
+ Changed 'enum' references to become 'enumeration'.
+
+2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * gnu/xml/dom/html2/DomHTMLParser.java: New file.
+
+2005-04-19 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * gnu/javax/swing/text/html/parser/htmlAttributeSet.java:
+ (getAttributeNames()): Replaced 'enum' with 'enumeration'.
+ * gnu/javax/swing/text/html/parser/htmlValidator.java:
+ (validateParameters(TagElement,htmlAttributeSet)):
+ Replaced 'enum' with 'enumeration'.
+ (validateAttribute(TagElement,htmlAttributeSet,Enumeration,Enumeration)):
+ Likewise.
+
+2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * javax/swing/text/html/parser/Entity.java (getType): New method.
+ * javax/swing/text/html/parser/DocumentParser.java:
+ Inherit from javax.swing.text.html.parser.Parser.
+
+2005-04-19 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/dom/html2/DomHTMLDocument.java: Fixed element creation and
+ check for HTML/XHTML namespace.
+
+2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * javax/swing/text/html/parser/Parser.java,
+ javax/swing/text/html/parser/Entity.java:
+ Inheriting from DTDConstants.
+ * javax/swing/text/html/parser/AttributeList.java
+ (getValues): Changed return type.
+ * javax/swing/text/html/parser/DocumentParser
+ (parse): Adding the callback parameter that receives
+ the parsing events.
+
+2005-04-19 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/dom/DomImpl.java,
+ gnu/xml/dom/html2/DomHTMLAnchorElement.java,
+ gnu/xml/dom/html2/DomHTMLDocument.java,
+ gnu/xml/dom/html2/DomHTMLElement.java,
+ gnu/xml/dom/html2/DomHTMLFormElement.java,
+ gnu/xml/dom/html2/DomHTMLFrameElement.java,
+ gnu/xml/dom/html2/DomHTMLIFrameElement.java,
+ gnu/xml/dom/html2/DomHTMLImpl.java,
+ gnu/xml/dom/html2/DomHTMLInputElement.java,
+ gnu/xml/dom/html2/DomHTMLObjectElement.java,
+ gnu/xml/dom/html2/DomHTMLOptionElement.java,
+ gnu/xml/dom/html2/DomHTMLSelectElement.java,
+ gnu/xml/dom/html2/DomHTMLTableCellElement.java,
+ gnu/xml/dom/html2/DomHTMLTableElement.java,
+ gnu/xml/dom/html2/DomHTMLTableRowElement.java,
+ gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
+ gnu/xml/dom/html2/DomHTMLTextAreaElement.java: JAXP integration,
+ UI events, and tree utility functions.
+
+2005-04-19 Michael Koch <konqueror@gmx.de>
+
+ * gnu/javax/swing/text/html/parser/HTML_401F.java,
+ gnu/javax/swing/text/html/parser/gnuDTD.java,
+ gnu/javax/swing/text/html/parser/models/node.java:
+ Reworked import statements.
+
+2005-04-19 Audrius Meskauskas, Lithuania <AudriusA@Bioinformatics.org>
+
+ * javax/swing/text/html/HTMLDocument.java: New file.
+
+2005-04-19 Michael Koch <konqueror@gmx.de>
+
+ * javax/swing/text/html/HTMLFrameHyperlinkEvent.java:
+ Reformatted.
+ * javax/swing/text/html/parser/AttributeList.java:
+ Fixed order of modifiers.
+ (AttributeList): Made final.
+ * javax/swing/text/html/parser/ContentModel.java:
+ Fixed html characters in javadocs.
+ * javax/swing/text/html/parser/DTD.java
+ (DTD): Don't implement java.io.Serializable directly.
+ (getElement): Simplified.
+ * javax/swing/text/html/parser/DTDConstants.java:
+ Reformatted file.
+ * javax/swing/text/html/parser/Element.java:
+ Fixed order of modifiers.
+ * javax/swing/text/html/parser/Parser.java:
+ Reformatted. Don't use fully-qualified class names.
+ * javax/swing/text/html/parser/ParserDelegator.java:
+ Fixed order of modifiers.
+ * javax/swing/text/rtf/RTFParser.java:
+ Re-ordered import statements.
+ * javax/swing/text/rtf/RTFScanner.java:
+ Removed unused import statement.
+
+2005-04-19 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/dom/html2/DomHTMLButtonElement.java,
+ gnu/xml/dom/html2/DomHTMLCollection.java,
+ gnu/xml/dom/html2/DomHTMLDocument.java,
+ gnu/xml/dom/html2/DomHTMLElement.java: Extensions for new element
+ types.
+ * gnu/xml/dom/html2/DomHTMLDListElement.java,
+ gnu/xml/dom/html2/DomHTMLDirectoryElement.java,
+ gnu/xml/dom/html2/DomHTMLDivElement.java,
+ gnu/xml/dom/html2/DomHTMLFieldSetElement.java,
+ gnu/xml/dom/html2/DomHTMLFontElement.java,
+ gnu/xml/dom/html2/DomHTMLFormElement.java,
+ gnu/xml/dom/html2/DomHTMLFrameElement.java,
+ gnu/xml/dom/html2/DomHTMLFrameSetElement.java,
+ gnu/xml/dom/html2/DomHTMLHRElement.java,
+ gnu/xml/dom/html2/DomHTMLHeadElement.java,
+ gnu/xml/dom/html2/DomHTMLHeadingElement.java,
+ gnu/xml/dom/html2/DomHTMLHtmlElement.java,
+ gnu/xml/dom/html2/DomHTMLIFrameElement.java,
+ gnu/xml/dom/html2/DomHTMLImageElement.java,
+ gnu/xml/dom/html2/DomHTMLInputElement.java,
+ gnu/xml/dom/html2/DomHTMLIsIndexElement.java,
+ gnu/xml/dom/html2/DomHTMLLIElement.java,
+ gnu/xml/dom/html2/DomHTMLLabelElement.java,
+ gnu/xml/dom/html2/DomHTMLLegendElement.java,
+ gnu/xml/dom/html2/DomHTMLLinkElement.java,
+ gnu/xml/dom/html2/DomHTMLMapElement.java,
+ gnu/xml/dom/html2/DomHTMLMenuElement.java,
+ gnu/xml/dom/html2/DomHTMLMetaElement.java,
+ gnu/xml/dom/html2/DomHTMLModElement.java,
+ gnu/xml/dom/html2/DomHTMLOListElement.java,
+ gnu/xml/dom/html2/DomHTMLObjectElement.java,
+ gnu/xml/dom/html2/DomHTMLOptGroupElement.java,
+ gnu/xml/dom/html2/DomHTMLOptionElement.java,
+ gnu/xml/dom/html2/DomHTMLParagraphElement.java,
+ gnu/xml/dom/html2/DomHTMLParamElement.java,
+ gnu/xml/dom/html2/DomHTMLPreElement.java,
+ gnu/xml/dom/html2/DomHTMLQuoteElement.java,
+ gnu/xml/dom/html2/DomHTMLScriptElement.java,
+ gnu/xml/dom/html2/DomHTMLSelectElement.java,
+ gnu/xml/dom/html2/DomHTMLStyleElement.java,
+ gnu/xml/dom/html2/DomHTMLTableCaptionElement.java,
+ gnu/xml/dom/html2/DomHTMLTableCellElement.java,
+ gnu/xml/dom/html2/DomHTMLTableColElement.java,
+ gnu/xml/dom/html2/DomHTMLTableElement.java,
+ gnu/xml/dom/html2/DomHTMLTableRowElement.java,
+ gnu/xml/dom/html2/DomHTMLTableSectionElement.java,
+ gnu/xml/dom/html2/DomHTMLTextAreaElement.java,
+ gnu/xml/dom/html2/DomHTMLTitleElement.java,
+ gnu/xml/dom/html2/DomHTMLUListElement.java: New files.
+
+2005-04-19 Audrius Meskauskas <audriusa@bluewin.ch>
+
+ * javax/swing/text/ChangedCharSetException.java,
+ javax/swing/text/html/HTMLEditorKit.java,
+ javax/swing/text/html/HTMLFrameHyperlinkEvent.java,
+ javax/swing/text/html/parser/AttributeList.java,
+ javax/swing/text/html/parser/ContentModel.java,
+ javax/swing/text/html/parser/DocumentParser.java,
+ javax/swing/text/html/parser/DTD.java,
+ javax/swing/text/html/parser/DTDConstants.java,
+ javax/swing/text/html/parser/Element.java,
+ javax/swing/text/html/parser/Entity.java,
+ javax/swing/text/html/parser/Parser.java,
+ javax/swing/text/html/parser/TagElement.java,
+ gnu/javax/swing/text/html/package.html,
+ gnu/javax/swing/text/html/parser/gnuDTD.java,
+ gnu/javax/swing/text/html/parser/HTML_401F.java,
+ gnu/javax/swing/text/html/parser/htmlAttributeSet.java,
+ gnu/javax/swing/text/html/parser/htmlValidator.java,
+ gnu/javax/swing/text/html/parser/package.html,
+ gnu/javax/swing/text/html/parser/models/list.java,
+ gnu/javax/swing/text/html/parser/models/node.java,
+ gnu/javax/swing/text/html/parser/models/noTagModel.java,
+ gnu/javax/swing/text/html/parser/models/package.html,
+ gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java,
+ gnu/javax/swing/text/html/parser/models/TableRowContentModel.java,
+ gnu/javax/swing/text/html/parser/models/transformer.java,
+ gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java,
+ gnu/javax/swing/text/html/parser/support/package.html,
+ gnu/javax/swing/text/html/parser/support/parameterDefaulter.java,
+ gnu/javax/swing/text/html/parser/support/Parser.java,
+ gnu/javax/swing/text/html/parser/support/textPreProcessor.java,
+ gnu/javax/swing/text/html/parser/support/low/Buffer.java,
+ gnu/javax/swing/text/html/parser/support/low/Constants.java,
+ gnu/javax/swing/text/html/parser/support/low/Location.java,
+ gnu/javax/swing/text/html/parser/support/low/node.java,
+ gnu/javax/swing/text/html/parser/support/low/package.html,
+ gnu/javax/swing/text/html/parser/support/low/ParseException.java,
+ gnu/javax/swing/text/html/parser/support/low/pattern.java,
+ gnu/javax/swing/text/html/parser/support/low/Queue.java,
+ gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java:
+ New files.
+ * javax/swing/text/html/HTML.java,
+ javax/swing/text/html/parser/ParserDelegator.java:
+ New files (replacing).
+ * javax/swing/text/html/package.html,
+ javax/swing/text/html/parser/package.html: Documenting the
+ packages.
+
+2005-04-19 Chris Burdess <dog@gnu.org>
+
+ * gnu/xml/dom/html2/DomHTMLAnchorElement.java,
+ gnu/xml/dom/html2/DomHTMLAppletElement.java,
+ gnu/xml/dom/html2/DomHTMLAreaElement.java,
+ gnu/xml/dom/html2/DomHTMLBaseElement.java,
+ gnu/xml/dom/html2/DomHTMLBaseFontElement.java,
+ gnu/xml/dom/html2/DomHTMLBodyElement.java,
+ gnu/xml/dom/html2/DomHTMLBRElement.java,
+ gnu/xml/dom/html2/DomHTMLButtonElement.java,
+ gnu/xml/dom/html2/DomHTMLCollection.java,
+ gnu/xml/dom/html2/DomHTMLDocument.java,
+ gnu/xml/dom/html2/DomHTMLElement.java: New files.
+
+2005-04-19 Michael Koch <konqueror@gmx.de>
+
+ * Makefile.am: Added new files.
+ * Makefile.in: Regenerated.
+
2005-04-19 Roman Kennke <roman@kennke.org>
* javax/swing/text/JTextComponent.java
gnu/java/awt/peer/GLightweightPeer.java \
gnu/java/awt/peer/ClasspathFontPeer.java \
gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
+gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java \
+gnu/javax/swing/text/html/parser/support/parameterDefaulter.java \
+gnu/javax/swing/text/html/parser/support/Parser.java \
+gnu/javax/swing/text/html/parser/support/textPreProcessor.java \
+gnu/javax/swing/text/html/parser/support/low/Buffer.java \
+gnu/javax/swing/text/html/parser/support/low/Constants.java \
+gnu/javax/swing/text/html/parser/support/low/Location.java \
+gnu/javax/swing/text/html/parser/support/low/node.java \
+gnu/javax/swing/text/html/parser/support/low/ParseException.java \
+gnu/javax/swing/text/html/parser/support/low/pattern.java \
+gnu/javax/swing/text/html/parser/support/low/Queue.java \
+gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java \
+gnu/javax/swing/text/html/parser/support/low/Token.java \
+gnu/javax/swing/text/html/parser/gnuDTD.java \
+gnu/javax/swing/text/html/parser/HTML_401F.java \
+gnu/javax/swing/text/html/parser/htmlAttributeSet.java \
+gnu/javax/swing/text/html/parser/htmlValidator.java \
+gnu/javax/swing/text/html/parser/models/list.java \
+gnu/javax/swing/text/html/parser/models/node.java \
+gnu/javax/swing/text/html/parser/models/noTagModel.java \
+gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java \
+gnu/javax/swing/text/html/parser/models/TableRowContentModel.java \
+gnu/javax/swing/text/html/parser/models/transformer.java \
java/applet/Applet.java \
java/applet/AppletStub.java \
java/applet/AppletContext.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
+javax/swing/text/ChangedCharSetException.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
javax/swing/text/View.java \
javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
+javax/swing/text/html/HTMLDocument.java \
+javax/swing/text/html/HTMLEditorKit.java \
+javax/swing/text/html/HTMLFrameHyperlinkEvent.java \
+javax/swing/text/html/parser/AttributeList.java \
+javax/swing/text/html/parser/ContentModel.java \
+javax/swing/text/html/parser/DTD.java \
+javax/swing/text/html/parser/DTDConstants.java \
+javax/swing/text/html/parser/DocumentParser.java \
+javax/swing/text/html/parser/Element.java \
+javax/swing/text/html/parser/Entity.java \
+javax/swing/text/html/parser/Parser.java \
javax/swing/text/html/parser/ParserDelegator.java \
+javax/swing/text/html/parser/TagElement.java \
javax/swing/text/rtf/ControlWordToken.java \
javax/swing/text/rtf/RTFEditorKit.java \
javax/swing/text/rtf/RTFParseException.java \
gnu/xml/dom/DomEntity.java \
gnu/xml/dom/DomCDATASection.java \
gnu/xml/dom/DomDOMException.java \
+gnu/xml/dom/html2/DomHTMLAnchorElement.java \
+gnu/xml/dom/html2/DomHTMLAppletElement.java \
+gnu/xml/dom/html2/DomHTMLAreaElement.java \
+gnu/xml/dom/html2/DomHTMLBaseElement.java \
+gnu/xml/dom/html2/DomHTMLBaseFontElement.java \
+gnu/xml/dom/html2/DomHTMLBodyElement.java \
+gnu/xml/dom/html2/DomHTMLBRElement.java \
+gnu/xml/dom/html2/DomHTMLButtonElement.java \
+gnu/xml/dom/html2/DomHTMLCollection.java \
+gnu/xml/dom/html2/DomHTMLDirectoryElement.java \
+gnu/xml/dom/html2/DomHTMLDivElement.java \
+gnu/xml/dom/html2/DomHTMLDListElement.java \
+gnu/xml/dom/html2/DomHTMLDocument.java \
+gnu/xml/dom/html2/DomHTMLElement.java \
+gnu/xml/dom/html2/DomHTMLFieldSetElement.java \
+gnu/xml/dom/html2/DomHTMLFontElement.java \
+gnu/xml/dom/html2/DomHTMLFormElement.java \
+gnu/xml/dom/html2/DomHTMLFrameElement.java \
+gnu/xml/dom/html2/DomHTMLFrameSetElement.java \
+gnu/xml/dom/html2/DomHTMLHeadElement.java \
+gnu/xml/dom/html2/DomHTMLHeadingElement.java \
+gnu/xml/dom/html2/DomHTMLHRElement.java \
+gnu/xml/dom/html2/DomHTMLHtmlElement.java \
+gnu/xml/dom/html2/DomHTMLIFrameElement.java \
+gnu/xml/dom/html2/DomHTMLImageElement.java \
+gnu/xml/dom/html2/DomHTMLImpl.java \
+gnu/xml/dom/html2/DomHTMLInputElement.java \
+gnu/xml/dom/html2/DomHTMLIsIndexElement.java \
+gnu/xml/dom/html2/DomHTMLLabelElement.java \
+gnu/xml/dom/html2/DomHTMLLegendElement.java \
+gnu/xml/dom/html2/DomHTMLLIElement.java \
+gnu/xml/dom/html2/DomHTMLLinkElement.java \
+gnu/xml/dom/html2/DomHTMLMapElement.java \
+gnu/xml/dom/html2/DomHTMLMenuElement.java \
+gnu/xml/dom/html2/DomHTMLMetaElement.java \
+gnu/xml/dom/html2/DomHTMLModElement.java \
+gnu/xml/dom/html2/DomHTMLObjectElement.java \
+gnu/xml/dom/html2/DomHTMLOListElement.java \
+gnu/xml/dom/html2/DomHTMLOptGroupElement.java \
+gnu/xml/dom/html2/DomHTMLOptionElement.java \
+gnu/xml/dom/html2/DomHTMLParagraphElement.java \
+gnu/xml/dom/html2/DomHTMLParamElement.java \
+gnu/xml/dom/html2/DomHTMLParser.java \
+gnu/xml/dom/html2/DomHTMLPreElement.java \
+gnu/xml/dom/html2/DomHTMLQuoteElement.java \
+gnu/xml/dom/html2/DomHTMLScriptElement.java \
+gnu/xml/dom/html2/DomHTMLSelectElement.java \
+gnu/xml/dom/html2/DomHTMLStyleElement.java \
+gnu/xml/dom/html2/DomHTMLTableCaptionElement.java \
+gnu/xml/dom/html2/DomHTMLTableCellElement.java \
+gnu/xml/dom/html2/DomHTMLTableColElement.java \
+gnu/xml/dom/html2/DomHTMLTableElement.java \
+gnu/xml/dom/html2/DomHTMLTableRowElement.java \
+gnu/xml/dom/html2/DomHTMLTableSectionElement.java \
+gnu/xml/dom/html2/DomHTMLTextAreaElement.java \
+gnu/xml/dom/html2/DomHTMLTitleElement.java \
+gnu/xml/dom/html2/DomHTMLUListElement.java \
gnu/xml/transform/GenerateIdFunction.java \
gnu/xml/transform/FormatNumberFunction.java \
gnu/xml/transform/ValueOfNode.java \
gnu/java/awt/peer/GLightweightPeer.java \
gnu/java/awt/peer/ClasspathFontPeer.java \
gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
+ gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java \
+ gnu/javax/swing/text/html/parser/support/parameterDefaulter.java \
+ gnu/javax/swing/text/html/parser/support/Parser.java \
+ gnu/javax/swing/text/html/parser/support/textPreProcessor.java \
+ gnu/javax/swing/text/html/parser/support/low/Buffer.java \
+ gnu/javax/swing/text/html/parser/support/low/Constants.java \
+ gnu/javax/swing/text/html/parser/support/low/Location.java \
+ gnu/javax/swing/text/html/parser/support/low/node.java \
+ gnu/javax/swing/text/html/parser/support/low/ParseException.java \
+ gnu/javax/swing/text/html/parser/support/low/pattern.java \
+ gnu/javax/swing/text/html/parser/support/low/Queue.java \
+ gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java \
+ gnu/javax/swing/text/html/parser/support/low/Token.java \
+ gnu/javax/swing/text/html/parser/gnuDTD.java \
+ gnu/javax/swing/text/html/parser/HTML_401F.java \
+ gnu/javax/swing/text/html/parser/htmlAttributeSet.java \
+ gnu/javax/swing/text/html/parser/htmlValidator.java \
+ gnu/javax/swing/text/html/parser/models/list.java \
+ gnu/javax/swing/text/html/parser/models/node.java \
+ gnu/javax/swing/text/html/parser/models/noTagModel.java \
+ gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java \
+ gnu/javax/swing/text/html/parser/models/TableRowContentModel.java \
+ gnu/javax/swing/text/html/parser/models/transformer.java \
java/applet/Applet.java java/applet/AppletStub.java \
java/applet/AppletContext.java java/applet/AudioClip.java \
java/awt/AWTError.java java/awt/AWTEvent.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
+ javax/swing/text/ChangedCharSetException.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
javax/swing/text/Utilities.java javax/swing/text/View.java \
javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
+ javax/swing/text/html/HTMLDocument.java \
+ javax/swing/text/html/HTMLEditorKit.java \
+ javax/swing/text/html/HTMLFrameHyperlinkEvent.java \
+ javax/swing/text/html/parser/AttributeList.java \
+ javax/swing/text/html/parser/ContentModel.java \
+ javax/swing/text/html/parser/DTD.java \
+ javax/swing/text/html/parser/DTDConstants.java \
+ javax/swing/text/html/parser/DocumentParser.java \
+ javax/swing/text/html/parser/Element.java \
+ javax/swing/text/html/parser/Entity.java \
+ javax/swing/text/html/parser/Parser.java \
javax/swing/text/html/parser/ParserDelegator.java \
+ javax/swing/text/html/parser/TagElement.java \
javax/swing/text/rtf/ControlWordToken.java \
javax/swing/text/rtf/RTFEditorKit.java \
javax/swing/text/rtf/RTFParseException.java \
gnu/java/awt/peer/GLightweightPeer.lo \
gnu/java/awt/peer/ClasspathFontPeer.lo \
gnu/java/awt/peer/ClasspathTextLayoutPeer.lo \
+ gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.lo \
+ gnu/javax/swing/text/html/parser/support/parameterDefaulter.lo \
+ gnu/javax/swing/text/html/parser/support/Parser.lo \
+ gnu/javax/swing/text/html/parser/support/textPreProcessor.lo \
+ gnu/javax/swing/text/html/parser/support/low/Buffer.lo \
+ gnu/javax/swing/text/html/parser/support/low/Constants.lo \
+ gnu/javax/swing/text/html/parser/support/low/Location.lo \
+ gnu/javax/swing/text/html/parser/support/low/node.lo \
+ gnu/javax/swing/text/html/parser/support/low/ParseException.lo \
+ gnu/javax/swing/text/html/parser/support/low/pattern.lo \
+ gnu/javax/swing/text/html/parser/support/low/Queue.lo \
+ gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.lo \
+ gnu/javax/swing/text/html/parser/support/low/Token.lo \
+ gnu/javax/swing/text/html/parser/gnuDTD.lo \
+ gnu/javax/swing/text/html/parser/HTML_401F.lo \
+ gnu/javax/swing/text/html/parser/htmlAttributeSet.lo \
+ gnu/javax/swing/text/html/parser/htmlValidator.lo \
+ gnu/javax/swing/text/html/parser/models/list.lo \
+ gnu/javax/swing/text/html/parser/models/node.lo \
+ gnu/javax/swing/text/html/parser/models/noTagModel.lo \
+ gnu/javax/swing/text/html/parser/models/PCDATAonly_model.lo \
+ gnu/javax/swing/text/html/parser/models/TableRowContentModel.lo \
+ gnu/javax/swing/text/html/parser/models/transformer.lo \
java/applet/Applet.lo java/applet/AppletStub.lo \
java/applet/AppletContext.lo java/applet/AudioClip.lo \
java/awt/AWTError.lo java/awt/AWTEvent.lo \
javax/swing/ActionMap.lo javax/swing/text/AbstractDocument.lo \
javax/swing/text/AttributeSet.lo \
javax/swing/text/BadLocationException.lo \
- javax/swing/text/Caret.lo javax/swing/text/ComponentView.lo \
+ javax/swing/text/Caret.lo \
+ javax/swing/text/ChangedCharSetException.lo \
+ javax/swing/text/ComponentView.lo \
javax/swing/text/DefaultCaret.lo \
javax/swing/text/DefaultEditorKit.lo \
javax/swing/text/DefaultHighlighter.lo \
javax/swing/text/TabStop.lo javax/swing/text/TextAction.lo \
javax/swing/text/Utilities.lo javax/swing/text/View.lo \
javax/swing/text/ViewFactory.lo javax/swing/text/html/HTML.lo \
+ javax/swing/text/html/HTMLDocument.lo \
+ javax/swing/text/html/HTMLEditorKit.lo \
+ javax/swing/text/html/HTMLFrameHyperlinkEvent.lo \
+ javax/swing/text/html/parser/AttributeList.lo \
+ javax/swing/text/html/parser/ContentModel.lo \
+ javax/swing/text/html/parser/DTD.lo \
+ javax/swing/text/html/parser/DTDConstants.lo \
+ javax/swing/text/html/parser/DocumentParser.lo \
+ javax/swing/text/html/parser/Element.lo \
+ javax/swing/text/html/parser/Entity.lo \
+ javax/swing/text/html/parser/Parser.lo \
javax/swing/text/html/parser/ParserDelegator.lo \
+ javax/swing/text/html/parser/TagElement.lo \
javax/swing/text/rtf/ControlWordToken.lo \
javax/swing/text/rtf/RTFEditorKit.lo \
javax/swing/text/rtf/RTFParseException.lo \
gnu/java/awt/peer/GLightweightPeer.java \
gnu/java/awt/peer/ClasspathFontPeer.java \
gnu/java/awt/peer/ClasspathTextLayoutPeer.java \
+gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.java \
+gnu/javax/swing/text/html/parser/support/parameterDefaulter.java \
+gnu/javax/swing/text/html/parser/support/Parser.java \
+gnu/javax/swing/text/html/parser/support/textPreProcessor.java \
+gnu/javax/swing/text/html/parser/support/low/Buffer.java \
+gnu/javax/swing/text/html/parser/support/low/Constants.java \
+gnu/javax/swing/text/html/parser/support/low/Location.java \
+gnu/javax/swing/text/html/parser/support/low/node.java \
+gnu/javax/swing/text/html/parser/support/low/ParseException.java \
+gnu/javax/swing/text/html/parser/support/low/pattern.java \
+gnu/javax/swing/text/html/parser/support/low/Queue.java \
+gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.java \
+gnu/javax/swing/text/html/parser/support/low/Token.java \
+gnu/javax/swing/text/html/parser/gnuDTD.java \
+gnu/javax/swing/text/html/parser/HTML_401F.java \
+gnu/javax/swing/text/html/parser/htmlAttributeSet.java \
+gnu/javax/swing/text/html/parser/htmlValidator.java \
+gnu/javax/swing/text/html/parser/models/list.java \
+gnu/javax/swing/text/html/parser/models/node.java \
+gnu/javax/swing/text/html/parser/models/noTagModel.java \
+gnu/javax/swing/text/html/parser/models/PCDATAonly_model.java \
+gnu/javax/swing/text/html/parser/models/TableRowContentModel.java \
+gnu/javax/swing/text/html/parser/models/transformer.java \
java/applet/Applet.java \
java/applet/AppletStub.java \
java/applet/AppletContext.java \
javax/swing/text/AttributeSet.java \
javax/swing/text/BadLocationException.java \
javax/swing/text/Caret.java \
+javax/swing/text/ChangedCharSetException.java \
javax/swing/text/ComponentView.java \
javax/swing/text/DefaultCaret.java \
javax/swing/text/DefaultEditorKit.java \
javax/swing/text/View.java \
javax/swing/text/ViewFactory.java \
javax/swing/text/html/HTML.java \
+javax/swing/text/html/HTMLDocument.java \
+javax/swing/text/html/HTMLEditorKit.java \
+javax/swing/text/html/HTMLFrameHyperlinkEvent.java \
+javax/swing/text/html/parser/AttributeList.java \
+javax/swing/text/html/parser/ContentModel.java \
+javax/swing/text/html/parser/DTD.java \
+javax/swing/text/html/parser/DTDConstants.java \
+javax/swing/text/html/parser/DocumentParser.java \
+javax/swing/text/html/parser/Element.java \
+javax/swing/text/html/parser/Entity.java \
+javax/swing/text/html/parser/Parser.java \
javax/swing/text/html/parser/ParserDelegator.java \
+javax/swing/text/html/parser/TagElement.java \
javax/swing/text/rtf/ControlWordToken.java \
javax/swing/text/rtf/RTFEditorKit.java \
javax/swing/text/rtf/RTFParseException.java \
gnu/xml/dom/DomEntity.java \
gnu/xml/dom/DomCDATASection.java \
gnu/xml/dom/DomDOMException.java \
+gnu/xml/dom/html2/DomHTMLAnchorElement.java \
+gnu/xml/dom/html2/DomHTMLAppletElement.java \
+gnu/xml/dom/html2/DomHTMLAreaElement.java \
+gnu/xml/dom/html2/DomHTMLBaseElement.java \
+gnu/xml/dom/html2/DomHTMLBaseFontElement.java \
+gnu/xml/dom/html2/DomHTMLBodyElement.java \
+gnu/xml/dom/html2/DomHTMLBRElement.java \
+gnu/xml/dom/html2/DomHTMLButtonElement.java \
+gnu/xml/dom/html2/DomHTMLCollection.java \
+gnu/xml/dom/html2/DomHTMLDirectoryElement.java \
+gnu/xml/dom/html2/DomHTMLDivElement.java \
+gnu/xml/dom/html2/DomHTMLDListElement.java \
+gnu/xml/dom/html2/DomHTMLDocument.java \
+gnu/xml/dom/html2/DomHTMLElement.java \
+gnu/xml/dom/html2/DomHTMLFieldSetElement.java \
+gnu/xml/dom/html2/DomHTMLFontElement.java \
+gnu/xml/dom/html2/DomHTMLFormElement.java \
+gnu/xml/dom/html2/DomHTMLFrameElement.java \
+gnu/xml/dom/html2/DomHTMLFrameSetElement.java \
+gnu/xml/dom/html2/DomHTMLHeadElement.java \
+gnu/xml/dom/html2/DomHTMLHeadingElement.java \
+gnu/xml/dom/html2/DomHTMLHRElement.java \
+gnu/xml/dom/html2/DomHTMLHtmlElement.java \
+gnu/xml/dom/html2/DomHTMLIFrameElement.java \
+gnu/xml/dom/html2/DomHTMLImageElement.java \
+gnu/xml/dom/html2/DomHTMLImpl.java \
+gnu/xml/dom/html2/DomHTMLInputElement.java \
+gnu/xml/dom/html2/DomHTMLIsIndexElement.java \
+gnu/xml/dom/html2/DomHTMLLabelElement.java \
+gnu/xml/dom/html2/DomHTMLLegendElement.java \
+gnu/xml/dom/html2/DomHTMLLIElement.java \
+gnu/xml/dom/html2/DomHTMLLinkElement.java \
+gnu/xml/dom/html2/DomHTMLMapElement.java \
+gnu/xml/dom/html2/DomHTMLMenuElement.java \
+gnu/xml/dom/html2/DomHTMLMetaElement.java \
+gnu/xml/dom/html2/DomHTMLModElement.java \
+gnu/xml/dom/html2/DomHTMLObjectElement.java \
+gnu/xml/dom/html2/DomHTMLOListElement.java \
+gnu/xml/dom/html2/DomHTMLOptGroupElement.java \
+gnu/xml/dom/html2/DomHTMLOptionElement.java \
+gnu/xml/dom/html2/DomHTMLParagraphElement.java \
+gnu/xml/dom/html2/DomHTMLParamElement.java \
+gnu/xml/dom/html2/DomHTMLParser.java \
+gnu/xml/dom/html2/DomHTMLPreElement.java \
+gnu/xml/dom/html2/DomHTMLQuoteElement.java \
+gnu/xml/dom/html2/DomHTMLScriptElement.java \
+gnu/xml/dom/html2/DomHTMLSelectElement.java \
+gnu/xml/dom/html2/DomHTMLStyleElement.java \
+gnu/xml/dom/html2/DomHTMLTableCaptionElement.java \
+gnu/xml/dom/html2/DomHTMLTableCellElement.java \
+gnu/xml/dom/html2/DomHTMLTableColElement.java \
+gnu/xml/dom/html2/DomHTMLTableElement.java \
+gnu/xml/dom/html2/DomHTMLTableRowElement.java \
+gnu/xml/dom/html2/DomHTMLTableSectionElement.java \
+gnu/xml/dom/html2/DomHTMLTextAreaElement.java \
+gnu/xml/dom/html2/DomHTMLTitleElement.java \
+gnu/xml/dom/html2/DomHTMLUListElement.java \
gnu/xml/transform/GenerateIdFunction.java \
gnu/xml/transform/FormatNumberFunction.java \
gnu/xml/transform/ValueOfNode.java \
gnu/java/awt/peer/ClasspathTextLayoutPeer.lo: \
gnu/java/awt/peer/$(am__dirstamp) \
gnu/java/awt/peer/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/support
+ @: > gnu/javax/swing/text/html/parser/support/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/support/$(DEPDIR)
+ @: > gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.lo: \
+ gnu/javax/swing/text/html/parser/support/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/parameterDefaulter.lo: \
+ gnu/javax/swing/text/html/parser/support/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/Parser.lo: \
+ gnu/javax/swing/text/html/parser/support/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/textPreProcessor.lo: \
+ gnu/javax/swing/text/html/parser/support/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/support/low
+ @: > gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)
+ @: > gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/Buffer.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/Constants.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/Location.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/node.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/ParseException.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/pattern.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/Queue.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/support/low/Token.lo: \
+ gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser
+ @: > gnu/javax/swing/text/html/parser/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/$(DEPDIR)
+ @: > gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/gnuDTD.lo: \
+ gnu/javax/swing/text/html/parser/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/HTML_401F.lo: \
+ gnu/javax/swing/text/html/parser/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/htmlAttributeSet.lo: \
+ gnu/javax/swing/text/html/parser/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/htmlValidator.lo: \
+ gnu/javax/swing/text/html/parser/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/models
+ @: > gnu/javax/swing/text/html/parser/models/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp):
+ @$(mkdir_p) gnu/javax/swing/text/html/parser/models/$(DEPDIR)
+ @: > gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/list.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/node.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/noTagModel.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/PCDATAonly_model.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/TableRowContentModel.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+gnu/javax/swing/text/html/parser/models/transformer.lo: \
+ gnu/javax/swing/text/html/parser/models/$(am__dirstamp) \
+ gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
java/applet/$(am__dirstamp):
@$(mkdir_p) java/applet
@: > java/applet/$(am__dirstamp)
javax/swing/text/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/Caret.lo: javax/swing/text/$(am__dirstamp) \
javax/swing/text/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/ChangedCharSetException.lo: \
+ javax/swing/text/$(am__dirstamp) \
+ javax/swing/text/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/ComponentView.lo: javax/swing/text/$(am__dirstamp) \
javax/swing/text/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/DefaultCaret.lo: javax/swing/text/$(am__dirstamp) \
@: > javax/swing/text/html/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/html/HTML.lo: javax/swing/text/html/$(am__dirstamp) \
javax/swing/text/html/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/HTMLDocument.lo: \
+ javax/swing/text/html/$(am__dirstamp) \
+ javax/swing/text/html/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/HTMLEditorKit.lo: \
+ javax/swing/text/html/$(am__dirstamp) \
+ javax/swing/text/html/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/HTMLFrameHyperlinkEvent.lo: \
+ javax/swing/text/html/$(am__dirstamp) \
+ javax/swing/text/html/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/html/parser/$(am__dirstamp):
@$(mkdir_p) javax/swing/text/html/parser
@: > javax/swing/text/html/parser/$(am__dirstamp)
javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp):
@$(mkdir_p) javax/swing/text/html/parser/$(DEPDIR)
@: > javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/AttributeList.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/ContentModel.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/DTD.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/DTDConstants.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/DocumentParser.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/Element.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/Entity.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/Parser.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/html/parser/ParserDelegator.lo: \
javax/swing/text/html/parser/$(am__dirstamp) \
javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+javax/swing/text/html/parser/TagElement.lo: \
+ javax/swing/text/html/parser/$(am__dirstamp) \
+ javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
javax/swing/text/rtf/$(am__dirstamp):
@$(mkdir_p) javax/swing/text/rtf
@: > javax/swing/text/rtf/$(am__dirstamp)
-rm -f gnu/java/util/prefs/NodeReader.lo
-rm -f gnu/java/util/prefs/NodeWriter.$(OBJEXT)
-rm -f gnu/java/util/prefs/NodeWriter.lo
+ -rm -f gnu/javax/swing/text/html/parser/HTML_401F.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/HTML_401F.lo
+ -rm -f gnu/javax/swing/text/html/parser/gnuDTD.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/gnuDTD.lo
+ -rm -f gnu/javax/swing/text/html/parser/htmlAttributeSet.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/htmlAttributeSet.lo
+ -rm -f gnu/javax/swing/text/html/parser/htmlValidator.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/htmlValidator.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/PCDATAonly_model.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/PCDATAonly_model.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/TableRowContentModel.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/TableRowContentModel.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/list.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/list.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/noTagModel.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/noTagModel.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/node.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/node.lo
+ -rm -f gnu/javax/swing/text/html/parser/models/transformer.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/models/transformer.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/Parser.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/Parser.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/gnuStringIntMapper.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Buffer.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Buffer.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Constants.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Constants.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Location.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Location.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/ParseException.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/ParseException.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Queue.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Queue.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/ReaderTokenizer.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Token.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/Token.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/node.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/node.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/low/pattern.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/pattern.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/parameterDefaulter.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/parameterDefaulter.lo
+ -rm -f gnu/javax/swing/text/html/parser/support/textPreProcessor.$(OBJEXT)
+ -rm -f gnu/javax/swing/text/html/parser/support/textPreProcessor.lo
-rm -f gnu/regexp/CharIndexed.$(OBJEXT)
-rm -f gnu/regexp/CharIndexed.lo
-rm -f gnu/regexp/CharIndexedCharArray.$(OBJEXT)
-rm -f javax/swing/text/BadLocationException.lo
-rm -f javax/swing/text/Caret.$(OBJEXT)
-rm -f javax/swing/text/Caret.lo
+ -rm -f javax/swing/text/ChangedCharSetException.$(OBJEXT)
+ -rm -f javax/swing/text/ChangedCharSetException.lo
-rm -f javax/swing/text/ComponentView.$(OBJEXT)
-rm -f javax/swing/text/ComponentView.lo
-rm -f javax/swing/text/DefaultCaret.$(OBJEXT)
-rm -f javax/swing/text/ViewFactory.lo
-rm -f javax/swing/text/html/HTML.$(OBJEXT)
-rm -f javax/swing/text/html/HTML.lo
+ -rm -f javax/swing/text/html/HTMLDocument.$(OBJEXT)
+ -rm -f javax/swing/text/html/HTMLDocument.lo
+ -rm -f javax/swing/text/html/HTMLEditorKit.$(OBJEXT)
+ -rm -f javax/swing/text/html/HTMLEditorKit.lo
+ -rm -f javax/swing/text/html/HTMLFrameHyperlinkEvent.$(OBJEXT)
+ -rm -f javax/swing/text/html/HTMLFrameHyperlinkEvent.lo
+ -rm -f javax/swing/text/html/parser/AttributeList.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/AttributeList.lo
+ -rm -f javax/swing/text/html/parser/ContentModel.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/ContentModel.lo
+ -rm -f javax/swing/text/html/parser/DTD.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/DTD.lo
+ -rm -f javax/swing/text/html/parser/DTDConstants.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/DTDConstants.lo
+ -rm -f javax/swing/text/html/parser/DocumentParser.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/DocumentParser.lo
+ -rm -f javax/swing/text/html/parser/Element.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/Element.lo
+ -rm -f javax/swing/text/html/parser/Entity.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/Entity.lo
+ -rm -f javax/swing/text/html/parser/Parser.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/Parser.lo
-rm -f javax/swing/text/html/parser/ParserDelegator.$(OBJEXT)
-rm -f javax/swing/text/html/parser/ParserDelegator.lo
+ -rm -f javax/swing/text/html/parser/TagElement.$(OBJEXT)
+ -rm -f javax/swing/text/html/parser/TagElement.lo
-rm -f javax/swing/text/rtf/ControlWordToken.$(OBJEXT)
-rm -f javax/swing/text/rtf/ControlWordToken.lo
-rm -f javax/swing/text/rtf/RTFEditorKit.$(OBJEXT)
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/util/prefs/$(DEPDIR)/MemoryBasedPreferences.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/util/prefs/$(DEPDIR)/NodeReader.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/util/prefs/$(DEPDIR)/NodeWriter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/$(DEPDIR)/HTML_401F.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/$(DEPDIR)/gnuDTD.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/$(DEPDIR)/htmlAttributeSet.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/$(DEPDIR)/htmlValidator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/PCDATAonly_model.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/TableRowContentModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/list.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/noTagModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/node.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/models/$(DEPDIR)/transformer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/$(DEPDIR)/Parser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/$(DEPDIR)/gnuStringIntMapper.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/$(DEPDIR)/parameterDefaulter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/$(DEPDIR)/textPreProcessor.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/Buffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/Constants.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/Location.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/ParseException.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/Queue.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/ReaderTokenizer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/Token.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/node.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/pattern.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/CharIndexed.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/CharIndexedCharArray.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/regexp/$(DEPDIR)/CharIndexedInputStream.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/AttributeSet.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/BadLocationException.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/Caret.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/ChangedCharSetException.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/ComponentView.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/DefaultCaret.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/DefaultEditorKit.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/View.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/$(DEPDIR)/ViewFactory.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/$(DEPDIR)/HTML.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/$(DEPDIR)/HTMLDocument.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/$(DEPDIR)/HTMLEditorKit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/$(DEPDIR)/HTMLFrameHyperlinkEvent.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/AttributeList.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/ContentModel.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/DTD.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/DTDConstants.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/DocumentParser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/Element.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/Entity.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/Parser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/ParserDelegator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/html/parser/$(DEPDIR)/TagElement.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/rtf/$(DEPDIR)/ControlWordToken.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/rtf/$(DEPDIR)/RTFEditorKit.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@javax/swing/text/rtf/$(DEPDIR)/RTFParseException.Plo@am__quote@
-rm -rf gnu/java/text/.libs gnu/java/text/_libs
-rm -rf gnu/java/util/.libs gnu/java/util/_libs
-rm -rf gnu/java/util/prefs/.libs gnu/java/util/prefs/_libs
+ -rm -rf gnu/javax/swing/text/html/parser/.libs gnu/javax/swing/text/html/parser/_libs
+ -rm -rf gnu/javax/swing/text/html/parser/models/.libs gnu/javax/swing/text/html/parser/models/_libs
+ -rm -rf gnu/javax/swing/text/html/parser/support/.libs gnu/javax/swing/text/html/parser/support/_libs
+ -rm -rf gnu/javax/swing/text/html/parser/support/low/.libs gnu/javax/swing/text/html/parser/support/low/_libs
-rm -rf gnu/regexp/.libs gnu/regexp/_libs
-rm -rf java/applet/.libs java/applet/_libs
-rm -rf java/awt/.libs java/awt/_libs
-rm -f gnu/java/util/$(am__dirstamp)
-rm -f gnu/java/util/prefs/$(DEPDIR)/$(am__dirstamp)
-rm -f gnu/java/util/prefs/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/$(DEPDIR)/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/models/$(DEPDIR)/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/models/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/support/$(DEPDIR)/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/support/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/$(DEPDIR)/$(am__dirstamp)
+ -rm -f gnu/javax/swing/text/html/parser/support/low/$(am__dirstamp)
-rm -f gnu/regexp/$(DEPDIR)/$(am__dirstamp)
-rm -f gnu/regexp/$(am__dirstamp)
-rm -f java/applet/$(DEPDIR)/$(am__dirstamp)
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/text/rtf/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/javax/swing/text/html/parser/$(DEPDIR) gnu/javax/swing/text/html/parser/models/$(DEPDIR) gnu/javax/swing/text/html/parser/support/$(DEPDIR) gnu/javax/swing/text/html/parser/support/low/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/text/rtf/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-local distclean-tags
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/text/rtf/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) gnu/awt/$(DEPDIR) gnu/awt/j2d/$(DEPDIR) gnu/awt/xlib/$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/awt/$(DEPDIR) gnu/java/awt/color/$(DEPDIR) gnu/java/awt/image/$(DEPDIR) gnu/java/awt/peer/$(DEPDIR) gnu/java/io/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/reflect/$(DEPDIR) gnu/java/locale/$(DEPDIR) gnu/java/math/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/net/protocol/file/$(DEPDIR) gnu/java/net/protocol/ftp/$(DEPDIR) gnu/java/net/protocol/gcjlib/$(DEPDIR) gnu/java/net/protocol/http/$(DEPDIR) gnu/java/net/protocol/http/event/$(DEPDIR) gnu/java/net/protocol/jar/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) gnu/java/nio/charset/$(DEPDIR) gnu/java/rmi/$(DEPDIR) gnu/java/rmi/dgc/$(DEPDIR) gnu/java/rmi/registry/$(DEPDIR) gnu/java/rmi/rmic/$(DEPDIR) gnu/java/rmi/server/$(DEPDIR) gnu/java/security/$(DEPDIR) gnu/java/security/action/$(DEPDIR) gnu/java/security/ber/$(DEPDIR) gnu/java/security/der/$(DEPDIR) gnu/java/security/pkcs/$(DEPDIR) gnu/java/security/provider/$(DEPDIR) gnu/java/security/util/$(DEPDIR) gnu/java/security/x509/$(DEPDIR) gnu/java/security/x509/ext/$(DEPDIR) gnu/java/text/$(DEPDIR) gnu/java/util/$(DEPDIR) gnu/java/util/prefs/$(DEPDIR) gnu/javax/swing/text/html/parser/$(DEPDIR) gnu/javax/swing/text/html/parser/models/$(DEPDIR) gnu/javax/swing/text/html/parser/support/$(DEPDIR) gnu/javax/swing/text/html/parser/support/low/$(DEPDIR) gnu/regexp/$(DEPDIR) java/applet/$(DEPDIR) java/awt/$(DEPDIR) java/awt/color/$(DEPDIR) java/awt/datatransfer/$(DEPDIR) java/awt/dnd/$(DEPDIR) java/awt/dnd/peer/$(DEPDIR) java/awt/event/$(DEPDIR) java/awt/font/$(DEPDIR) java/awt/geom/$(DEPDIR) java/awt/im/$(DEPDIR) java/awt/im/spi/$(DEPDIR) java/awt/image/$(DEPDIR) java/awt/image/renderable/$(DEPDIR) java/awt/peer/$(DEPDIR) java/awt/print/$(DEPDIR) java/beans/$(DEPDIR) java/beans/beancontext/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/math/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/nio/channels/spi/$(DEPDIR) java/nio/charset/$(DEPDIR) java/nio/charset/spi/$(DEPDIR) java/rmi/$(DEPDIR) java/rmi/activation/$(DEPDIR) java/rmi/dgc/$(DEPDIR) java/rmi/registry/$(DEPDIR) java/rmi/server/$(DEPDIR) java/security/$(DEPDIR) java/security/acl/$(DEPDIR) java/security/cert/$(DEPDIR) java/security/interfaces/$(DEPDIR) java/security/spec/$(DEPDIR) java/sql/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/jar/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/prefs/$(DEPDIR) java/util/regex/$(DEPDIR) java/util/zip/$(DEPDIR) javax/accessibility/$(DEPDIR) javax/crypto/$(DEPDIR) javax/crypto/interfaces/$(DEPDIR) javax/crypto/spec/$(DEPDIR) javax/naming/$(DEPDIR) javax/naming/directory/$(DEPDIR) javax/naming/event/$(DEPDIR) javax/naming/ldap/$(DEPDIR) javax/naming/spi/$(DEPDIR) javax/net/$(DEPDIR) javax/net/ssl/$(DEPDIR) javax/print/$(DEPDIR) javax/print/attribute/$(DEPDIR) javax/print/attribute/standard/$(DEPDIR) javax/print/event/$(DEPDIR) javax/security/auth/$(DEPDIR) javax/security/auth/callback/$(DEPDIR) javax/security/auth/login/$(DEPDIR) javax/security/auth/spi/$(DEPDIR) javax/security/auth/x500/$(DEPDIR) javax/security/cert/$(DEPDIR) javax/security/sasl/$(DEPDIR) javax/sql/$(DEPDIR) javax/swing/$(DEPDIR) javax/swing/border/$(DEPDIR) javax/swing/colorchooser/$(DEPDIR) javax/swing/event/$(DEPDIR) javax/swing/filechooser/$(DEPDIR) javax/swing/plaf/$(DEPDIR) javax/swing/plaf/basic/$(DEPDIR) javax/swing/plaf/metal/$(DEPDIR) javax/swing/table/$(DEPDIR) javax/swing/text/$(DEPDIR) javax/swing/text/html/$(DEPDIR) javax/swing/text/html/parser/$(DEPDIR) javax/swing/text/rtf/$(DEPDIR) javax/swing/tree/$(DEPDIR) javax/swing/undo/$(DEPDIR) javax/transaction/$(DEPDIR) javax/transaction/xa/$(DEPDIR) jni/classpath/$(DEPDIR) jni/gtk-peer/$(DEPDIR) org/ietf/jgss/$(DEPDIR) sysdep/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.swing.text.html package.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. -->
+
+<html>
+<head><title>GNU Classpath - javax.swing.text.html</title></head>
+
+<body>
+<p> Provides supporting classes for web browsers,
+ web robots, web page content analysers, web editors and
+ other applications applications working with Hypertext
+ Markup Language (HTML).
+</p>
+
+</body>
+</html>
--- /dev/null
+/* HTML_401F.java -- HTML 4.01 FRAMESET DTD java conception.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.models.PCDATAonly_model;
+import gnu.javax.swing.text.html.parser.models.TableRowContentModel;
+import gnu.javax.swing.text.html.parser.models.noTagModel;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+import javax.swing.text.html.parser.*;
+import javax.swing.text.html.parser.ContentModel;
+import javax.swing.text.html.parser.DTDConstants;
+
+/**
+ * This class represents the java implementation of the HTML 4.01
+ * ( -//W3C//DTD HTML 4.01 Frameset//EN ) Frameset version. The
+ * Frameset version includes as recommended, as obsoleted features and
+ * also the frameset support. This the default DTD to parse HTML
+ * documents in this implementation, containing 315 pre-defined general
+ * entities and 92 elements.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class HTML_401F
+ extends gnuDTD
+ implements DTDConstants, Serializable
+{
+ private static final long serialVersionUID = 1;
+
+ /**
+ * The standard name of this DTD,
+ * '-//W3C//DTD HTML 4.01 Frameset//EN'
+ */
+ public static final String DTD_NAME = "-//W3C//DTD HTML 4.01 Frameset//EN";
+
+ /**
+ * The integer representing length in pixels.
+ */
+ static final int PIXELS = NUMBER;
+
+ static final String[] NONE = new String[0];
+
+ /* Define the HTML tags. */
+ static final String PCDATA = "#pcdata";
+ static final String A = "a";
+ static final String ABBR = "abbr";
+ static final String ACRONYM = "acronym";
+ static final String ADDRESS = "address";
+ static final String APPLET = "applet";
+ static final String AREA = "area";
+ static final String B = "b";
+ static final String BASE = "base";
+ static final String BASEFONT = "basefont";
+ static final String BDO = "bdo";
+ static final String BIG = "big";
+ static final String BLOCKQUOTE = "blockquote";
+ static final String BODY = "body";
+ static final String BR = "br";
+ static final String BUTTON = "button";
+ static final String CAPTION = "caption";
+ static final String CENTER = "center";
+ static final String CITE = "cite";
+ static final String CODE = "code";
+ static final String COL = "col";
+ static final String COLGROUP = "colgroup";
+ static final String DEFAULTS = "default";
+ static final String DD = "dd";
+ static final String DEL = "del";
+ static final String DFN = "dfn";
+ static final String DIR = "dir";
+ static final String DIV = "div";
+ static final String DL = "dl";
+ static final String DT = "dt";
+ static final String EM = "em";
+ static final String FIELDSET = "fieldset";
+ static final String FONT = "font";
+ static final String FORM = "form";
+ static final String FRAME = "frame";
+ static final String FRAMESET = "frameset";
+ static final String H1 = "h1";
+ static final String H2 = "h2";
+ static final String H3 = "h3";
+ static final String H4 = "h4";
+ static final String H5 = "h5";
+ static final String H6 = "h6";
+ static final String HEAD = "head";
+ static final String HR = "hr";
+ static final String HTML = "html";
+ static final String I = "i";
+ static final String IFRAME = "iframe";
+ static final String IMG = "img";
+ static final String INPUT = "input";
+ static final String INS = "ins";
+ static final String ISINDEX = "isindex";
+ static final String KBD = "kbd";
+ static final String LABEL = "label";
+ static final String LEGEND = "legend";
+ static final String LI = "li";
+ static final String LINK = "link";
+ static final String MAP = "map";
+ static final String MENU = "menu";
+ static final String META = "meta";
+ static final String NOFRAMES = "noframes";
+ static final String NOSCRIPT = "noscript";
+ static final String NONES = "none";
+ static final String sNAME = "name";
+ static final String OBJECT = "object";
+ static final String OL = "ol";
+ static final String OPTGROUP = "optgroup";
+ static final String OPTION = "option";
+ static final String P = "p";
+ static final String PARAM = "param";
+ static final String PRE = "pre";
+ static final String Q = "q";
+ static final String S = "s";
+ static final String SAMP = "samp";
+ static final String SCRIPT = "script";
+ static final String SELECT = "select";
+ static final String SMALL = "small";
+ static final String SPAN = "span";
+ static final String STRIKE = "strike";
+ static final String STRONG = "strong";
+ static final String STYLE = "style";
+ static final String SUB = "sub";
+ static final String SUP = "sup";
+ static final String TABLE = "table";
+ static final String TBODY = "tbody";
+ static final String TD = "td";
+ static final String TEXTAREA = "textarea";
+ static final String TFOOT = "tfoot";
+ static final String TH = "th";
+ static final String THEAD = "thead";
+ static final String TITLE = "title";
+ static final String TR = "tr";
+ static final String TT = "tt";
+ static final String U = "u";
+ static final String UL = "ul";
+ static final String VAR = "var";
+
+ /* Define the attribute constants. */
+ static final String C_0 = "0";
+ static final String C_1 = "1";
+ static final String CHECKBOX = "checkbox";
+ static final String DATA = "data";
+ static final String FILE = "file";
+ static final String GET = "get";
+ static final String HIDDEN = "hidden";
+ static final String IMAGE = "image";
+ static final String PASSWORD = "password";
+ static final String POST = "post";
+ static final String RADIO = "radio";
+ static final String REF = "ref";
+ static final String RESET = "reset";
+ static final String SUBMIT = "submit";
+ static final String TEXT = "text";
+ static final String ABOVE = "above";
+ static final String ACCEPT = "accept";
+ static final String ACCEPTCHARSET = "accept-charset";
+ static final String ACCESSKEY = "accesskey";
+ static final String ACTION = "action";
+ static final String ALIGN = "align";
+ static final String ALINK = "alink";
+ static final String ALL = "all";
+ static final String ALT = "alt";
+ static final String APPLICATION_X_WWW_FORM_URLENCODED
+ = "application/x-www-form-urlencoded";
+ static final String ARCHIVE = "archive";
+ static final String AUTO = "auto";
+ static final String AXIS = "axis";
+ static final String BACKGROUND = "background";
+ static final String BASELINE = "baseline";
+ static final String BELOW = "below";
+ static final String BGCOLOR = "bgcolor";
+ static final String BORDER = "border";
+ static final String BOTTOM = "bottom";
+ static final String BOX = "box";
+ static final String CELLPADDING = "cellpadding";
+ static final String CELLSPACING = "cellspacing";
+ static final String CHAR = "char";
+ static final String CHAROFF = "charoff";
+ static final String CHARSET = "charset";
+ static final String CHECKED = "checked";
+ static final String CIRCLE = "circle";
+ static final String CLASS = "class";
+ static final String CLASSID = "classid";
+ static final String CLEAR = "clear";
+ static final String CODEBASE = "codebase";
+ static final String CODETYPE = "codetype";
+ static final String COLOR = "color";
+ static final String COLS = "cols";
+ static final String COLSPAN = "colspan";
+ static final String COMPACT = "compact";
+ static final String CONTENT = "content";
+ static final String COORDS = "coords";
+ static final String DATAPAGESIZE = "datapagesize";
+ static final String DATETIME = "datetime";
+ static final String DECLARE = "declare";
+ static final String DEFER = "defer";
+ static final String DISABLED = "disabled";
+ static final String DISC = "disc";
+ static final String ENCTYPE = "enctype";
+ static final String EVENT = "event";
+ static final String FACE = "face";
+ static final String FOR = "for";
+ static final String FRAMEBORDER = "frameborder";
+ static final String GROUPS = "groups";
+ static final String HEADERS = "headers";
+ static final String HEIGHT = "height";
+ static final String HREF = "href";
+ static final String HREFLANG = "hreflang";
+ static final String HSIDES = "hsides";
+ static final String HSPACE = "hspace";
+ static final String HTTPEQUIV = "http-equiv";
+ static final String sID = "id";
+ static final String ISMAP = "ismap";
+ static final String JUSTIFY = "justify";
+ static final String LANG = "lang";
+ static final String LANGUAGE = "language";
+ static final String LEFT = "left";
+ static final String LHS = "lhs";
+ static final String LONGDESC = "longdesc";
+ static final String LTR = "ltr";
+ static final String MARGINHEIGHT = "marginheight";
+ static final String MARGINWIDTH = "marginwidth";
+ static final String MAXLENGTH = "maxlength";
+ static final String MEDIA = "media";
+ static final String METHOD = "method";
+ static final String MIDDLE = "middle";
+ static final String MULTIPLE = "multiple";
+ static final String NO = "no";
+ static final String NOHREF = "nohref";
+ static final String NORESIZE = "noresize";
+ static final String NOSHADE = "noshade";
+ static final String NOWRAP = "nowrap";
+ static final String ONBLUR = "onblur";
+ static final String ONCHANGE = "onchange";
+ static final String ONCLICK = "onclick";
+ static final String ONDBLCLICK = "ondblclick";
+ static final String ONFOCUS = "onfocus";
+ static final String ONKEYDOWN = "onkeydown";
+ static final String ONKEYPRESS = "onkeypress";
+ static final String ONKEYUP = "onkeyup";
+ static final String ONLOAD = "onload";
+ static final String ONMOUSEDOWN = "onmousedown";
+ static final String ONMOUSEMOVE = "onmousemove";
+ static final String ONMOUSEOUT = "onmouseout";
+ static final String ONMOUSEOVER = "onmouseover";
+ static final String ONMOUSEUP = "onmouseup";
+ static final String ONRESET = "onreset";
+ static final String ONSELECT = "onselect";
+ static final String ONSUBMIT = "onsubmit";
+ static final String ONUNLOAD = "onunload";
+ static final String POLY = "poly";
+ static final String PROFILE = "profile";
+ static final String PROMPT = "prompt";
+ static final String READONLY = "readonly";
+ static final String RECT = "rect";
+ static final String REL = "rel";
+ static final String REV = "rev";
+ static final String RHS = "rhs";
+ static final String RIGHT = "right";
+ static final String ROW = "row";
+ static final String ROWGROUP = "rowgroup";
+ static final String ROWS = "rows";
+ static final String ROWSPAN = "rowspan";
+ static final String RTL = "rtl";
+ static final String RULES = "rules";
+ static final String SCHEME = "scheme";
+ static final String SCOPE = "scope";
+ static final String SCROLLING = "scrolling";
+ static final String SELECTED = "selected";
+ static final String SHAPE = "shape";
+ static final String SIZE = "size";
+ static final String SQUARE = "square";
+ static final String SRC = "src";
+ static final String STANDBY = "standby";
+ static final String START = "start";
+ static final String SUMMARY = "summary";
+ static final String TABINDEX = "tabindex";
+ static final String TARGET = "target";
+ static final String TOP = "top";
+ static final String TYPE = "type";
+ static final String USEMAP = "usemap";
+ static final String VALIGN = "valign";
+ static final String VALUE = "value";
+ static final String VALUETYPE = "valuetype";
+ static final String VERSION = "version";
+ static final String VLINK = "vlink";
+ static final String VOID = "void";
+ static final String VSIDES = "vsides";
+ static final String VSPACE = "vspace";
+ static final String WIDTH = "width";
+ static final String YES = "yes";
+
+ static final String[] BLOCK =
+ new String[] {
+ ADDRESS, BLOCKQUOTE, CENTER, DIR,
+ DIV, DL, FIELDSET, FORM,
+ H1, H2, H3, H4, H5, H6,
+ HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
+ OL, P, PRE, TABLE, UL
+ };
+
+ /**
+ * Creates this DTD, filling in the entities and attributes data
+ * as defined in -//W3C//DTD HTML 4.01 Frameset//EN.
+ */
+ protected HTML_401F()
+ {
+ super(DTD_NAME);
+ defineEntities();
+ defineElements();
+ }
+
+ /**
+ * Either takes the document (by name) from DTD table, or
+ * creates a new instance and registers it in the tabe.
+ * The document is registerd under name "-//W3C//DTD HTML 4.01 Frameset//EN".
+ * @return The new or existing DTD for parsing HTML 4.01 Frameset.
+ */
+ public static DTD getInstance()
+ {
+ try
+ {
+ DTD dtd = getDTD(DTD_NAME);
+ if (dtd == null || dtd.getClass().equals(DTD.class))
+ {
+ dtd = new HTML_401F();
+ putDTDHash(DTD_NAME, dtd);
+ }
+ return dtd;
+ }
+ catch (IOException ex)
+ {
+ throw new Error("This should never happen. Report the bug.", ex);
+ }
+ }
+
+ /**
+ * Define all elements of this DTD.
+ */
+ protected void defineElements()
+ {
+ /* Define the elements. */
+ defElement(PCDATA, 0, false, false, null, NONE, NONE,
+ new AttributeList[ 0 ]);
+
+ defElement(A, 0, false, false, null,
+ new String[] {
+ A
+ }
+ ,
+ new String[] {
+ PCDATA, ABBR, ACRONYM, APPLET,
+ B, BASEFONT, BDO, BIG, BR,
+ BUTTON, CITE, CODE, DFN, EM,
+ FONT, I, IFRAME, IMG, INPUT,
+ KBD, LABEL, MAP, OBJECT, Q,
+ S, SAMP, SCRIPT, SELECT, SMALL,
+ SPAN, STRIKE, STRONG, SUB, SUP,
+ TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CHARSET, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(HREF, null, null, 0, IMPLIED),
+ attr(HREFLANG, null, null, 0, IMPLIED),
+ attr(TARGET, null, null, 0, IMPLIED),
+ attr(REL, null, null, 0, IMPLIED),
+ attr(REV, null, null, 0, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(SHAPE, RECT, new String[] { RECT, CIRCLE, POLY, DEFAULTS },
+ 0, DEFAULT),
+ attr(COORDS, null, null, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(ABBR, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(ACRONYM, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(ADDRESS, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ P
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(APPLET, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL, PARAM
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(CODEBASE, null, null, 0, IMPLIED),
+ attr(ARCHIVE, null, null, 0, IMPLIED),
+ attr(CODE, null, null, 0, IMPLIED),
+ attr(OBJECT, null, null, 0, IMPLIED),
+ attr(ALT, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, REQUIRED),
+ attr(HEIGHT, null, null, 0, REQUIRED),
+ attr(ALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED),
+ attr(HSPACE, null, null, 0, IMPLIED),
+ attr(VSPACE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(AREA, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SHAPE, RECT, new String[] { RECT, CIRCLE, POLY, DEFAULTS },
+ 0, DEFAULT),
+ attr(COORDS, null, null, 0, IMPLIED),
+ attr(HREF, null, null, 0, IMPLIED),
+ attr(TARGET, null, null, 0, IMPLIED),
+ attr(NOHREF, null, new String[] { NOHREF }, 0, IMPLIED),
+ attr(ALT, null, null, 0, REQUIRED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(B, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BASE, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(HREF, null, null, 0, IMPLIED),
+ attr(TARGET, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BASEFONT, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(SIZE, null, null, 0, REQUIRED),
+ attr(COLOR, null, null, 0, IMPLIED),
+ attr(FACE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BDO, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, REQUIRED)
+ }
+ );
+ defElement(BIG, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BLOCKQUOTE, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CITE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BODY, 0, true, true, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DEL, DIR,
+ DIV, DL, FIELDSET, FORM, H1,
+ H2, H3, H4, H5, H6,
+ HR, INS, ISINDEX, MENU, NOFRAMES,
+ NOSCRIPT, OL, P, PRE, TABLE,
+ UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ONLOAD, null, null, 0, IMPLIED),
+ attr(ONUNLOAD, null, null, 0, IMPLIED),
+ attr(BACKGROUND, null, null, 0, IMPLIED),
+ attr(BGCOLOR, null, null, 0, IMPLIED),
+ attr(TEXT, null, null, 0, IMPLIED),
+ attr(LINK, null, null, 0, IMPLIED),
+ attr(VLINK, null, null, 0, IMPLIED),
+ attr(ALINK, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(BR, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(CLEAR, "NONE", new String[] { LEFT, ALL, RIGHT, NONES },
+ 0, DEFAULT)
+ }
+ );
+ defElement(BUTTON, 0, false, false, null,
+ new String[] {
+ A, BUTTON, IFRAME, INPUT,
+ LABEL, SELECT, TEXTAREA, FIELDSET, FORM,
+ ISINDEX
+ }
+ ,
+ new String[] {
+ PCDATA, ABBR, ACRONYM, APPLET,
+ B, BASEFONT, BDO, BIG, BR,
+ CITE, CODE, DFN, EM, FONT,
+ I, IMG, KBD, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SMALL,
+ SPAN, STRIKE, STRONG, SUB, SUP,
+ TT, U, VAR, ADDRESS, BLOCKQUOTE,
+ CENTER, DIR, DIV, DL, H1,
+ H2, H3, H4, H5, H6,
+ HR, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(VALUE, null, null, 0, IMPLIED),
+ attr(TYPE, SUBMIT, new String[] { BUTTON, SUBMIT, RESET }, 0, DEFAULT),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(CAPTION, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { TOP, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED)
+ }
+ );
+ defElement(CENTER, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(CITE, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(CODE, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(COL, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SPAN, C_1, null, NUMBER, DEFAULT),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED)
+ }
+ );
+ defElement(COLGROUP, 0, false, true, null,
+ NONE
+ ,
+ new String[] {
+ COL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SPAN, C_1, null, NUMBER, DEFAULT),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED)
+ }
+ );
+ defElement(DD, 0, false, true, new ContentModel(0,
+ new noTagModel( new String[] { DD, DT } ), null ),
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(DEL, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CITE, null, null, 0, IMPLIED),
+ attr(DATETIME, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(DFN, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(DIR, 0, false, false, createListModel(),
+ new String[] {
+ ADDRESS, BLOCKQUOTE, CENTER, DIR,
+ DIV, DL, FIELDSET, FORM, H1,
+ H2, H3, H4, H5, H6,
+ HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
+ OL, P, PRE, TABLE, UL
+ }
+ ,
+ new String[] {
+ LI, UL, OL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(COMPACT, null, new String[] { COMPACT }, 0, IMPLIED)
+ }
+ );
+ defElement(DIV, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(DL, 0, false, false, createDefListModel(),
+ NONE
+ ,
+ new String[] {
+ DD, DT
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(COMPACT, null, new String[] { COMPACT }, 0, IMPLIED)
+ }
+ );
+ defElement(DT, 0, false, true,
+ new ContentModel(0,
+ new noTagModel( new String[] { DT, DD } ), null),
+ BLOCK
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(EM, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(FIELDSET, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL, LEGEND
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(FONT, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(SIZE, null, null, 0, IMPLIED),
+ attr(COLOR, null, null, 0, IMPLIED),
+ attr(FACE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(FORM, 0, false, false, null,
+ new String[] {
+ FORM
+ }
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, H1, H2, H3,
+ H4, H5, H6, HR, ISINDEX,
+ MENU, NOFRAMES, NOSCRIPT, OL, P,
+ PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ACTION, null, null, 0, REQUIRED),
+ attr(METHOD, GET, new String[] { GET, POST }, 0, DEFAULT),
+ attr(ENCTYPE, APPLICATION_X_WWW_FORM_URLENCODED, null, 0, DEFAULT),
+ attr(ACCEPT, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(ONSUBMIT, null, null, 0, IMPLIED),
+ attr(ONRESET, null, null, 0, IMPLIED),
+ attr(TARGET, null, null, 0, IMPLIED),
+ attr(ACCEPTCHARSET, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(FRAME, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LONGDESC, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(SRC, null, null, 0, IMPLIED),
+ attr(FRAMEBORDER, C_1, new String[] { C_1, C_0 }, 0, DEFAULT),
+ attr(MARGINWIDTH, null, null, PIXELS, IMPLIED),
+ attr(MARGINHEIGHT, null, null, PIXELS, IMPLIED),
+ attr(NORESIZE, null, new String[] { NORESIZE }, 0, IMPLIED),
+ attr(SCROLLING, AUTO, new String[] { YES, NO, AUTO }, 0, DEFAULT)
+ }
+ );
+ defElement(FRAMESET, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ NOFRAMES, FRAME, FRAMESET
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(ROWS, null, null, 0, IMPLIED),
+ attr(COLS, null, null, 0, IMPLIED),
+ attr(ONLOAD, null, null, 0, IMPLIED),
+ attr(ONUNLOAD, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(H1, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(H2, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(H3, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(H4, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(H5, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(H6, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(HEAD, 0, true, true, null,
+ new String[] {
+ BODY
+ }
+ ,
+ new String[] {
+ TITLE, ISINDEX, BASE,
+ SCRIPT, STYLE, META, LINK, OBJECT
+ }
+ ,
+ new AttributeList[] {
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(PROFILE, null, null, 0, IMPLIED)
+ }
+ );
+
+ defElement(HR, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT }, 0, IMPLIED),
+ attr(NOSHADE, null, new String[] { NOSHADE }, 0, IMPLIED),
+ attr(SIZE, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(HTML, 0, true, true, createHtmlContentModel(),
+ NONE
+ ,
+ new String[] {
+ HEAD, BODY
+ }
+ ,
+ new AttributeList[] {
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(VERSION, DTD_NAME, null, 0, FIXED)
+ }
+ );
+ defElement(I, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(IFRAME, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LONGDESC, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(SRC, null, null, 0, IMPLIED),
+ attr(FRAMEBORDER, C_1, new String[] { C_1, C_0 }, 0, DEFAULT),
+ attr(MARGINWIDTH, null, null, PIXELS, IMPLIED),
+ attr(MARGINHEIGHT, null, null, PIXELS, IMPLIED),
+ attr(SCROLLING, AUTO, new String[] { YES, NO, AUTO }, 0, DEFAULT),
+ attr(ALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED),
+ attr(HEIGHT, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(IMG, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SRC, null, null, 0, REQUIRED),
+ attr(ALT, null, null, 0, REQUIRED),
+ attr(LONGDESC, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(HEIGHT, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(USEMAP, null, null, 0, IMPLIED),
+ attr(ISMAP, null, new String[] { ISMAP }, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED),
+ attr(BORDER, null, null, PIXELS, IMPLIED),
+ attr(HSPACE, null, null, 0, IMPLIED),
+ attr(VSPACE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(INPUT, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(TYPE, TEXT, new String[] { TEXT, PASSWORD, CHECKBOX, RADIO,
+ SUBMIT, RESET, FILE, HIDDEN, IMAGE, BUTTON }, 0, DEFAULT),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(VALUE, null, null, 0, IMPLIED),
+ attr(CHECKED, null, new String[] { CHECKED }, 0, IMPLIED),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(READONLY, null, new String[] { READONLY }, 0, IMPLIED),
+ attr(SIZE, null, null, 0, IMPLIED),
+ attr(MAXLENGTH, null, null, 0, IMPLIED),
+ attr(SRC, null, null, 0, IMPLIED),
+ attr(ALT, null, null, 0, IMPLIED),
+ attr(USEMAP, null, null, 0, IMPLIED),
+ attr(ISMAP, null, new String[] { ISMAP }, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED),
+ attr(ONSELECT, null, null, 0, IMPLIED),
+ attr(ONCHANGE, null, null, 0, IMPLIED),
+ attr(ACCEPT, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED)
+ }
+ );
+ defElement(INS, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CITE, null, null, 0, IMPLIED),
+ attr(DATETIME, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(ISINDEX, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(PROMPT, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(KBD, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(LABEL, 0, false, false, null,
+ new String[] {
+ LABEL
+ }
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, MAP, OBJECT, Q,
+ S, SAMP, SCRIPT, SELECT, SMALL,
+ SPAN, STRIKE, STRONG, SUB, SUP,
+ TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(FOR, null, null, 0, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(LEGEND, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { TOP, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED)
+ }
+ );
+ // LI has a special content model that will be resolved into
+ // by transformer.
+ defElement(LI, 0, false, true,
+ new ContentModel(0,
+ new noTagModel(LI), null),
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, IMPLIED),
+ attr(VALUE, null, null, NUMBER, IMPLIED)
+ }
+ );
+ defElement(LINK, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CHARSET, null, null, 0, IMPLIED),
+ attr(HREF, null, null, 0, IMPLIED),
+ attr(HREFLANG, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, IMPLIED),
+ attr(REL, null, null, 0, IMPLIED),
+ attr(REV, null, null, 0, IMPLIED),
+ attr(MEDIA, null, null, 0, IMPLIED),
+ attr(TARGET, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(MAP, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ ADDRESS, BLOCKQUOTE, CENTER, DIR,
+ DIV, DL, FIELDSET, FORM, H1,
+ H2, H3, H4, H5, H6,
+ HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
+ OL, P, PRE, TABLE, UL,
+ AREA
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, REQUIRED)
+ }
+ );
+ defElement(MENU, 0, false, false, createListModel(),
+ new String[] {
+ ADDRESS, BLOCKQUOTE, CENTER, DIR,
+ DIV, DL, FIELDSET, FORM, H1,
+ H2, H3, H4, H5, H6,
+ HR, ISINDEX, MENU, NOFRAMES, NOSCRIPT,
+ OL, P, PRE, TABLE, UL
+ }
+ ,
+ new String[] {
+ LI, UL, OL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(COMPACT, null, new String[] { COMPACT }, 0, IMPLIED)
+ }
+ );
+ defElement(META, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(HTTPEQUIV, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, NAME, IMPLIED),
+ attr(CONTENT, null, null, 0, REQUIRED),
+ attr(SCHEME, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(NOFRAMES, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(NOSCRIPT, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(OBJECT, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL, PARAM
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(DECLARE, null, new String[] { DECLARE }, 0, IMPLIED),
+ attr(CLASSID, null, null, 0, IMPLIED),
+ attr(CODEBASE, null, null, 0, IMPLIED),
+ attr(DATA, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, IMPLIED),
+ attr(CODETYPE, null, null, 0, IMPLIED),
+ attr(ARCHIVE, null, null, 0, IMPLIED),
+ attr(STANDBY, null, null, 0, IMPLIED),
+ attr(HEIGHT, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(USEMAP, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, LEFT, RIGHT },
+ 0, IMPLIED),
+ attr(BORDER, null, null, PIXELS, IMPLIED),
+ attr(HSPACE, null, null, 0, IMPLIED),
+ attr(VSPACE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(OL, 0, false, false, createListModel(),
+ NONE
+ ,
+ new String[] {
+ // See note on the createListModel method
+ LI, UL, OL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, IMPLIED),
+ attr(COMPACT, null, new String[] { COMPACT }, 0, IMPLIED),
+ attr(START, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(OPTGROUP, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ OPTION
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(LABEL, null, null, 0, REQUIRED)
+ }
+ );
+ defElement(OPTION, 0, false, true, new ContentModel(0,
+ new PCDATAonly_model(), null),
+ NONE,
+ new String[] {
+ PCDATA
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SELECTED, null, new String[] { SELECTED }, 0, IMPLIED),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(LABEL, null, null, 0, IMPLIED),
+ attr(VALUE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(P, 0, false, true, new ContentModel( 0,
+ new noTagModel(P), null),
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY },
+ 0, IMPLIED)
+ }
+ );
+ defElement(PARAM, EMPTY, false, true, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(sNAME, null, null, 0, REQUIRED),
+ attr(VALUE, null, null, 0, IMPLIED),
+ attr(VALUETYPE, DATA, new String[] { DATA, REF, OBJECT }, 0, DEFAULT),
+ attr(TYPE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(PRE, 0, false, false, null,
+ new String[] {
+ APPLET, BASEFONT, BIG, FONT,
+ IMG, OBJECT, SMALL, SUB, SUP
+ }
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ B, BDO, BR, BUTTON, CITE,
+ CODE, DFN, EM, I, IFRAME,
+ INPUT, KBD, LABEL, MAP, Q,
+ S, SAMP, SCRIPT, SELECT, SPAN,
+ STRIKE, STRONG, TEXTAREA, TT, U,
+ VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, NUMBER, IMPLIED)
+ }
+ );
+ defElement(Q, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(CITE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(S, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SAMP, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SCRIPT, CDATA, false, false, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(CHARSET, null, null, 0, IMPLIED),
+ attr(TYPE, null, null, 0, REQUIRED),
+ attr(LANGUAGE, null, null, 0, IMPLIED),
+ attr(SRC, null, null, 0, IMPLIED),
+ attr(DEFER, null, new String[] { DEFER }, 0, IMPLIED),
+ attr(EVENT, null, null, 0, IMPLIED),
+ attr(FOR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SELECT, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ OPTGROUP, OPTION
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(SIZE, null, null, NUMBER, IMPLIED),
+ attr(MULTIPLE, null, new String[] { MULTIPLE }, 0, IMPLIED),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED),
+ attr(ONCHANGE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SMALL, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SPAN, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(STRIKE, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(STRONG, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(STYLE, CDATA, false, false, null,
+ NONE
+ ,
+ NONE
+ ,
+ new AttributeList[] {
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(TYPE, null, null, 0, REQUIRED),
+ attr(MEDIA, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SUB, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(SUP, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(TABLE, 0, false, false, createTableContentModel(),
+ NONE
+ ,
+ new String[] {
+ CAPTION, COL, COLGROUP, TBODY,
+ TFOOT, THEAD
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(SUMMARY, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(BORDER, null, null, PIXELS, IMPLIED),
+ attr(FRAME, null, new String[] { VOID, ABOVE, BELOW, HSIDES, LHS, RHS,
+ VSIDES, BOX, BORDER }, 0, IMPLIED),
+ attr(RULES, null, new String[] { NONES, GROUPS, ROWS, COLS, ALL },
+ 0, IMPLIED),
+ attr(CELLSPACING, null, null, 0, IMPLIED),
+ attr(CELLPADDING, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT }, 0, IMPLIED),
+ attr(BGCOLOR, null, null, 0, IMPLIED),
+ attr(DATAPAGESIZE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(TBODY, 0, true, true, model(TR,'+'),
+ NONE
+ ,
+ new String[] {
+ TR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED)
+ }
+ );
+
+ defElement(TD, 0, false, true,
+ new ContentModel(0,
+ new noTagModel(new String[] {"TD", "TH", "TR" } ), null),
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ABBR, null, null, 0, IMPLIED),
+ attr(AXIS, null, null, 0, IMPLIED),
+ attr(HEADERS, null, null, 0, IMPLIED),
+ attr(SCOPE, null, new String[] { ROW, COL, ROWGROUP, COLGROUP },
+ 0, IMPLIED),
+ attr(ROWSPAN, C_1, null, NUMBER, DEFAULT),
+ attr(COLSPAN, C_1, null, NUMBER, DEFAULT),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED),
+ attr(NOWRAP, null, new String[] { NOWRAP }, 0, IMPLIED),
+ attr(BGCOLOR, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(HEIGHT, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(TEXTAREA, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(sNAME, null, null, 0, IMPLIED),
+ attr(ROWS, null, null, NUMBER, REQUIRED),
+ attr(COLS, null, null, NUMBER, REQUIRED),
+ attr(DISABLED, null, new String[] { DISABLED }, 0, IMPLIED),
+ attr(READONLY, null, new String[] { READONLY }, 0, IMPLIED),
+ attr(TABINDEX, null, null, NUMBER, IMPLIED),
+ attr(ACCESSKEY, null, null, 0, IMPLIED),
+ attr(ONFOCUS, null, null, 0, IMPLIED),
+ attr(ONBLUR, null, null, 0, IMPLIED),
+ attr(ONSELECT, null, null, 0, IMPLIED),
+ attr(ONCHANGE, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(TFOOT, 0, false, true, model(TR,'+'),
+ NONE
+ ,
+ new String[] {
+ TR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED)
+ }
+ );
+ defElement(TH, 0, false, true, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR,
+ ADDRESS, BLOCKQUOTE, CENTER, DIR, DIV,
+ DL, FIELDSET, FORM, H1, H2,
+ H3, H4, H5, H6, HR,
+ ISINDEX, MENU, NOFRAMES, NOSCRIPT, OL,
+ P, PRE, TABLE, UL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ABBR, null, null, 0, IMPLIED),
+ attr(AXIS, null, null, 0, IMPLIED),
+ attr(HEADERS, null, null, 0, IMPLIED),
+ attr(SCOPE, null, new String[] { ROW, COL, ROWGROUP, COLGROUP },
+ 0, IMPLIED),
+ attr(ROWSPAN, C_1, null, NUMBER, DEFAULT),
+ attr(COLSPAN, C_1, null, NUMBER, DEFAULT),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED),
+ attr(NOWRAP, null, new String[] { NOWRAP }, 0, IMPLIED),
+ attr(BGCOLOR, null, null, 0, IMPLIED),
+ attr(WIDTH, null, null, 0, IMPLIED),
+ attr(HEIGHT, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(THEAD, 0, false, true, model(TR,'+'),
+ NONE
+ ,
+ new String[] {
+ TR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED)
+ }
+ );
+ defElement(TITLE, 0, false, false, null,
+ new String[] {
+ OBJECT, SCRIPT, LINK, META,
+ STYLE
+ }
+ ,
+ new String[] {
+ PCDATA
+ }
+ ,
+ new AttributeList[] {
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED)
+ }
+ );
+ defElement(TR, 0, false, true,
+ new ContentModel(0, new TableRowContentModel(this), null),
+ NONE
+ ,
+ new String[] {
+ TD, TH
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(ALIGN, null, new String[] { LEFT, CENTER, RIGHT, JUSTIFY, CHAR },
+ 0, IMPLIED),
+ attr(CHAR, null, null, 0, IMPLIED),
+ attr(CHAROFF, null, null, 0, IMPLIED),
+ attr(VALIGN, null, new String[] { TOP, MIDDLE, BOTTOM, BASELINE },
+ 0, IMPLIED),
+ attr(BGCOLOR, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(TT, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(U, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+ defElement(UL, 0, false, false, createListModel(),
+ NONE
+ ,
+ new String[] {
+ // See note on the createListModel method
+ LI, UL, OL
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED),
+ attr(TYPE, null, new String[] { DISC, SQUARE, CIRCLE }, 0, IMPLIED),
+ attr(COMPACT, null, new String[] { COMPACT }, 0, IMPLIED)
+ }
+ );
+ defElement(VAR, 0, false, false, null,
+ NONE
+ ,
+ new String[] {
+ PCDATA, A, ABBR, ACRONYM,
+ APPLET, B, BASEFONT, BDO, BIG,
+ BR, BUTTON, CITE, CODE, DFN,
+ EM, FONT, I, IFRAME, IMG,
+ INPUT, KBD, LABEL, MAP, OBJECT,
+ Q, S, SAMP, SCRIPT, SELECT,
+ SMALL, SPAN, STRIKE, STRONG, SUB,
+ SUP, TEXTAREA, TT, U, VAR
+ }
+ ,
+ new AttributeList[] {
+ attr(sID, null, null, ID, IMPLIED),
+ attr(CLASS, null, null, 0, IMPLIED),
+ attr(STYLE, null, null, 0, IMPLIED),
+ attr(TITLE, null, null, 0, IMPLIED),
+ attr(LANG, null, null, 0, IMPLIED),
+ attr(DIR, null, new String[] { LTR, RTL }, 0, IMPLIED),
+ attr(ONCLICK, null, null, 0, IMPLIED),
+ attr(ONDBLCLICK, null, null, 0, IMPLIED),
+ attr(ONMOUSEDOWN, null, null, 0, IMPLIED),
+ attr(ONMOUSEUP, null, null, 0, IMPLIED),
+ attr(ONMOUSEOVER, null, null, 0, IMPLIED),
+ attr(ONMOUSEMOVE, null, null, 0, IMPLIED),
+ attr(ONMOUSEOUT, null, null, 0, IMPLIED),
+ attr(ONKEYPRESS, null, null, 0, IMPLIED),
+ attr(ONKEYDOWN, null, null, 0, IMPLIED),
+ attr(ONKEYUP, null, null, 0, IMPLIED)
+ }
+ );
+
+ }
+
+ /**
+ * Define all entities in this DTD.
+ */
+ protected void defineEntities()
+ {
+ /* Define general entities */
+ defineEntity("AElig", 198);
+ defineEntity("Aacute", 193);
+ defineEntity("Acirc", 194);
+ defineEntity("Agrave", 192);
+ defineEntity("Alpha", 913);
+ defineEntity("Aring", 197);
+ defineEntity("Atilde", 195);
+ defineEntity("Auml", 196);
+ defineEntity("Beta", 914);
+ defineEntity("Ccedil", 199);
+ defineEntity("Chi", 935);
+ defineEntity("Dagger", 8225);
+ defineEntity("Delta", 916);
+ defineEntity("ETH", 208);
+ defineEntity("Eacute", 201);
+ defineEntity("Ecirc", 202);
+ defineEntity("Egrave", 200);
+ defineEntity("Epsilon", 917);
+ defineEntity("Eta", 919);
+ defineEntity("Euml", 203);
+ defineEntity("Gamma", 915);
+ defineEntity("Iacute", 205);
+ defineEntity("Icirc", 206);
+ defineEntity("Igrave", 204);
+ defineEntity("Iota", 921);
+ defineEntity("Iuml", 207);
+ defineEntity("Kappa", 922);
+ defineEntity("Lambda", 923);
+ defineEntity("Mu", 924);
+ defineEntity("Ntilde", 209);
+ defineEntity("Nu", 925);
+ defineEntity("OElig", 338);
+ defineEntity("Oacute", 211);
+ defineEntity("Ocirc", 212);
+ defineEntity("Ograve", 210);
+ defineEntity("Omega", 937);
+ defineEntity("Omicron", 927);
+ defineEntity("Oslash", 216);
+ defineEntity("Otilde", 213);
+ defineEntity("Ouml", 214);
+ defineEntity("Phi", 934);
+ defineEntity("Pi", 928);
+ defineEntity("Prime", 8243);
+ defineEntity("Psi", 936);
+ defineEntity("Rho", 929);
+ defineEntity("Scaron", 352);
+ defineEntity("Sigma", 931);
+ defineEntity("THORN", 222);
+ defineEntity("Tau", 932);
+ defineEntity("Theta", 920);
+ defineEntity("Uacute", 218);
+ defineEntity("Ucirc", 219);
+ defineEntity("Ugrave", 217);
+ defineEntity("Upsilon", 933);
+ defineEntity("Uuml", 220);
+ defineEntity("Xi", 926);
+ defineEntity("Yacute", 221);
+ defineEntity("Yuml", 376);
+ defineEntity("Zeta", 918);
+ defineEntity("aacute", 225);
+ defineEntity("acirc", 226);
+ defineEntity("acute", 180);
+ defineEntity("aelig", 230);
+ defineEntity("agrave", 224);
+ defineEntity("alefsym", 8501);
+ defineEntity("alpha", 945);
+ defineEntity("amp", 38);
+ defineEntity("and", 8743);
+ defineEntity("ang", 8736);
+ defineEntity("aring", 229);
+ defineEntity("asymp", 8776);
+ defineEntity("atilde", 227);
+ defineEntity("auml", 228);
+ defineEntity("bdquo", 8222);
+ defineEntity("beta", 946);
+ defineEntity("brvbar", 166);
+ defineEntity("bull", 8226);
+ defineEntity("cap", 8745);
+ defineEntity("ccedil", 231);
+ defineEntity("cedil", 184);
+ defineEntity("cent", 162);
+ defineEntity("chi", 967);
+ defineEntity("circ", 710);
+ defineEntity("clubs", 9827);
+ defineEntity("cong", 8773);
+ defineEntity("copy", 169);
+ defineEntity("crarr", 8629);
+ defineEntity("cup", 8746);
+ defineEntity("curren", 164);
+ defineEntity("dArr", 8659);
+ defineEntity("dagger", 8224);
+ defineEntity("darr", 8595);
+ defineEntity("deg", 176);
+ defineEntity("delta", 948);
+ defineEntity("diams", 9830);
+ defineEntity("divide", 247);
+ defineEntity("eacute", 233);
+ defineEntity("ecirc", 234);
+ defineEntity("egrave", 232);
+ defineEntity("empty", 8709);
+ defineEntity("emsp", 8195);
+ defineEntity("ensp", 8194);
+ defineEntity("epsilon", 949);
+ defineEntity("equiv", 8801);
+ defineEntity("eta", 951);
+ defineEntity("eth", 240);
+ defineEntity("euml", 235);
+ defineEntity("euro", 8364);
+ defineEntity("exist", 8707);
+ defineEntity("fnof", 402);
+ defineEntity("forall", 8704);
+ defineEntity("frac12", 189);
+ defineEntity("frac14", 188);
+ defineEntity("frac34", 190);
+ defineEntity("frasl", 8260);
+ defineEntity("gamma", 947);
+ defineEntity("ge", 8805);
+ defineEntity("gt", 62);
+ defineEntity("hArr", 8660);
+ defineEntity("harr", 8596);
+ defineEntity("hearts", 9829);
+ defineEntity("hellip", 8230);
+ defineEntity("iacute", 237);
+ defineEntity("icirc", 238);
+ defineEntity("iexcl", 161);
+ defineEntity("igrave", 236);
+ defineEntity("image", 8465);
+ defineEntity("infin", 8734);
+ defineEntity("int", 8747);
+ defineEntity("iota", 953);
+ defineEntity("iquest", 191);
+ defineEntity("isin", 8712);
+ defineEntity("iuml", 239);
+ defineEntity("kappa", 954);
+ defineEntity("lArr", 8656);
+ defineEntity("lambda", 955);
+ defineEntity("lang", 9001);
+ defineEntity("laquo", 171);
+ defineEntity("larr", 8592);
+ defineEntity("lceil", 8968);
+ defineEntity("ldquo", 8220);
+ defineEntity("le", 8804);
+ defineEntity("lfloor", 8970);
+ defineEntity("lowast", 8727);
+ defineEntity("loz", 9674);
+ defineEntity("lrm", 8206);
+ defineEntity("lsaquo", 8249);
+ defineEntity("lsquo", 8216);
+ defineEntity("lt", 60);
+ defineEntity("macr", 175);
+ defineEntity("mdash", 8212);
+ defineEntity("micro", 181);
+ defineEntity("middot", 183);
+ defineEntity("minus", 8722);
+ defineEntity("mu", 956);
+ defineEntity("nabla", 8711);
+ defineEntity("nbsp", 160);
+ defineEntity("ndash", 8211);
+ defineEntity("ne", 8800);
+ defineEntity("ni", 8715);
+ defineEntity("not", 172);
+ defineEntity("notin", 8713);
+ defineEntity("nsub", 8836);
+ defineEntity("ntilde", 241);
+ defineEntity("nu", 957);
+ defineEntity("oacute", 243);
+ defineEntity("ocirc", 244);
+ defineEntity("oelig", 339);
+ defineEntity("ograve", 242);
+ defineEntity("oline", 8254);
+ defineEntity("omega", 969);
+ defineEntity("omicron", 959);
+ defineEntity("oplus", 8853);
+ defineEntity("or", 8744);
+ defineEntity("ordf", 170);
+ defineEntity("ordm", 186);
+ defineEntity("oslash", 248);
+ defineEntity("otilde", 245);
+ defineEntity("otimes", 8855);
+ defineEntity("ouml", 246);
+ defineEntity("para", 182);
+ defineEntity("part", 8706);
+ defineEntity("permil", 8240);
+ defineEntity("perp", 8869);
+ defineEntity("phi", 966);
+ defineEntity("pi", 960);
+ defineEntity("piv", 982);
+ defineEntity("plusmn", 177);
+ defineEntity("pound", 163);
+ defineEntity("prime", 8242);
+ defineEntity("prod", 8719);
+ defineEntity("prop", 8733);
+ defineEntity("psi", 968);
+ defineEntity("quot", 34);
+ defineEntity("rArr", 8658);
+ defineEntity("radic", 8730);
+ defineEntity("rang", 9002);
+ defineEntity("raquo", 187);
+ defineEntity("rarr", 8594);
+ defineEntity("rceil", 8969);
+ defineEntity("rdquo", 8221);
+ defineEntity("real", 8476);
+ defineEntity("reg", 174);
+ defineEntity("rfloor", 8971);
+ defineEntity("rho", 961);
+ defineEntity("rlm", 8207);
+ defineEntity("rsaquo", 8250);
+ defineEntity("rsquo", 8217);
+ defineEntity("sbquo", 8218);
+ defineEntity("scaron", 353);
+ defineEntity("sdot", 8901);
+ defineEntity("sect", 167);
+ defineEntity("shy", 173);
+ defineEntity("sigma", 963);
+ defineEntity("sigmaf", 962);
+ defineEntity("sim", 8764);
+ defineEntity("spades", 9824);
+ defineEntity("sub", 8834);
+ defineEntity("sube", 8838);
+ defineEntity("sum", 8721);
+ defineEntity("sup", 8835);
+ defineEntity("sup1", 185);
+ defineEntity("sup2", 178);
+ defineEntity("sup3", 179);
+ defineEntity("supe", 8839);
+ defineEntity("szlig", 223);
+ defineEntity("tau", 964);
+ defineEntity("there4", 8756);
+ defineEntity("theta", 952);
+ defineEntity("thetasym", 977);
+ defineEntity("thinsp", 8201);
+ defineEntity("thorn", 254);
+ defineEntity("tilde", 732);
+ defineEntity("times", 215);
+ defineEntity("trade", 8482);
+ defineEntity("uArr", 8657);
+ defineEntity("uacute", 250);
+ defineEntity("uarr", 8593);
+ defineEntity("ucirc", 251);
+ defineEntity("ugrave", 249);
+ defineEntity("uml", 168);
+ defineEntity("upsih", 978);
+ defineEntity("upsilon", 965);
+ defineEntity("uuml", 252);
+ defineEntity("weierp", 8472);
+ defineEntity("xi", 958);
+ defineEntity("yacute", 253);
+ defineEntity("yen", 165);
+ defineEntity("yuml", 255);
+ defineEntity("zeta", 950);
+ defineEntity("zwj", 8205);
+ defineEntity("zwnj", 8204);
+ }
+
+ /**
+ * Crate a content model, consisting of the single
+ * element, specified by name.
+ */
+ private ContentModel model(String element)
+ {
+ return new ContentModel(getElement(element));
+ }
+
+ /**
+ * Crate a chain from the two content models,
+ * the last containing the given element and
+ * the specified unary operation.
+ */
+ private ContentModel model(String element, int unary)
+ {
+ ContentModel ct = model(element);
+ ct.type = unary;
+ return new ContentModel(0, ct);
+ }
+
+ /**
+ * Create the model HEAD, BODY
+ * @return
+ */
+ protected ContentModel createHtmlContentModel()
+ {
+ ContentModel head = model(HEAD);
+ ContentModel body = model(BODY);
+ head.next = body;
+ head.type = ',';
+ return head;
+ }
+
+ /**
+ * Create the model
+ * ( CAPTION ? , ( COL * | COLGROUP * ) , THEAD ? , TFOOT ? , TBODY + )
+ */
+ protected ContentModel createTableContentModel()
+ {
+ ContentModel col_colgroup = new ContentModel
+ ('|', model(COL,'*'), model(COLGROUP,'*') );
+
+ col_colgroup = new ContentModel('*', col_colgroup);
+ col_colgroup = new ContentModel(',', col_colgroup);
+
+ ContentModel caption = model(CAPTION,'?');
+ ContentModel thead = model(THEAD, '?');
+ ContentModel tfoot = model(TFOOT, '?');
+ ContentModel tbody = model(TBODY, '+');
+
+ caption.next = col_colgroup;
+ col_colgroup.next = thead;
+ thead.next = tfoot;
+ tfoot.next = tbody;
+
+ caption.type = col_colgroup.type = thead.type = tfoot.type =
+ tbody.type = ',';
+
+ return caption;
+ }
+
+ /**
+ * Creates a model for <DL> tag:
+ * <code> DT+ | DL+ </code>.
+ * @return
+ */
+ protected ContentModel createDefListModel()
+ {
+ ContentModel dt = model(DT, '+');
+ ContentModel dd = model(DD, '+');
+
+ dt.next = dd;
+ dt.type = dd.type = '|';
+ return dt;
+ }
+
+ /**
+ * This model is used for UL, OL, MENU and DIR.
+ * HTML 4.01 specifies LI only, but the nested
+ * list seems rendered correctly only if
+ * it is not enclosed into <LI>-</LI> of the
+ * parent list.
+ */
+ protected ContentModel createListModel()
+ {
+ ContentModel li = model(LI, '+');
+ ContentModel ul = model(UL, '+');
+ ContentModel ol = model(OL, '+');
+
+ li.next = ul;
+ ul.next = ol;
+ li.type = ul.type = ol.type = '|';
+ return li;
+ }
+
+}
--- /dev/null
+/* gnuDTD.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser;
+
+import java.io.PrintStream;
+import java.io.Serializable;
+
+import java.util.BitSet;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Vector;
+
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.ContentModel;
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.Entity;
+
+/**
+ * <p>
+ * The class is derived from {@link gnu.javax.swing.text.html.parser.DTD }
+ * making structure creation methods public. This is required when
+ * creating the DTD by SGML parser that must have access to the structure.
+ *
+ * SGML DTD representation. Provides basis for describing a syntax of the
+ * HTML documents. The fields of this class are NOT initialized in
+ * constructor. You need to do this separately before passing this data
+ * structure to the parser constructor.</p>
+ *
+ * <p>This implementation also provides you the derived class
+ * <code>gnu.javax.swing.text.html.parser.DTD.HTML_4_0_1</code>, where
+ * all fields are initialized to the values, representing HTML 4.01
+ * ("-//W3C//DTD HTML 4.01 Frameset//EN") DTD. You can use it if you do not care
+ * about the portability between different implementations of the core
+ * class libraries. </p>
+ * <p>Use {@link javax.swing.HTML.HTMLEditorKit.Parser#parse }
+ * for parsing in accordance with "-//W3C//DTD HTML 4.01 Frameset//EN"
+ * without specifying DTD separately.</p>
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class gnuDTD
+ extends javax.swing.text.html.parser.DTD
+ implements javax.swing.text.html.parser.DTDConstants, Serializable
+{
+ /* The undocumented element types, used to specify types, not defined
+ in DTDConstants. */
+
+ /**
+ * The URI element type (not defined in DTDConstants).
+ */
+ public static final int URI = 512;
+
+ /**
+ * The Length element type
+ */
+ public static final int Length = 513;
+
+ /**
+ * The Char element type
+ */
+ public static final int Char = 514;
+
+ /**
+ * The Color element type
+ */
+ public static final int Color = 515;
+
+ /**
+ * Creates a new instance of gnuDTD.
+ * @param name the name of the DTD.
+ */
+ public gnuDTD(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Creates and returns new attribute (not an attribute list).
+ * @param name the name of this attribute
+ * @param type the type of this attribute (FIXED, IMPLIED or
+ * REQUIRED from <code>DTDConstants</code>).
+ * @param modifier the modifier of this attribute
+ * @param default_value the default value of this attribute or null if
+ * it is not specified.
+ * @param allowed_values the allowed values of this attribute. The multiple
+ * possible values in this parameter are supposed to be separated by
+ * '|', same as in SGML DTD <code><!ATTLIST </code>tag. This parameter
+ * can be null if no list of allowed values is specified.
+ * @param atts the previous attribute of this element. This is
+ * placed to the field
+ * {@link javax.swing.text.html.parser.AttributeList#next },
+ * creating a linked list.
+ * @return
+ */
+ public AttributeList defAttributeList(String name, int type, int modifier,
+ String default_value,
+ String allowed_values,
+ AttributeList atts
+ )
+ {
+ return super.defAttributeList(name, type, modifier, default_value,
+ allowed_values, atts
+ );
+ }
+
+ /**
+ * Define the attributes for the element with the given name.
+ * If the element is not exist, it is created. This method is
+ * needed if the element attributes are defined befor the
+ * element itself.
+ * @param forElement
+ * @param attributes
+ */
+ public void defAttrsFor(String forElement, AttributeList attributes)
+ {
+ super.defineAttributes(forElement, attributes);
+ }
+
+ /**
+ * Creates a new content model.
+ * @param type specifies the BNF operation for this content model.
+ * The valid operations are documented in the
+ * {@link javax.swing.text.html.parser.ContentModel#type }.
+ * @param content the content of this content model
+ * @param next if the content model is specified by BNF-like
+ * expression, contains the rest of this expression.
+ * @return The newly created content model.
+ */
+ public ContentModel defContentModel(int type, Object content,
+ ContentModel next
+ )
+ {
+ return super.defContentModel(type, content, next);
+ }
+
+ /**
+ * Defines a new element and adds it to the element table.
+ * If the element alredy exists,
+ * overrides it settings with the specified values.
+ * @param name the name of the new element
+ * @param type the type of the element
+ * @param headless true if the element needs no starting tag
+ * @param tailless true if the element needs no closing tag
+ * @param content the element content.
+ * @param exclusions the elements that must be excluded from the
+ * content of this element, in all levels of the hierarchy.
+ * @param inclusions the elements that can be included as the
+ * content of this element.
+ * @param attributes the element attributes.
+ * @return the created or updated element.
+ */
+ public Element defElement(String name, int type, boolean headless,
+ boolean tailless, ContentModel content,
+ String[] exclusions, String[] inclusions,
+ AttributeList attributes
+ )
+ {
+ return super.defElement(name, type, headless, tailless, content,
+ exclusions, inclusions, attributes
+ );
+ }
+
+ /**
+ * Defines a new element and adds it to the element table.
+ * If the element alredy exists,
+ * overrides it settings with the specified values.
+ * @param name the name of the new element
+ * @param type the type of the element
+ * @param headless true if the element needs no starting tag
+ * @param tailless true if the element needs no closing tag
+ * @param content the element content.
+ * @param exclusions the elements that must be excluded from the
+ * content of this element, in all levels of the hierarchy.
+ * @param inclusions the elements that can be included as the
+ * content of this element.
+ * @param attributes the element attributes.
+ * @return the created or updated element.
+ */
+ public Element defElement(String name, int type, boolean headless,
+ boolean tailless, ContentModel content,
+ Collection exclusions, Collection inclusions,
+ AttributeList attributes
+ )
+ {
+ return super.defElement(name, type, headless, tailless, content,
+ toStringArray(exclusions),
+ toStringArray(inclusions), attributes
+ );
+ }
+
+ /**
+ * Defines a new element and adds it to the element table.
+ * If the element alredy exists,
+ * overrides it settings with the specified values.
+ * @param name the name of the new element
+ * @param type the type of the element
+ * @param headless true if the element needs no starting tag
+ * @param tailless true if the element needs no closing tag
+ * @param content the element content.
+ * @param exclusions the elements that must be excluded from the
+ * content of this element, in all levels of the hierarchy.
+ * @param inclusions the elements that can be included as the
+ * content of this element.
+ * @param attributes the element attributes (an array and not a
+ * linked list). The attributes are chained into the linked list
+ * inside this method.
+ * @return the created or updated element.
+ */
+ public Element defElement(String name, int type, boolean headless,
+ boolean tailless, ContentModel content,
+ String[] exclusions, String[] inclusions,
+ AttributeList[] attributes
+ )
+ {
+ AttributeList list;
+
+ if (attributes == null || attributes.length == 0)
+ list = null;
+ else
+ {
+ if (attributes.length > 1)
+ for (int i = 1; i < attributes.length; i++)
+ {
+ attributes [ i - 1 ].next = attributes [ i ];
+ }
+ list = attributes [ 0 ];
+ }
+
+ Element e =
+ super.defElement(name, type, headless, tailless, content, exclusions,
+ inclusions, list
+ );
+ return e;
+ }
+
+ /**
+ * Creates, adds into the internal table and returns the
+ * character entity like <code>&lt;</code>
+ * (means '<code><</code>' );
+ * This method inactivates the recursive refenrences to the same
+ * entity.
+ * @param name The entity name (without heading & and closing ;)
+ * @param type The entity type
+ * @param character The entity value (single character)
+ * @return The created entity
+ */
+ public Entity defEntity(String name, int type, String data)
+ {
+ int r;
+ String eref = "%" + name + ";";
+ do
+ {
+ r = data.indexOf(eref);
+ if (r > 0)
+ {
+ data = data.substring(0, r) + data.substring(r + 1);
+ }
+ }
+ while (r > 0);
+
+ return super.defEntity(name, type, data);
+ }
+
+ /**
+ * Summarises the document content into the given PrintStream.
+ */
+ public void dump(PrintStream p)
+ {
+ Iterator iter = entityHash.entrySet().iterator();
+ while (iter.hasNext())
+ {
+ Map.Entry item = (Map.Entry) iter.next();
+ Entity e = (Entity) item.getValue();
+ if (e.isGeneral())
+ p.println("Entity " + e.getName() + ": " + e.getString());
+ }
+
+ iter = elementHash.entrySet().iterator();
+ while (iter.hasNext())
+ {
+ Map.Entry item = (Map.Entry) iter.next();
+ Element e = (Element) item.getValue();
+ p.println("Element " + e.getName());
+
+ System.out.println(" includes:");
+ dump(e.inclusions);
+ System.out.println(" excludes:");
+ dump(e.exclusions);
+ System.out.println(" attributes:");
+
+ AttributeList atts = e.atts;
+ while (atts != null)
+ {
+ p.print(" " + atts.name + " = " + atts.value);
+ if (atts.values == null || atts.values.size() == 0)
+ p.println();
+ else
+ {
+ Iterator viter = atts.values.iterator();
+ System.out.print(" ( ");
+ while (viter.hasNext())
+ {
+ System.out.print(viter.next());
+ if (viter.hasNext())
+ System.out.print(" | ");
+ }
+ System.out.println(" ) ");
+ }
+ atts = atts.next;
+ }
+ }
+ }
+
+ /**
+ * Prints the content of the given attribute set to the System.out.
+ * @param b
+ */
+ public void dump(BitSet b)
+ {
+ if (b != null)
+ {
+ for (int i = 0; i < b.size(); i++)
+ {
+ if (b.get(i))
+ System.out.println(" " + elements.get(i));
+ }
+ }
+ else
+ System.out.println(" NULL set");
+ }
+
+ /**
+ * Creates the attribute.
+ * @param name The attribute name.
+ * @param type The attribute type.
+ * @param modifier The attribute modifier.
+ * @param defaultValue Default value (or null)
+ * @param allowed_values Allowed values (or null)
+ * @return The newly created AttributeList. The <code>next</code>
+ * field is initialized to null.
+ */
+ protected AttributeList attr(String name, String default_value,
+ String[] allowed_values, int type, int modifier
+ )
+ {
+ Vector allowed = null;
+
+ if (allowed_values != null)
+ {
+ allowed = new Vector(allowed_values.length);
+ for (int i = 0; i < allowed_values.length; i++)
+ {
+ allowed.add(allowed_values [ i ]);
+ }
+ }
+ ;
+
+ AttributeList attr =
+ new AttributeList(name, type, modifier, default_value, allowed, null);
+
+ return attr;
+ }
+
+ /**
+ * Define the general entity, holding a single character.
+ * @param name The entity name (for example, 'amp').
+ * The defined entity <b>is</b> stored into the entity table.
+ * @param character The entity character (for example, '&').
+ */
+ protected void defineEntity(String name, int character)
+ {
+ super.defEntity(name, GENERAL, character);
+ }
+
+ private String[] toStringArray(Collection c)
+ {
+ String[] s = new String[ c.size() ];
+ Iterator iter = c.iterator();
+ for (int i = 0; i < s.length; i++)
+ {
+ s [ i ] = iter.next().toString();
+ }
+ return s;
+ }
+}
--- /dev/null
+/* htmlAttributeSet.java -- A set to store HTML attributes
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser;
+
+import java.util.Enumeration;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+
+/**
+ * A set, adapted to store HTML attributes.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class htmlAttributeSet
+ extends SimpleAttributeSet
+{
+ public static final htmlAttributeSet EMPTY_HTML_ATTRIBUTE_SET =
+ new htmlAttributeSet();
+ AttributeSet parent;
+
+ /**
+ * Looks in this set and, if not found, later looks in the parent set.
+ * Calls toString(), allowing to pass as HTML.Attribute, as String
+ * to this method.
+ * @param key A key to search for a value.
+ * @return The value, if one is defined.
+ */
+ public Object getAttribute(Object _key)
+ {
+ Object key = _key.toString().toLowerCase();
+
+ Object v = super.getAttribute(key);
+ if (v != null)
+ return v;
+ else if (parent != null)
+ return parent.getAttribute(key);
+ else
+ return null;
+ }
+
+ /**
+ * The name set must return HTML.Attribute and not a string,
+ * where applicable.
+ */
+ public Enumeration getAttributeNames()
+ {
+ // Replace the string keys by HTML.attribute, where applicable
+ final Enumeration enumeration = super.getAttributeNames();
+
+ return new Enumeration()
+ {
+ public boolean hasMoreElements()
+ {
+ return enumeration.hasMoreElements();
+ }
+
+ public Object nextElement()
+ {
+ Object key = enumeration.nextElement();
+ HTML.Attribute hKey = HTML.getAttributeKey((String) key);
+ if (hKey != null)
+ return hKey;
+ else
+ return key;
+ }
+ };
+ }
+
+ /**
+ * Set the parent set, containing the default values.
+ * @param a_parent
+ */
+ public void setResolveParent(AttributeSet a_parent)
+ {
+ parent = a_parent;
+ }
+
+ /**
+ * Get the parent set, containing the default values.
+ * @return
+ */
+ public AttributeSet getResolveParent()
+ {
+ return parent;
+ }
+
+ /**
+ * Add the attribute to this attribute set.
+ * @param key Attribute key (will be case insensitive)
+ * @param value Attribute value
+ */
+ public void addAttribute(Object key, Object value)
+ {
+ super.addAttribute(key.toString().toLowerCase(), value);
+ }
+}
--- /dev/null
+/* tagStack.java -- The HTML tag stack.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.models.node;
+import gnu.javax.swing.text.html.parser.models.transformer;
+
+import java.util.BitSet;
+import java.util.Enumeration;
+import java.util.LinkedList;
+import java.util.ListIterator;
+
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.*;
+
+/**
+ * <p>The HTML content validator, is responsible for opening and
+ * closing elements with optional start/end tags, detecting
+ * the wrongly placed html tags and reporting errors. The working instance
+ * is the inner class inside the {@link javax.swing.text.html.parser.Parser }
+ * </p>
+ * <p>This class could potentially
+ * provide basis for automated closing and insertion of the html tags,
+ * correcting the found html errors.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public abstract class htmlValidator
+{
+ /**
+ * The tag reference, holding additional information that the tag
+ * has been forcibly closed.
+ */
+ protected class hTag
+ {
+ protected final Element element;
+ protected final HTML.Tag tag;
+ protected final TagElement tgElement;
+ protected boolean forcibly_closed;
+ protected node validationTrace;
+
+ protected hTag(TagElement an_element)
+ {
+ element = an_element.getElement();
+ tag = an_element.getHTMLTag();
+ tgElement = an_element;
+
+ if (element.content != null)
+ validationTrace = transformer.transform(element.content, dtd);
+ }
+
+ /**
+ * This is called when the tag must be forcibly closed because
+ * it would make the newly appearing tag invalid.
+ * The parser is not notified about such event (just the error
+ * is reported). For such tags, the closing message does not
+ * appear when later reaching the end of stream. The exception is
+ * the <head> tag: the parser is notified about its silent closing
+ * when <body> or other html content appears.
+ */
+ protected void forciblyCloseDueContext()
+ {
+ forcibly_closed = true;
+ }
+
+ /**
+ * This is called when the tag must be forcibly closed after
+ * reaching the end of stream. The parser is notified as if
+ * closing the tag explicitly.
+ */
+ protected void forciblyCloseDueEndOfStream()
+ {
+ forcibly_closed = true;
+ handleSupposedEndTag(element);
+ }
+ }
+
+ /**
+ * The DTD, providing information about the valid document structure.
+ */
+ protected final DTD dtd;
+
+ /**
+ * The stack, holding the current tag context.
+ */
+ protected final LinkedList stack = new LinkedList();
+
+ /**
+ * Creates a new tag stack, using the given DTD.
+ * @param a_dtd A DTD, providing the information about the valid
+ * tag content.
+ */
+ public htmlValidator(DTD a_dtd)
+ {
+ dtd = a_dtd;
+ }
+
+ /**
+ * Close all opened tags (called at the end of parsing).
+ */
+ public void closeAll()
+ {
+ hTag h;
+ while (!stack.isEmpty())
+ {
+ h = (hTag) stack.getLast();
+ if (!h.forcibly_closed && !h.element.omitEnd())
+ s_error("Unclosed <" + h.tag + ">, closing at the end of stream");
+
+ handleSupposedEndTag(h.element);
+
+ closeTag(h.tgElement);
+ }
+ }
+
+ /**
+ * Remove the given tag from the stack or (if found) from the list
+ * of the forcibly closed tags.
+ */
+ public void closeTag(TagElement tElement)
+ {
+ HTML.Tag tag = tElement.getHTMLTag();
+ hTag x;
+ hTag close;
+
+ if (!stack.isEmpty())
+ {
+ ListIterator iter = stack.listIterator(stack.size());
+
+ while (iter.hasPrevious())
+ {
+ x = (hTag) iter.previous();
+ if (tag.equals(x.tag))
+ {
+ if (x.forcibly_closed && !x.element.omitEnd())
+ s_error("The tag <" + x.tag +
+ "> has already been forcibly closed"
+ );
+
+
+ // If the tag has a content model defined, forcibly close all
+ // tags that were opened after the tag being currently closed.
+ closing:
+ if (x.element.content != null)
+ {
+ iter = stack.listIterator(stack.size());
+ while (iter.hasPrevious())
+ {
+ close = (hTag) iter.previous();
+ if (close == x)
+ break closing;
+ handleSupposedEndTag(close.element);
+ iter.remove();
+ }
+ }
+
+ stack.remove(x);
+ return;
+ }
+ }
+ }
+ s_error("Closing unopened <" + tag + ">");
+ }
+
+ /**
+ * Add the given HTML tag to the stack of the opened tags. Forcibly closes
+ * all tags in the stack that does not allow this tag in they content (error
+ * is reported).
+ * @param element
+ */
+ public void openTag(TagElement tElement, htmlAttributeSet parameters)
+ {
+ // If this is a fictional call, the message from the parser
+ // has recursively returned - ignore.
+ if (tElement.fictional())
+ return;
+
+ validateParameters(tElement, parameters);
+
+ // If the stack is empty, start from HTML
+ if (stack.isEmpty() && tElement.getHTMLTag() != HTML.Tag.HTML)
+ {
+ Element html = dtd.getElement(HTML.Tag.HTML.toString());
+ openFictionalTag(html);
+ }
+
+ Object v = tagIsValidForContext(tElement);
+ if (v != Boolean.TRUE)
+ {
+ // The tag is not valid for context, the content
+ // model suggest to open another tag.
+ if (v instanceof Element)
+ {
+ int n = 0;
+ while (v instanceof Element && (n++ < 100))
+ {
+ Element fe = (Element) v;
+
+ // notify the content model that we add the proposed tag
+ getCurrentContentModel().show(fe);
+ openFictionalTag(fe);
+
+ Object vv = tagIsValidForContext(tElement);
+ if (vv instanceof Element) // One level of nesting is supported.
+ {
+ openFictionalTag((Element) vv);
+
+ Object vx = tagIsValidForContext(tElement);
+ if (vx instanceof Element)
+ openFictionalTag((Element) vx);
+ }
+ else if (vv == Boolean.FALSE)
+ {
+ // The tag is still not valid for the current
+ // content after opening a fictional element.
+ if (fe.omitEnd())
+ {
+ // close the previously opened fictional tag.
+ closeLast();
+ vv = tagIsValidForContext(tElement);
+ if (vv instanceof Element)
+
+ // another tag was suggested by the content model
+ openFictionalTag((Element) vv);
+ }
+ }
+ v = tagIsValidForContext(tElement);
+ }
+ }
+ else // If the current element has the optional end tag, close it.
+ {
+ if (!stack.isEmpty())
+ {
+ closing:
+ do
+ {
+ hTag last = (hTag) stack.getLast();
+ if (last.element.omitEnd())
+ {
+ closeLast();
+ v = tagIsValidForContext(tElement);
+ if (v instanceof Element) // another tag was suggested by the content model
+ {
+ openFictionalTag((Element) v);
+ break closing;
+ }
+ }
+ else
+ break closing;
+ }
+ while (v == Boolean.FALSE && !stack.isEmpty());
+ }
+ }
+ }
+
+ stack.add(new hTag(tElement));
+ }
+
+ /**
+ * Clear the stack.
+ */
+ public void restart()
+ {
+ stack.clear();
+ }
+
+ /**
+ * Check if this tag is valid for the current context.
+ * Return Boolean.True if it is OK, Boolean.False
+ * if it is surely not OK or the Element that the
+ * content model recommends to insert making the situation
+ * ok. If Boolean.True is returned, the content model current
+ * position is moved forward. Otherwise this position remains
+ * the same.
+ * @param tElement
+ * @return
+ */
+ public Object tagIsValidForContext(TagElement tElement)
+ {
+ // Check the current content model, if one is available.
+ node cv = getCurrentContentModel();
+
+ if (cv != null)
+ return cv.show(tElement.getElement());
+
+ // Check exclusions and inclusions.
+ ListIterator iter = stack.listIterator(stack.size());
+ hTag t;
+ final int idx = tElement.getElement().index;
+
+ // Check only known tags.
+ if (idx >= 0)
+ {
+ BitSet inclusions = new BitSet();
+ while (iter.hasPrevious())
+ {
+ t = (hTag) iter.previous();
+ if (!t.forcibly_closed)
+ {
+ if (t.element.exclusions != null &&
+ t.element.exclusions.get(idx)
+ )
+ return Boolean.FALSE;
+
+ if (t.element.inclusions != null)
+ inclusions.or(t.element.inclusions);
+ }
+ }
+ if (!inclusions.get(idx))
+ return Boolean.FALSE;
+ }
+ return Boolean.TRUE;
+ }
+
+ /**
+ * Validate tag without storing in into the tag stack. This is called
+ * for the empty tags and results the subsequent calls to the openTag
+ * and closeTag.
+ */
+ public void validateTag(TagElement tElement, htmlAttributeSet parameters)
+ {
+ openTag(tElement, parameters);
+ closeTag(tElement);
+ }
+
+ /**
+ * Check for mandatory elements, subsequent to the last tag:
+ * @param tElement The element that will be inserted next.
+ */
+ protected void checkContentModel(TagElement tElement, boolean first)
+ {
+ if (stack.isEmpty())
+ return;
+
+ hTag last = (hTag) stack.getLast();
+ if (last.validationTrace == null)
+ return;
+
+ Object r = last.validationTrace.show(tElement.getElement());
+ if (r == Boolean.FALSE)
+ s_error("The <" + last.element + "> does not match the content model " +
+ last.validationTrace
+ );
+ else if (r instanceof Element) // The content model recommends insertion of this element
+ {
+ if (!first)
+ closeTag(last.tgElement);
+ handleSupposedStartTag((Element) r);
+ openTag(new TagElement((Element) r), null);
+ }
+ }
+
+ /**
+ * The method is called when the tag must be closed because
+ * it does not allow the subsequent elements inside its context
+ * or the end of stream has been reached. The parser is only
+ * informed if the element being closed does not require the
+ * end tag (the "omitEnd" flag is set).
+ * The closing message must be passed to the parser mechanism
+ * before passing message about the opening the next tag.
+ *
+ * @param element The tag being fictionally (forcibly) closed.
+ */
+ protected abstract void handleSupposedEndTag(Element element);
+
+ /**
+ * The method is called when the validator decides to open the
+ * tag on its own initiative. This may happen if the content model
+ * includes the element with the optional (supposed) start tag.
+ *
+ * @param element The tag being opened.
+ */
+ protected abstract void handleSupposedStartTag(Element element);
+
+ /**
+ * Handles the error message. This method must be overridden to pass
+ * the message where required.
+ * @param msg The message text.
+ */
+ protected abstract void s_error(String msg);
+
+ /**
+ * Validate the parameters, report the error if the given parameter is
+ * not in the parameter set, valid for the given attribute. The information
+ * about the valid parameter set is taken from the Element, enclosed
+ * inside the tag. The method does not validate the default parameters.
+ * @param tag The tag
+ * @param parameters The parameters of this tag.
+ */
+ protected void validateParameters(TagElement tag, htmlAttributeSet parameters)
+ {
+ if (parameters == null ||
+ parameters == htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET ||
+ parameters == SimpleAttributeSet.EMPTY
+ )
+ return;
+
+ Enumeration enumeration = parameters.getAttributeNames();
+
+ while (enumeration.hasMoreElements())
+ {
+ validateAttribute(tag, parameters, enumeration);
+ }
+
+ // Check for missing required values.
+ AttributeList a = tag.getElement().getAttributes();
+
+ while (a != null)
+ {
+ if (a.getModifier() == DTDConstants.REQUIRED)
+ if (parameters.getAttribute(a.getName()) == null)
+ {
+ s_error("Missing required attribute '" + a.getName() + "' for <" +
+ tag.getHTMLTag() + ">"
+ );
+ }
+ a = a.next;
+ }
+ }
+
+ private node getCurrentContentModel()
+ {
+ if (!stack.isEmpty())
+ {
+ hTag last = (hTag) stack.getLast();
+ return last.validationTrace;
+ }
+ else
+ return null;
+ }
+
+ private void closeLast()
+ {
+ handleSupposedEndTag(((hTag) stack.getLast()).element);
+ stack.removeLast();
+ }
+
+ private void openFictionalTag(Element e)
+ {
+ handleSupposedStartTag(e);
+ stack.add(new hTag(new TagElement(e, true)));
+ if (!e.omitStart())
+ s_error("<" + e + "> is expected (supposing it)");
+ }
+
+ private void validateAttribute(TagElement tag, htmlAttributeSet parameters,
+ Enumeration enumeration
+ )
+ {
+ Object foundAttribute;
+ AttributeList dtdAttribute;
+ foundAttribute = enumeration.nextElement();
+ dtdAttribute = tag.getElement().getAttribute(foundAttribute.toString());
+ if (dtdAttribute == null)
+ {
+ StringBuffer valid =
+ new StringBuffer("The tag <" + tag.getHTMLTag() +
+ "> cannot contain the attribute '" + foundAttribute +
+ "'. The valid attributes for this tag are: "
+ );
+
+ AttributeList a = tag.getElement().getAttributes();
+
+ while (a != null)
+ {
+ valid.append(a.name.toUpperCase());
+ valid.append(' ');
+ a = a.next;
+ }
+ s_error(valid.toString());
+ }
+
+ else
+ {
+ String value = parameters.getAttribute(foundAttribute).toString();
+
+ if (dtdAttribute.type == DTDConstants.NUMBER)
+ validateNumberAttribute(tag, foundAttribute, value);
+
+ if (dtdAttribute.type == DTDConstants.NAME ||
+ dtdAttribute.type == DTDConstants.ID
+ )
+ validateNameOrIdAttribute(tag, foundAttribute, value);
+
+ if (dtdAttribute.values != null)
+ validateAttributeWithValueList(tag, foundAttribute, dtdAttribute,
+ value
+ );
+ }
+ }
+
+ private void validateAttributeWithValueList(TagElement tag,
+ Object foundAttribute,
+ AttributeList dtdAttribute,
+ String value
+ )
+ {
+ if (!dtdAttribute.values.contains(value.toLowerCase()) &&
+ !dtdAttribute.values.contains(value.toUpperCase())
+ )
+ {
+ StringBuffer valid;
+ if (dtdAttribute.values.size() == 1)
+ valid =
+ new StringBuffer("The attribute '" + foundAttribute +
+ "' of the tag <" + tag.getHTMLTag() +
+ "> cannot have the value '" + value +
+ "'. The only valid value is "
+ );
+ else
+ valid =
+ new StringBuffer("The attribute '" + foundAttribute +
+ "' of the tag <" + tag.getHTMLTag() +
+ "> cannot have the value '" + value + "'. The " +
+ dtdAttribute.values.size() +
+ " valid values are: "
+ );
+
+ Enumeration vv = dtdAttribute.values.elements();
+ while (vv.hasMoreElements())
+ {
+ valid.append('"');
+ valid.append(vv.nextElement());
+ valid.append("\" ");
+ }
+ s_error(valid.toString());
+ }
+ }
+
+ private void validateNameOrIdAttribute(TagElement tag, Object foundAttribute,
+ String value
+ )
+ {
+ boolean ok = true;
+
+ if (!Character.isLetter(value.charAt(0)))
+ ok = false;
+
+ char c;
+ for (int i = 0; i < value.length(); i++)
+ {
+ c = value.charAt(i);
+ if (!(
+ Character.isLetter(c) || Character.isDigit(c) ||
+ "".indexOf(c) >= 0
+ )
+ )
+ ok = false;
+ }
+ if (!ok)
+ s_error("The '" + foundAttribute + "' attribute of the tag <" +
+ tag.getHTMLTag() + "> must start from letter and consist of " +
+ "letters, digits, hypens, colons, underscores and periods. " +
+ "It cannot be '" + value + "'"
+ );
+ }
+
+ private void validateNumberAttribute(TagElement tag, Object foundAttribute,
+ String value
+ )
+ {
+ try
+ {
+ Integer.parseInt(value);
+ }
+ catch (NumberFormatException ex)
+ {
+ s_error("The '" + foundAttribute + "' attribute of the tag <" +
+ tag.getHTMLTag() + "> must be a valid number and not '" +
+ value + "'"
+ );
+ }
+ }
+}
--- /dev/null
+/* PCDATAonly_model.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+/**
+ * The model, allowing only PCDATA in it (like for element OPTION).
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class PCDATAonly_model
+ extends node
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+
+ public PCDATAonly_model()
+ {
+ super((char) 0, (char) 0, null);
+ }
+
+ public Object show(Object x)
+ {
+ return x.toString().equalsIgnoreCase("#pcdata") ? Boolean.TRUE : Boolean.FALSE;
+ }
+}
--- /dev/null
+/* TableRowContentModel.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.Element;
+
+/**
+ * Table row content model.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class TableRowContentModel
+ extends node
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+ final Element TD;
+
+ public TableRowContentModel(DTD dtd)
+ {
+ super((char) 0, (char) 0, null);
+ TD = dtd.getElement("TD");
+ }
+
+ public Object show(Object x)
+ {
+ // Always accept TD and TH
+ String s = x.toString();
+ if (s.equalsIgnoreCase("TD") || s.equalsIgnoreCase("TH"))
+ return Boolean.TRUE;
+
+ // Suggest closing in response to TR:
+ if (s.equalsIgnoreCase("TR"))
+ return Boolean.FALSE;
+
+ // Recommend TD for other cases:
+ return TD;
+ }
+}
--- /dev/null
+/* list.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+/**
+ * Part of the internal representation of the content model.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class list
+ extends node
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+
+ /**
+ * Setting to true means that the list nodes must always be connected
+ * by the same operation. This is far safer and clearer, but not
+ * required by default standard.
+ */
+ public static boolean CLEAR;
+
+ /**
+ * A list of nodes.
+ */
+ public final node[] nodes;
+
+ /**
+ * Creates a new model list that is a member of some enclosing list.
+ * @param binary_operator An operator with that this list is connected
+ * with other members of the enclosing list.
+ * @param unary_operator The unary operator for this list.
+ * @param a_nodes The nodes inside this list.
+ */
+ public list(char binary_operator, char unary_operator, node[] a_nodes)
+ {
+ super(binary_operator, unary_operator, a_nodes);
+ nodes = a_nodes;
+ }
+
+ /**
+ * Creates a new model list. Assigns the previous field.
+ * @param a_nodes The nodes for this list.
+ * @throws an error if the node elements are connected by the
+ * different operations. This is not supported, use grouping.
+ */
+ public list(node[] a_nodes)
+ throws Error
+ {
+ this(',', (char) 0, a_nodes);
+
+ int operation = nodes [ 0 ].binary;
+
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (CLEAR && nodes [ i ].binary != operation)
+ throw new Error("List members can only be connected by " +
+ "the same operation, use grouping"
+ );
+
+ if (i > 0)
+ nodes [ i ].previous = nodes [ i - 1 ];
+ }
+ }
+
+ /**
+ * Returns true if all members in the list are closed.
+ */
+ public boolean isClosed()
+ {
+ if (super.isClosed())
+ return true;
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (!nodes [ i ].isClosed())
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Find the token that could match as the next token in
+ * the token list.
+ *
+ * @return Such token object or null if none is found.
+ */
+ public Object findFreeNode()
+ {
+ Object fn;
+ for (int j = 0; j < nodes.length; j++)
+ {
+ if (!nodes [ j ].isClosed())
+ {
+ fn = nodes [ j ].findFreeNode();
+ if (fn != null)
+ return fn;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Tries to match this list agains the given token sequence.
+ * @param tokens the sequence of the tokens to match.
+ * @return true if the valid match is found.
+ */
+ public boolean matches(Object[] tokens)
+ {
+ reset();
+
+ Object x;
+ boolean m;
+ boolean matched = false;
+
+ for (int i = 0; i < tokens.length; i++)
+ {
+ matched = false;
+ x = tokens [ i ];
+
+ nodescan:
+ for (int j = 0; j < nodes.length; j++)
+ {
+ if (!nodes [ j ].isClosed())
+ {
+ m = nodes [ j ].performMatch(x);
+
+ if (m)
+ {
+ matched = true;
+ break nodescan;
+ }
+ }
+ }
+ if (!matched)
+ return false;
+ }
+
+ boolean valid = true;
+
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (!nodes [ i ].valid())
+ valid = false;
+ }
+
+ return valid;
+ }
+
+ /**
+ * The list never closes, despite it is trated as closed
+ * if all members in the list are closed.
+ * @return false.
+ */
+ public boolean mustClose()
+ {
+ return false;
+ }
+
+ /**
+ * Perform a match operation for the single token
+ * against this list.
+ * @param token a token to match.
+ * @return true if the match is found.
+ */
+ public boolean performMatch(Object token)
+ {
+ boolean ok = false;
+ Matching:
+ for (int i = 0; i < nodes.length; i++)
+ {
+ ok = nodes [ i ].performMatch(token);
+
+ if (ok)
+ break Matching;
+ }
+
+ if (ok)
+ matches();
+
+ return ok;
+ }
+
+ /**
+ * Prepeares the list for the next matching operation.
+ */
+ public void reset()
+ {
+ super.reset();
+ for (int i = 0; i < nodes.length; i++)
+ nodes [ i ].reset();
+ }
+
+ /**
+ * Check if the provided token can match as a next token in the
+ * list. In the case of match, the list state changes, moving
+ * current position after the matched token. However if this method
+ * returns a suggested new token to insert before the provided one,
+ * the state of the list does not change.
+ * @return Boolean.TRUE if the match is found,
+ * Boolean.FALSE if the match is not possible and no token can be
+ * inserted to make the match valid. Otherwise, returns the
+ * token object that can be inserted before the last token in the
+ * list, probably (not for sure) making the match valid.
+ * If the object is an instance of Element or TagElement,
+ * it is first ensured that the object flag "omit start" is set.
+ */
+ public Object show(Object x)
+ {
+ boolean m;
+ boolean matched = false;
+
+ nodescan:
+ for (int j = 0; j < nodes.length; j++)
+ {
+ if (!nodes [ j ].isClosed())
+ {
+ m = nodes [ j ].performMatch(x);
+
+ if (m)
+ {
+ matched = true;
+ break nodescan;
+ }
+ else
+ {
+ // For comma operation, only first not closed
+ // node must be tested for a match.
+ // unless it allows matching zero times.
+ if (binary == ',' &&
+ !(nodes [ j ].unary == '?' || nodes [ j ].unary == '*')
+ )
+ break nodescan;
+ }
+ }
+ }
+
+ if (!matched)
+ {
+ // Find and return that would be matched.
+ Object freeNode = findFreeNode();
+ if (freeNode == null)
+ return Boolean.FALSE;
+ else
+ return freeNode;
+ }
+
+ for (int i = 0; i < nodes.length; i++)
+ if (!nodes [ i ].validPreliminary())
+ {
+ return Boolean.FALSE;
+ }
+
+ return Boolean.TRUE;
+ }
+
+ /**
+ * Returns a string representation of the list.
+ * @return String representation, similar to BNF expression.
+ */
+ public String toString()
+ {
+ StringBuffer b = new StringBuffer();
+ b.append(" ( ");
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (i > 0)
+ b.append(" " + (char) nodes [ i ].binary + " ");
+ b.append(nodes [ i ]);
+ }
+
+ b.append(" )");
+ if (unary != 0)
+ b.append((char) unary);
+ else
+ b.append(' ');
+ return b.toString();
+ }
+
+ /**
+ * Returns true if all memebers in the list are valid.
+ */
+ public boolean valid()
+ {
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (!nodes [ i ].valid())
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Returns true if all memebers in the list are either valid
+ * or unvisited. The unvisited members can become valid after
+ * more tokens will be shown.
+ */
+ public boolean validPreliminary()
+ {
+ if (silenceAllowed())
+ {
+ boolean everVisited = false;
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (nodes [ i ].visits > 0)
+ {
+ everVisited = true;
+ break;
+ }
+ }
+ if (!everVisited)
+ return true;
+ }
+
+ for (int i = 0; i < nodes.length; i++)
+ {
+ if (!nodes [ i ].validPreliminary())
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Closes all members in the list.
+ */
+ protected void close()
+ {
+ super.close();
+ for (int i = 0; i < nodes.length; i++)
+ {
+ nodes [ i ].close();
+ }
+ }
+
+ /**
+ * Compare given token with the token of this node.
+ * If the token represents a <code>list</code>, the call may be
+ * delegeted to the child subnodes.
+ * @param a_token A token to compare.
+ * @return True if the token matches the token of this node.
+ */
+ protected boolean compare(Object a_token)
+ {
+ return performMatch(a_token);
+ }
+}
--- /dev/null
+/* noTagModel.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+/**
+ * Disallows a single given tag at the current content level only.
+ * <p>@author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)</p>
+ */
+public class noTagModel
+ extends node
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+ final String[] no;
+
+ public noTagModel(String[] noTag)
+ {
+ super((char) 0, (char) 0, null);
+ no = noTag;
+ }
+
+ public noTagModel(String noTag)
+ {
+ super((char) 0, (char) 0, null);
+ no = new String[] { noTag };
+ }
+
+ public Object show(Object x)
+ {
+ for (int i = 0; i < no.length; i++)
+ {
+ if (x.toString().equalsIgnoreCase(no [ i ]))
+ return Boolean.FALSE;
+ }
+ return Boolean.TRUE;
+ }
+}
--- /dev/null
+/* node.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+/**
+ * Part of the internal representation of the content model.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class node
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+
+ /**
+ * The token to match (can be instance of list).
+ */
+ public Object token;
+
+ /**
+ * True for the node that cannot be visited again.
+ */
+ public boolean _closed;
+
+ /**
+ * The binary operation for this node.
+ */
+ public char binary;
+
+ /**
+ * The unary opeation for this node.
+ */
+ public char unary;
+
+ /**
+ * The number of times the node already was visited.
+ */
+ public int visits;
+
+ /**
+ * The previous node in content model (used for closing nodes).
+ */
+ public node previous;
+
+ /**
+ * Creates a new node.
+ * @param binary_operator The operator, connecting all nodes in the list.
+ * The nodes, connected by the different operators, must be arranged into
+ * the different lists.
+ * @param unary_operator The unary operator for this node or zero if
+ * no such was specified.
+ * @param token The token to match. This can be either a string or
+ * the new instance of the list.
+ * @param a_previous The previous node in the list, null for the first
+ * node. This is used for propagating the closing operation for the
+ * comma delimited list.
+ */
+ public node(char binary_operator, char unary_operator, Object a_token)
+ {
+ if (a_token != null)
+ if (a_token.getClass().equals(node.class))
+ throw new Error("Creating node in node is redundant and ineffective.");
+
+ binary = binary_operator;
+ unary = unary_operator;
+ token = a_token;
+ }
+
+ /**
+ * Checks if this node is in the closed state.
+ * @return True if the node is closed.
+ */
+ public boolean isClosed()
+ {
+ return _closed;
+ }
+
+ /**
+ * Check if closing this node means closing the previous node.
+ */
+ public boolean closePrevious()
+ {
+ return binary == ',';
+ }
+
+ /**
+ * Return the token object if it could match as a next token in
+ * a token list of null if it could not.
+ * @return
+ */
+ public Object findFreeNode()
+ {
+ boolean ok;
+ if (isClosed() || silenceAllowed())
+ return null;
+
+ // Try if the node would stay valid after a one more visit.
+ visits++;
+ ok = valid();
+ visits--;
+
+ if (ok)
+ {
+ if (token instanceof node)
+ return ((node) token).findFreeNode();
+ else
+ return token;
+ }
+ else
+ return null;
+ }
+
+ /**
+ * Check if the current situation is such that the node must be closed
+ * now.
+ */
+ public boolean mustClose()
+ {
+ switch (unary)
+ {
+ case 0 :
+ return true;
+
+ case '*' :
+ return false;
+
+ case '+' :
+ return false;
+
+ case '?' :
+ return visits <= 1;
+
+ default :
+ throw new Error("Invalid unary operation " + unary + " ( '" +
+ (char) unary + "' )"
+ );
+ }
+ }
+
+ /**
+ * Do the match operation with the given token. This sets various
+ * flags.
+ * @param token The token to match.
+ * @return true if the the token matches node, false if it does not match
+ * or if the node is closed.
+ */
+ public boolean performMatch(Object a_token)
+ {
+ if (isClosed())
+ return false;
+
+ boolean matches = compare(a_token);
+ if (matches)
+ matches();
+
+ return matches;
+ }
+
+ /**
+ * Prepares the node for matching against a new list of tokens.
+ */
+ public void reset()
+ {
+ _closed = false;
+ visits = 0;
+ }
+
+ /**
+ * Check if the provided token can match this node.
+ * In the case of match, the node state changes, moving
+ * current position after the matched token. However if this method
+ * returns a suggested new token to insert before the provided one,
+ * the state of the list does not change.
+ * @return Boolean.TRUE if the match is found,
+ * Boolean.FALSE if the match is not possible and no token can be
+ * inserted to make the match valid. Otherwise, returns the
+ * token object that can be inserted before the last token in the
+ * list, probably (not for sure) making the match valid.
+ */
+ public Object show(Object x)
+ {
+ if (compare(x))
+ return performMatch(x) ? Boolean.TRUE : Boolean.FALSE;
+
+ Object recommended = findFreeNode();
+ return recommended != null ? recommended : Boolean.FALSE;
+ }
+
+ /**
+ * Check if it would be a valid case if this node is visited zero times.
+ * Nodes with unary operator * or ? need not be matched to make a
+ * model valid.
+ */
+ public boolean silenceAllowed()
+ {
+ return unary == '?' || unary == '*';
+ }
+
+ /**
+ * Returns a string representation of the list.
+ * @return String representation, similar to BNF expression.
+ */
+ public String toString()
+ {
+ StringBuffer b = new StringBuffer();
+
+ b.append(token);
+ if (unary != 0)
+ b.append((char) unary);
+ else
+ b.append('\'');
+
+ return b.toString();
+ }
+
+ /**
+ * Check if the node state is valid.
+ */
+ public boolean valid()
+ {
+ switch (unary)
+ {
+ case 0 :
+ if (binary == '|')
+ return true;
+ else
+ return visits == 1;
+
+ case '*' :
+ return true;
+
+ case '+' :
+ return visits > 0;
+
+ case '?' :
+ return visits <= 1;
+
+ default :
+ throw new Error("Invalid unary operation " + unary + " ( '" +
+ (char) unary + "' )"
+ );
+ }
+ }
+
+ public boolean validPreliminary()
+ {
+ return visits == 0 || valid();
+ }
+
+ /**
+ * Closes this node and, if closePrevious() returs true, calls close() for
+ * the previous node.
+ */
+ protected void close()
+ {
+ _closed = true;
+ if (previous != null && closePrevious())
+ previous.close();
+ }
+
+ /**
+ * Compare the provided token object with the token object of this node.
+ */
+ protected boolean compare(Object a_token)
+ {
+ if (token instanceof Object[])
+ throw new Error("Invalid token object, probably the 'list' " +
+ "should be used. "
+ );
+
+ if (token instanceof node[])
+ throw new Error("Do not use 'node' for the array of nodes, use 'list'. ");
+
+ if (token instanceof node)
+ {
+ return ((node) token).performMatch(a_token);
+ }
+
+ boolean rt = false;
+
+ if (token == a_token)
+ rt = true;
+ if (token.equals(a_token))
+ rt = true;
+ if (token.toString().equalsIgnoreCase(a_token.toString()))
+ rt = true;
+
+ return rt;
+ }
+
+ /**
+ * Fire the changes that must happen then the token matches this node.
+ */
+ protected void matches()
+ {
+ visits++;
+ if (mustClose())
+ close();
+ }
+}
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.swing.text.html.parser package.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. -->
+
+<html>
+<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.models</title></head>
+
+<body>
+<p>This package contains classes for working with content models. In this implementation, the
+standardized content model is pre-processed by <code>transformer</code> into an instance of
+<code>node</code>. Node holds a single element of the content model with the optional unary operation.
+The derived class <code>list</code> holds multiple nodes connected by the same binary operation.
+As the members of this <code>list</code> can also be lists itself, these structures support
+the most of required operations. Several cases when the model cannot be expressed using
+BNF syntax are handled providing specialised classes that are also derived from <code>node</code>.
+</p>
+@author Audrius Meskauskas, Lithuania
+</body>
+</html>
--- /dev/null
+/* transformer.java -- Content model transforms.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.models;
+
+import java.io.Serializable;
+
+import javax.swing.text.html.parser.ContentModel;
+import javax.swing.text.html.parser.DTD;
+
+/**
+ * Transforms the standard ContentModel tree into the internal representation,
+ * used in this implementation.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class transformer
+ implements Serializable
+{
+ private static final long serialVersionUID = 1;
+
+ /**
+ * All binary operators.
+ */
+ protected static String binary = "&|,";
+
+ /**
+ * All unary operators.
+ */
+ protected static String unary = "+*?";
+
+ /**
+ * Measure length of the linked list of the content models.
+ * @param c The heading element of the linked list.
+ * @return the length of the list (0 for null 1 if c!=null and c.next==null,
+ * etc.
+ */
+ public static int measureChainLength(ContentModel c)
+ {
+ if (c == null)
+ return 0;
+ else
+ return measureChainLength(c.next) + 1;
+ }
+
+ /**
+ * Transform into internal representation without usind dtd.
+ * This should be used only for testing.
+ */
+ public static node transform(ContentModel c)
+ {
+ return transform(c, null);
+ }
+
+ /**
+ * Transform into internal representation.
+ * @param c a model to transform
+ * @return a transformed model
+ * @throws Error if the model structure contains errors.
+ */
+ public static node transform(ContentModel c, DTD dtd)
+ {
+ // Handle the special cases first.
+ if (c.content instanceof node)
+ return (node) c.content;
+
+ // Do the typical transform.
+ node n;
+
+ /* Case with the single token */
+ if (c.next == null)
+ {
+ n = optionalTransform(c, dtd);
+ }
+ else /* Case with the chain of the multiple tokens. */
+ {
+ node[] l = new node[ measureChainLength(c) ];
+ ContentModel m = c;
+ for (int i = 0; i < l.length; i++)
+ {
+ if (m.content instanceof ContentModel)
+ {
+ ContentModel nested = (ContentModel) m.content;
+ if (nested.next == null &&
+ !(nested.content instanceof ContentModel)
+ )
+ {
+ l [ i ] =
+ new node((char) m.type, (char) nested.type, nested.content);
+ }
+ else
+ {
+ l [ i ] = transform(nested, dtd);
+ }
+ }
+ else
+ l [ i ] = new node((char) 0, (char) 0, m.content);
+ addtype(l [ i ], (char) m.type);
+ m = m.next;
+ }
+
+ if (isBinary(c.type))
+ for (int i = 0; i < l.length; i++)
+ {
+ l [ i ].binary = (char) c.type;
+ }
+
+ n = new list(l);
+ }
+
+ addtype(n, (char) c.type);
+
+ return n;
+ }
+
+ /**
+ * True for binary operator
+ * @param c a character to test
+ * @return true for [ ,&| ], false otherwise.
+ */
+ private static boolean isBinary(int c)
+ {
+ return binary.indexOf((char) c) >= 0;
+ }
+
+ /**
+ * True for unary operator.
+ * @param c a character to test
+ * @return true for [ +?* ], false otherwise.
+ */
+ private static boolean isUnary(int c)
+ {
+ return unary.indexOf((char) c) >= 0;
+ }
+
+ /**
+ * Assign an operation type for the given node.
+ * @param n A node to set the operation to.
+ * @param type Either binary or unary operation, is assigned to the
+ * corresponding field of the node.
+ * @throws error if the operation type is not
+ * representing a valid unary or binary operation.
+ */
+ private static void addtype(node n, char type)
+ {
+ if (isBinary(type))
+ n.binary = type;
+
+ else if (isUnary(type))
+ n.unary = type;
+
+ else if (type != 0)
+ throw new Error("Invalid operation '" + (char) type + "'");
+ }
+
+ private static node optionalTransform(ContentModel c, DTD dtd)
+ {
+ node n;
+ if (c.content instanceof ContentModel)
+ n = transform((ContentModel) c.content, dtd);
+ else
+
+ /* A single token with the specified operation */
+ n = new node((char) 0, (char) 0, c.content);
+ return n;
+ }
+}
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.swing.text.html.parser package.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. -->
+
+<html>
+<head><title>GNU Classpath - javax.swing.text.html.parser</title></head>
+
+<body>
+<p>Provides the error tolerant, DTD-driven HTML 4.01 parser.
+The parser that is used in web robots, html content analysers,
+web browsers, web editors and other related applications.
+It should compativle with the older HTML versions, supporting
+obsoleted HTML featues. This package also includes some
+supporting classes.</p>
+@author Audrius Meskauskas, Lithuania
+</body>
+</html>
--- /dev/null
+/* Parser.java -- HTML parser.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support;
+
+import gnu.javax.swing.text.html.parser.htmlAttributeSet;
+import gnu.javax.swing.text.html.parser.htmlValidator;
+import gnu.javax.swing.text.html.parser.support.low.Constants;
+import gnu.javax.swing.text.html.parser.support.low.ParseException;
+import gnu.javax.swing.text.html.parser.support.low.ReaderTokenizer;
+import gnu.javax.swing.text.html.parser.support.low.Token;
+import gnu.javax.swing.text.html.parser.support.low.node;
+import gnu.javax.swing.text.html.parser.support.low.pattern;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import java.util.Comparator;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Vector;
+
+import javax.swing.text.ChangedCharSetException;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.DTDConstants;
+import javax.swing.text.html.parser.Element;
+import javax.swing.text.html.parser.Entity;
+import javax.swing.text.html.parser.TagElement;
+
+/**
+ * <p>A simple error-tolerant HTML parser that uses a DTD document
+ * to access data on the possible tokens, arguments and syntax.</p>
+ * <p> The parser reads an HTML content from a Reader and calls various
+ * notifying methods (which should be overridden in a subclass)
+ * when tags or data are encountered.</p>
+ * <p>Some HTML elements need no opening or closing tags. The
+ * task of this parser is to invoke the tag handling methods also when
+ * the tags are not explicitly specified and must be supposed using
+ * information, stored in the DTD.
+ * For example, parsing the document
+ * <p><table><tr><td>a<td>b<td>c</tr> <br>
+ * will invoke exactly the handling methods exactly in the same order
+ * (and with the same parameters) as if parsing the document: <br>
+ * <em><html><head></head><body><table><
+ * tbody></em><tr><td>a<em></td></em><td>b<em>
+ * </td></em><td>c<em></td></tr></em><
+ * <em>/tbody></table></body></html></em></p>
+ * (supposed tags are given in italics). The parser also supports
+ * obsolete elements of HTML syntax.<p>
+ * </p>
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Parser
+ extends ReaderTokenizer
+ implements DTDConstants
+{
+ /**
+ * The current html tag.
+ */
+ public Token hTag = new Token();
+
+ /**
+ * The document template description that will be used to parse the documents.
+ */
+ protected DTD dtd;
+
+ /**
+ * The value of this field determines whether or not the Parser will be
+ * strict in enforcing SGML compatibility. The default value is false,
+ * stating that the parser should do everything to parse and get at least
+ * some information even from the incorrectly written HTML input.
+ */
+ protected boolean strict;
+
+ /**
+ * This fields has positive values in preformatted tags.
+ */
+ protected int preformatted = 0;
+
+ /**
+ * The set of the document tags. This field is used for supporting
+ * markFirstTime().
+ */
+ private Set documentTags =
+ new TreeSet(new Comparator()
+ {
+ public int compare(Object a, Object b)
+ {
+ return ((String) a).compareToIgnoreCase((String) b);
+ }
+ }
+ );
+
+ /**
+ * The buffer to collect the incremental output like text or coment.
+ */
+ private StringBuffer buffer = new StringBuffer();
+
+ /**
+ * The buffer to store the document title.
+ */
+ private StringBuffer title = new StringBuffer();
+
+ /**
+ * The current token.
+ */
+ private Token t;
+
+ /**
+ * True means that the 'title' tag of this document has
+ * already been handled.
+ */
+ private boolean titleHandled;
+
+ /**
+ * True means that the 'title' tag is currently open and all
+ * text is also added to the title buffer.
+ */
+ private boolean titleOpen;
+
+ /**
+ * The attributes of the current HTML element.
+ */
+ private htmlAttributeSet attributes =
+ htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET;
+
+ /**
+ * The validator, controlling the forcible closing of the tags that
+ * (in accordance to dtd) are not allowed in the current context.
+ */
+ private htmlValidator validator;
+
+ /**
+ * Provides the default values for parameters in the case when these
+ * values are defined in the DTD.
+ */
+ private parameterDefaulter defaulter;
+
+ /**
+ * The text pre-processor for handling line ends and tabs.
+ */
+ private textPreProcessor textProcessor = new textPreProcessor();
+
+ /**
+ * Creates a new Parser that uses the given
+ * {@link javax.swing.text.html.parser.DTD }. The only standard way
+ * to get an instance of DTD is to construct it manually, filling in
+ * all required fields.
+ * @param a_dtd The DTD to use. The parser behaviour after passing null
+ * as an argument is not documented and may vary between implementations.
+ */
+ public Parser(DTD a_dtd)
+ {
+ if (a_dtd == null)
+ dtd = gnu.javax.swing.text.html.parser.HTML_401F.getInstance();
+ else
+ dtd = a_dtd;
+
+ defaulter = new parameterDefaulter(dtd);
+
+ validator =
+ new htmlValidator(dtd)
+ {
+ /**
+ * Handles the error message. This method must be overridden to pass
+ * the message where required.
+ * @param msg The message text.
+ */
+ protected void s_error(String msg)
+ {
+ error(msg);
+ }
+
+ /**
+ * The method is called when the tag validator decides to close the
+ * tag on its own initiative. After reaching the end of stream,
+ * The tag validator closes all unclosed elements that are required
+ * to have the end (closing) tag.
+ *
+ * @param element The tag being fictionally (forcibly) closed.
+ */
+ protected void handleSupposedEndTag(Element tElement)
+ {
+ // The tag is cloned as the original tElement is the
+ // element from the starting tag - may be accidently used
+ // somewhere else.
+ TagElement tag = makeTag(tElement, true);
+ _handleEndTag_remaining(tag);
+ }
+
+ /**
+ * The method is called when the the tag validator decides to open
+ * the new tag on its own initiative. The tags, opened in this
+ * way, are HTML, HEAD and BODY. The attribute set is temporary
+ * assigned to the empty one, the previous value is
+ * restored before return.
+ *
+ * @param element The tag being fictionally (forcibly) closed.
+ */
+ protected void handleSupposedStartTag(Element tElement)
+ {
+ TagElement tag = makeTag(tElement, true);
+ htmlAttributeSet were = attributes;
+ attributes = htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET;
+ _handleStartTag(tag);
+ attributes = were;
+ }
+ };
+ }
+
+ /**
+ * Get the attributes of the current tag.
+ * @return The attribute set, representing the attributes of the current tag.
+ */
+ public htmlAttributeSet getAttributes()
+ {
+ return attributes;
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * delegates the call to handleError, also providing the current line.
+ */
+ public void error(String msg)
+ {
+ error(msg, getTokenAhead());
+ }
+
+ public void error(String msg, Token atToken)
+ {
+ if (atToken != null)
+ handleError(atToken.where.beginLine,
+ msg + ": line " + atToken.where.beginLine +
+ ", absolute pos " + atToken.where.startPosition
+ );
+ else
+ handleError(0, msg);
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * delegates the call to error (parm1+": '"+parm2+"'").
+ */
+ public void error(String msg, String invalid)
+ {
+ error(msg + ": '" + invalid + "'");
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * delegates the call to error (parm1+" "+ parm2+" "+ parm3).
+ */
+ public void error(String parm1, String parm2, String parm3)
+ {
+ error(parm1 + " " + parm2 + " " + parm3);
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * delegates the call to error (parm1+" "+ parm2+" "+ parm3+" "+ parm4).
+ */
+ public void error(String parm1, String parm2, String parm3, String parm4)
+ {
+ error(parm1 + " " + parm2 + " " + parm3 + " " + parm4);
+ }
+
+ public void flushAttributes()
+ {
+ }
+
+ /**
+ * Parse the HTML text, calling various methods in response to the
+ * occurence of the corresponding HTML constructions.
+ * @param reader The reader to read the source HTML from.
+ * @throws IOException If the reader throws one.
+ */
+ public synchronized void parse(Reader reader)
+ throws IOException
+ {
+ reset(reader);
+ restart();
+ try
+ {
+ parseDocument();
+ validator.closeAll();
+ }
+ catch (ParseException ex)
+ {
+ if (ex != null)
+ {
+ error("Unable to continue parsing the document", ex.getMessage());
+
+ Throwable cause = ex.getCause();
+ if (cause instanceof IOException)
+ throw (IOException) cause;
+ }
+ }
+ }
+
+ /**
+ * Parses DTD markup declaration. Currently returns null without action.
+ * @return null.
+ * @throws IOException
+ */
+ public String parseDTDMarkup()
+ throws IOException
+ {
+ return null;
+ }
+
+ /**
+ * Parse SGML insertion ( <! ... > ). When the
+ * the SGML insertion is found, this method is called, passing
+ * SGML in the string buffer as a parameter. The default method
+ * returns false without action and can be overridden to
+ * implement user - defined SGML support.
+ * <p>
+ * If you need more information about SGML insertions in HTML documents,
+ * the author suggests to read SGML tutorial on
+ * {@link http://www.w3.org/TR/WD-html40-970708/intro/sgmltut.html}.
+ * We also recommend Goldfarb C.F (1991) <i>The SGML Handbook</i>,
+ * Oxford University Press, 688 p, ISBN: 0198537379.
+ * </p>
+ * @param strBuff
+ * @return true if this is a valid DTD markup declaration.
+ * @throws IOException
+ */
+ public boolean parseMarkupDeclarations(StringBuffer strBuff)
+ throws IOException
+ {
+ return false;
+ }
+
+ /**
+ * Get the first line of the last parsed token.
+ */
+ protected int getCurrentLine()
+ {
+ return hTag.where.beginLine;
+ }
+
+ /**
+ * Read parseable character data, add to buffer.
+ * @param clearBuffer If true, buffer if filled by CDATA section,
+ * otherwise the section is appended to the existing content of the
+ * buffer.
+ *
+ * @throws ParseException
+ */
+ protected void CDATA(boolean clearBuffer)
+ throws ParseException
+ {
+ Token start = hTag = getTokenAhead();
+
+ if (clearBuffer)
+ buffer.setLength(0);
+
+ // Handle expected EOF.
+ if (start.kind == EOF)
+ return;
+
+ read:
+ while (true)
+ {
+ t = getTokenAhead();
+ if (t.kind == EOF)
+ {
+ error("unexpected eof", t);
+ break read;
+ }
+ else if (t.kind == BEGIN)
+ break read;
+ else if (t.kind == Constants.ENTITY)
+ {
+ resolveAndAppendEntity(t);
+ getNextToken();
+ }
+ else
+ {
+ append(t);
+ getNextToken();
+ }
+ }
+ hTag = new Token(start, getTokenAhead(0));
+ if (buffer.length() != 0)
+ _handleText();
+ }
+
+ /**
+ * Process Comment. This method skips till --> without
+ * taking SGML constructs into consideration. The supported SGML
+ * constructs are handled separately.
+ */
+ protected void Comment()
+ throws ParseException
+ {
+ buffer.setLength(0);
+
+ Token start = hTag = mustBe(BEGIN);
+ optional(WS);
+ mustBe(EXCLAMATION);
+ optional(WS);
+ mustBe(DOUBLE_DASH);
+
+ Token t;
+ Token last;
+
+ comment:
+ while (true)
+ {
+ t = getTokenAhead();
+ if (t.kind == EOF)
+ {
+ handleEOFInComment();
+ last = t;
+ break comment;
+ }
+ else if (COMMENT_END.matches(this))
+ {
+ mustBe(DOUBLE_DASH);
+ optional(WS);
+ last = mustBe(END);
+ break comment;
+ }
+ else if (COMMENT_TRIPLEDASH_END.matches(this))
+ {
+ mustBe(DOUBLE_DASH);
+ t = mustBe(NUMTOKEN);
+ if (t.getImage().equals("-"))
+ {
+ append(t);
+ last = mustBe(END);
+ break comment;
+ }
+ else
+ {
+ buffer.append("--");
+ append(t);
+ t = getTokenAhead();
+ }
+ }
+ else
+ /* The lllll-- can match as NUMTOKEN */
+ if ((t.getImage().endsWith("--")) &&
+ (
+ getTokenAhead(1).kind == END ||
+ (getTokenAhead(1).kind == WS && getTokenAhead(2).kind == END)
+ )
+ )
+ {
+ buffer.append(t.getImage().substring(0, t.getImage().length() - 2));
+
+ /* Skip the closing > that we have already checked. */
+ last = mustBe(t.kind);
+ break comment;
+ }
+ else
+ append(t);
+ mustBe(t.kind);
+ }
+ hTag = new Token(start, last);
+ handleComment();
+ }
+
+ /**
+ * Read a script. The text, returned without any changes,
+ * is terminated only by the closing tag SCRIPT.
+ */
+ protected void Script()
+ throws ParseException
+ {
+ Token name;
+
+ Token start = hTag = mustBe(BEGIN);
+ optional(WS);
+
+ name = mustBe(SCRIPT);
+
+ optional(WS);
+
+ restOfTag(false, name, start);
+
+ buffer.setLength(0);
+
+ script:
+ while (!SCRIPT_CLOSE.matches(this))
+ {
+ append(getNextToken());
+ }
+
+ consume(SCRIPT_CLOSE);
+
+ _handleText();
+
+ endTag(false);
+ _handleEndTag(makeTagElement(name.getImage(), false));
+ }
+
+ /**
+ * Process SGML insertion that is not a comment.
+ */
+ protected void Sgml()
+ throws ParseException
+ {
+ if (COMMENT_OPEN.matches(this))
+ Comment();
+ else // skip till ">"
+ {
+ Token start = hTag = mustBe(BEGIN);
+ optional(WS);
+ mustBe(EXCLAMATION);
+
+ buffer.setLength(0);
+ read:
+ while (true)
+ {
+ t = getNextToken();
+ if (t.kind == Constants.ENTITY)
+ {
+ resolveAndAppendEntity(t);
+ }
+ else if (t.kind == EOF)
+ {
+ error("unexpected eof", t);
+ break read;
+ }
+ else if (t.kind == END)
+ break read;
+ else
+ append(t);
+ }
+
+ try
+ {
+ parseMarkupDeclarations(buffer);
+ }
+ catch (IOException ex)
+ {
+ error("Unable to parse SGML insertion: '" + buffer + "'",
+ new Token(start, t)
+ );
+ }
+ }
+ }
+
+ /**
+ * Read a style definition. The text, returned without any changes,
+ * is terminated only by the closing tag STYLE.
+ */
+ protected void Style()
+ throws ParseException
+ {
+ Token name;
+
+ Token start = hTag = mustBe(BEGIN);
+ optional(WS);
+
+ name = mustBe(STYLE);
+
+ optional(WS);
+
+ restOfTag(false, name, start);
+
+ buffer.setLength(0);
+
+ style:
+ while (!STYLE_CLOSE.matches(this))
+ {
+ append(getNextToken());
+ }
+
+ consume(STYLE_CLOSE);
+
+ _handleText();
+
+ endTag(false);
+ _handleEndTag(makeTagElement(name.getImage(), false));
+ }
+
+ /**
+ * Read a html tag.
+ */
+ protected void Tag()
+ throws ParseException
+ {
+ mark(true);
+
+ boolean closing = false;
+ Token name;
+ Token start = hTag = mustBe(BEGIN);
+
+ optional(WS);
+ name = getNextToken();
+ optional(WS);
+
+ if (name.kind == SLASH)
+ {
+ closing = true;
+ name = getNextToken();
+ }
+
+ restOfTag(closing, name, start);
+ }
+
+ /**
+ * A hook, for operations, preceeding call to handleText.
+ * Handle text in a string buffer.
+ * In non - preformatted mode, all line breaks immediately following the
+ * start tag and immediately before an end tag is discarded,
+ * \r, \n and \t are replaced by spaces, multiple space are replaced
+ * by the single one and the result is moved into array,
+ * passing it to handleText().
+ */
+ protected void _handleText()
+ {
+ char[] text;
+
+ if (preformatted > 0)
+ text = textProcessor.preprocessPreformatted(buffer);
+ else
+ text = textProcessor.preprocess(buffer);
+
+ if (text != null && text.length > 0)
+ {
+ TagElement pcdata = new TagElement(dtd.getElement("#pcdata"));
+ attributes = htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET;
+ _handleEmptyTag(pcdata);
+
+ handleText(text);
+ if (titleOpen)
+ title.append(text);
+ }
+ }
+
+ /**
+ * Add the image of this token to the buffer.
+ * @param t A token to append.
+ */
+ protected final void append(Token t)
+ {
+ if (t.kind != EOF)
+ t.appendTo(buffer);
+ }
+
+ /**
+ * Consume pattern that must match.
+ * @param p A pattern to consume.
+ */
+ protected final void consume(pattern p)
+ {
+ node n;
+ for (int i = 0; i < p.nodes.length; i++)
+ {
+ n = p.nodes [ i ];
+ if (n.optional)
+ optional(n.kind);
+ else
+ mustBe(n.kind);
+ }
+ }
+
+ /**
+ * The method is called when the HTML end (closing) tag is found or if
+ * the parser concludes that the one should be present in the
+ * current position. The method is called immediatly
+ * before calling the handleEndTag().
+ * @param omitted True if the tag is no actually present in the document,
+ * but is supposed by the parser (like </html> at the end of the
+ * document).
+ */
+ protected void endTag(boolean omitted)
+ {
+ }
+
+ /**
+ * Handle HTML comment. The default method returns without action.
+ * @param comment
+ */
+ protected void handleComment(char[] comment)
+ {
+ }
+
+ /**
+ * This is additionally called in when the HTML content terminates
+ * without closing the HTML comment. This can only happen if the
+ * HTML document contains errors (for example, the closing --;gt is
+ * missing.
+ */
+ protected void handleEOFInComment()
+ {
+ error("Unclosed comment");
+ }
+
+ /**
+ * Handle the tag with no content, like <br>. The method is
+ * called for the elements that, in accordance with the current DTD,
+ * has an empty content.
+ * @param The tag being handled.
+ * @throws javax.swing.text.ChangedCharSetException
+ */
+ protected void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ }
+
+ /**
+ * The method is called when the HTML closing tag ((like </table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag
+ */
+ protected void handleEndTag(TagElement tag)
+ {
+ }
+
+ /* Handle error that has occured in the given line. */
+ protected void handleError(int line, String message)
+ {
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag
+ */
+ protected void handleStartTag(TagElement tag)
+ {
+ }
+
+ /**
+ * Handle the text section.
+ * <p> For non-preformatted section, the parser replaces
+ * \t, \r and \n by spaces and then multiple spaces
+ * by a single space. Additionaly, all whitespace around
+ * tags is discarded.
+ * </p>
+ * <p> For pre-formatted text (inside TEXAREA and PRE), the parser preserves
+ * all tabs and spaces, but removes <b>one</b> bounding \r, \n or \r\n,
+ * if it is present. Additionally, it replaces each occurence of \r or \r\n
+ * by a single \n.</p>
+ *
+ * @param text A section text.
+ */
+ protected void handleText(char[] text)
+ {
+ }
+
+ /**
+ * Handle HTML <title> tag. This method is invoked when
+ * both title starting and closing tags are already behind.
+ * The passed argument contains the concatenation of all
+ * title text sections.
+ * @param The title text.
+ */
+ protected void handleTitle(char[] title)
+ {
+ }
+
+ /**
+ * Constructs the tag from the given element. In this implementation,
+ * this is defined, but never called.
+ * @return the tag
+ */
+ protected TagElement makeTag(Element element)
+ {
+ return makeTag(element, false);
+ }
+
+ /**
+ * Constructs the tag from the given element.
+ * @param the tag base {@link javax.swing.text.html.parser.Element}
+ * @param isSupposed true if the tag is not actually present in the
+ * html input, but the parser supposes that it should to occur in
+ * the current location.
+ * @return the tag
+ */
+ protected TagElement makeTag(Element element, boolean isSupposed)
+ {
+ return new TagElement(element, isSupposed);
+ }
+
+ /**
+ * This is called when the tag, representing the given element,
+ * occurs first time in the document.
+ * @param element
+ */
+ protected void markFirstTime(Element element)
+ {
+ }
+
+ /**
+ * Consume the token that was checked before and hence MUST be present.
+ * @param kind The kind of token to consume.
+ */
+ protected Token mustBe(int kind)
+ {
+ if (getTokenAhead().kind == kind)
+ return getNextToken();
+ else
+ {
+ String ei = "";
+ if (kind < 1000)
+ ei = " ('" + (char) kind + "') ";
+ throw new AssertionError("The token of kind " + kind + ei +
+ " MUST be here,"
+ );
+ }
+ }
+
+ /**
+ * Handle attribute without value. The default method uses
+ * the only allowed attribute value from DTD.
+ * If the attribute is unknown or allows several values,
+ * the HTML.NULL_ATTRIBUTE_VALUE is used. The attribute with
+ * this value is added to the attribute set.
+ * @param element The name of element.
+ * @param attribute The name of attribute without value.
+ */
+ protected void noValueAttribute(String element, String attribute)
+ {
+ Object value = HTML.NULL_ATTRIBUTE_VALUE;
+
+ Element e = (Element) dtd.elementHash.get(element.toLowerCase());
+ if (e != null)
+ {
+ AttributeList attr = e.getAttribute(attribute);
+ if (attr != null)
+ {
+ Vector values = attr.values;
+ if (values != null && values.size() == 1)
+ value = values.get(0);
+ }
+ }
+ attributes.addAttribute(attribute, value);
+ }
+
+ /**
+ * Consume the optional token, if present.
+ * @param kind The kind of token to consume.
+ */
+ protected Token optional(int kind)
+ {
+ if (getTokenAhead().kind == kind)
+ return getNextToken();
+ else
+ return null;
+ }
+
+ /** Parse the html document. */
+ protected void parseDocument()
+ throws ParseException
+ {
+ while (getTokenAhead().kind != EOF)
+ {
+ advanced = false;
+ if (TAG.matches(this))
+ Tag();
+ else if (COMMENT_OPEN.matches(this))
+ Comment();
+ else if (STYLE_OPEN.matches(this))
+ Style();
+ else if (SCRIPT_OPEN.matches(this))
+ Script();
+ else if (SGML.matches(this))
+ Sgml();
+ else
+ CDATA(true);
+
+ // Surely HTML error, treat as a text.
+ if (!advanced)
+ {
+ Token wrong = getNextToken();
+ error("unexpected '" + wrong.getImage() + "'", wrong);
+ buffer.setLength(0);
+ buffer.append(wrong.getImage());
+ _handleText();
+ }
+ }
+ }
+
+ /**
+ * Read the element attributes, adding them into attribute set.
+ * @param element The element name (needed to access attribute
+ * information in dtd).
+ */
+ protected void readAttributes(String element)
+ {
+ Token name;
+ Token value;
+ Token next;
+ String attrValue;
+
+ attributes = new htmlAttributeSet();
+
+ optional(WS);
+
+ attributeReading:
+ while (getTokenAhead().kind == NUMTOKEN)
+ {
+ name = getNextToken();
+ optional(WS);
+
+ next = getTokenAhead();
+ if (next.kind == EQ)
+ {
+ mustBe(EQ);
+ optional(WS);
+
+ next = getNextToken();
+
+ switch (next.kind)
+ {
+ case QUOT :
+
+ // read "quoted" attribute.
+ buffer.setLength(0);
+ readTillTokenE(QUOT);
+ attrValue = buffer.toString();
+ break;
+
+ case AP :
+
+ // read 'quoted' attribute.
+ buffer.setLength(0);
+ readTillTokenE(AP);
+ attrValue = buffer.toString();
+ break;
+
+ // read unquoted attribute.
+ case NUMTOKEN :
+ value = next;
+ optional(WS);
+
+ // Check maybe the opening quote is missing.
+ next = getTokenAhead();
+ if (bQUOTING.get(next.kind))
+ {
+ hTag = next;
+ error("The value without opening quote is closed with '" +
+ next.getImage() + "'"
+ );
+ }
+ attrValue = value.getImage();
+ break;
+
+ default :
+ break attributeReading;
+ }
+ attributes.addAttribute(name.getImage(), attrValue);
+ optional(WS);
+ }
+ else // The '=' is missing: attribute without value.
+ {
+ noValueAttribute(element, name.getImage());
+ }
+ }
+ }
+
+ /**
+ * Return string, corresponding the given named entity.
+ * The name is passed with the preceeding &, but without
+ * the ending semicolon.
+ */
+ protected String resolveNamedEntity(final String a_tag)
+ {
+ // Discard &
+ if (!a_tag.startsWith("&"))
+ throw new AssertionError("Named entity " + a_tag +
+ " must start witn '&'."
+ );
+
+ String tag = a_tag.substring(1);
+
+ try
+ {
+ Entity entity = dtd.getEntity(tag);
+ if (entity != null)
+ return entity.getString();
+
+ entity = dtd.getEntity(tag.toLowerCase());
+
+ if (entity != null)
+ {
+ error("The name of this entity should be in lowercase", a_tag);
+ return entity.getString();
+ }
+ }
+ catch (IndexOutOfBoundsException ibx)
+ {
+ /* The error will be reported. */
+ }
+
+ error("Unknown named entity", a_tag);
+ return a_tag;
+ }
+
+ /**
+ * Return char, corresponding the given numeric entity.
+ * The name is passed with the preceeding &#, but without
+ * the ending semicolon.
+ */
+ protected char resolveNumericEntity(final String a_tag)
+ {
+ // Discard &#
+ if (!a_tag.startsWith("&#"))
+ throw new AssertionError("Numeric entity " + a_tag +
+ " must start witn '&#'."
+ );
+
+ String tag = a_tag.substring(2);
+
+ try
+ {
+ // Determine the encoding type:
+ char cx = tag.charAt(0);
+ if (cx == 'x' || cx == 'X') // Hexadecimal &#Xnnn;
+
+ return (char) Integer.parseInt(tag.substring(1), 16);
+
+ return (char) Integer.parseInt(tag);
+ }
+
+ /* The error will be reported. */
+ catch (NumberFormatException nex)
+ {
+ }
+ catch (IndexOutOfBoundsException ix)
+ {
+ }
+
+ error("Invalid numeric entity", a_tag);
+ return '?';
+ }
+
+ /**
+ * Reset all fields into the intial default state, preparing the
+ * parset for parsing the next document.
+ */
+ protected void restart()
+ {
+ documentTags.clear();
+ titleHandled = false;
+ titleOpen = false;
+ buffer.setLength(0);
+ title.setLength(0);
+ validator.restart();
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position. The method is called immediately before
+ * calling the handleStartTag.
+ * @param The tag
+ */
+ protected void startTag(TagElement tag)
+ throws ChangedCharSetException
+ {
+ }
+
+ /**
+ * Handle a complete element, when the tag content is already present in the
+ * buffer and both starting and heading tags behind. This is called
+ * in the case when the tag text must not be parsed for the nested
+ * elements (elements STYLE and SCRIPT).
+ */
+ private void _handleCompleteElement(TagElement tag)
+ {
+ _handleStartTag(tag);
+
+ // Suppress inclusion of the SCRIPT ans STYLE texts into the title.
+ HTML.Tag h = tag.getHTMLTag();
+ if (h == HTML.Tag.SCRIPT || h == HTML.Tag.STYLE)
+ {
+ boolean tmp = titleOpen;
+ titleOpen = false;
+ _handleText();
+ titleOpen = tmp;
+ }
+ else
+ _handleText();
+
+ _handleEndTag(tag);
+ }
+
+ /**
+ * A hooks for operations, preceeding call to handleEmptyTag().
+ * Handle the tag with no content, like <br>. As no any
+ * nested tags are expected, the tag validator is not involved.
+ * @param The tag being handled.
+ */
+ private void _handleEmptyTag(TagElement tag)
+ {
+ try
+ {
+ validator.validateTag(tag, attributes);
+ handleEmptyTag(tag);
+ }
+ catch (ChangedCharSetException ex)
+ {
+ error("Changed charset exception:", ex.getMessage());
+ }
+ }
+
+ /**
+ * A hooks for operations, preceeding call to handleEndTag().
+ * The method is called when the HTML closing tag
+ * is found. Calls handleTitle after closing the 'title' tag.
+ * @param The tag
+ */
+ private void _handleEndTag(TagElement tag)
+ {
+ validator.closeTag(tag);
+ _handleEndTag_remaining(tag);
+ }
+
+ /**
+ * Actions that are also required if the closing action was
+ * intiated by the tag validator.
+ */
+ private void _handleEndTag_remaining(TagElement tag)
+ {
+ HTML.Tag h = tag.getHTMLTag();
+
+ handleEndTag(tag);
+ endTag(tag.fictional());
+
+ if (h.isPreformatted())
+ preformatted--;
+ if (preformatted < 0)
+ preformatted = 0;
+
+ if (h == HTML.Tag.TITLE)
+ {
+ titleOpen = false;
+ titleHandled = true;
+
+ char[] a = new char[ title.length() ];
+ title.getChars(0, a.length, a, 0);
+ handleTitle(a);
+ }
+ }
+
+ /**
+ * A hooks for operations, preceeding call to handleStartTag().
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found.
+ * @param The tag
+ */
+ private void _handleStartTag(TagElement tag)
+ {
+ validator.openTag(tag, attributes);
+ startingTag(tag);
+ handleStartTag(tag);
+
+ HTML.Tag h = tag.getHTMLTag();
+
+ if (h.isPreformatted())
+ preformatted++;
+
+ if (h == HTML.Tag.TITLE)
+ {
+ if (titleHandled)
+ error("Repetetive <TITLE> tag");
+ titleOpen = true;
+ titleHandled = false;
+ }
+ }
+
+ /**
+ * Resume parsing after heavy errors in HTML tag structure.
+ * @throws ParseException
+ */
+ private void forciblyCloseTheTag()
+ throws ParseException
+ {
+ int closeAt = 0;
+ buffer.setLength(0);
+
+ ahead:
+ for (int i = 1; i < 100; i++)
+ {
+ t = getTokenAhead(i - 1);
+ if (t.kind == EOF || t.kind == BEGIN)
+ break ahead;
+ if (t.kind == END)
+ {
+ /* Closing '>' found. */
+ closeAt = i;
+ break ahead;
+ }
+ }
+ if (closeAt > 0)
+ {
+ buffer.append("Ignoring '");
+ for (int i = 1; i <= closeAt; i++)
+ {
+ t = getNextToken();
+ append(t);
+ }
+ buffer.append('\'');
+ error(buffer.toString());
+ }
+ }
+
+ /**
+ * Handle comment in string buffer. You can avoid allocating a char
+ * array each time by processing your comment directly here.
+ */
+ private void handleComment()
+ {
+ char[] a = new char[ buffer.length() ];
+ buffer.getChars(0, a.length, a, 0);
+ handleComment(a);
+ }
+
+ private TagElement makeTagElement(String name, boolean isSupposed)
+ {
+ Element e = (Element) dtd.elementHash.get(name.toLowerCase());
+ if (e == null)
+ {
+ error("Unknown tag <" + name + ">");
+ e = dtd.getElement(name);
+ e.name = name.toUpperCase();
+ e.index = -1;
+ }
+
+ if (!documentTags.contains(e.name))
+ {
+ markFirstTime(e);
+ documentTags.add(e.name);
+ }
+
+ return makeTag(e, isSupposed);
+ }
+
+ /**
+ * Read till the given token, resolving entities. Consume the given
+ * token without adding it to buffer.
+ * @param till The token to read till
+ * @throws ParseException
+ */
+ private void readTillTokenE(int till)
+ throws ParseException
+ {
+ buffer.setLength(0);
+ read:
+ while (true)
+ {
+ t = getNextToken();
+ if (t.kind == Constants.ENTITY)
+ {
+ resolveAndAppendEntity(t);
+ }
+ else if (t.kind == EOF)
+ {
+ error("unexpected eof", t);
+ break read;
+ }
+ else if (t.kind == till)
+ break read;
+ else if (t.kind == WS)
+ {
+ // Processing whitespace in accordance with CDATA rules:
+ String s = t.getImage();
+ char c;
+ for (int i = 0; i < s.length(); i++)
+ {
+ c = s.charAt(i);
+ if (c == '\r')
+ buffer.append(' '); // CR replaced by space
+ else if (c == '\n')
+ ; // LF ignored
+ else if (c == '\t')
+ buffer.append(' '); // Tab replaced by space
+ else
+ buffer.append(c);
+ }
+ }
+ else
+ append(t);
+ }
+ }
+
+ /**
+ * Resolve the entity and append it to the end of buffer.
+ * @param entity
+ */
+ private void resolveAndAppendEntity(Token entity)
+ {
+ switch (entity.category)
+ {
+ case ENTITY_NAMED :
+ buffer.append(resolveNamedEntity(entity.getImage()));
+ break;
+
+ case ENTITY_NUMERIC :
+ buffer.append(resolveNumericEntity(entity.getImage()));
+ break;
+
+ default :
+ throw new AssertionError("Invalid entity category " +
+ entity.category
+ );
+ }
+ }
+
+ /**
+ * Handle the remaining of HTML tags. This is a common end for
+ * TAG, SCRIPT and STYLE.
+ * @param closing True for closing tags ( </TAG> ).
+ * @param name Name of element
+ * @param start Token where element has started
+ * @throws ParseException
+ */
+ private void restOfTag(boolean closing, Token name, Token start)
+ throws ParseException
+ {
+ boolean end = false;
+ Token next;
+
+ optional(WS);
+
+ readAttributes(name.getImage());
+
+ optional(WS);
+
+ next = getTokenAhead();
+ if (next.kind == END)
+ {
+ mustBe(END);
+ end = true;
+ }
+
+ hTag = new Token(start, next);
+
+ attributes.setResolveParent(defaulter.getDefaultParameters(name.getImage()));
+
+ if (!end)
+ {
+ // The tag body contains errors. If additionally the tag
+ // name is not valid, this construction is treated as text.
+ if (dtd.elementHash.get(name.getImage().toLowerCase()) == null &&
+ backupMode
+ )
+ {
+ error("Errors in tag body and unknown tag name. " +
+ "Treating the tag as a text."
+ );
+ reset();
+
+ hTag = mustBe(BEGIN);
+ buffer.setLength(0);
+ buffer.append(hTag.getImage());
+ CDATA(false);
+ return;
+ }
+ else
+ {
+ error("Forcibly closing invalid parameter list");
+ forciblyCloseTheTag();
+ }
+ }
+
+ if (closing)
+ {
+ endTag(false);
+ _handleEndTag(makeTagElement(name.getImage(), false));
+ }
+ else
+ {
+ TagElement te = makeTagElement(name.getImage(), false);
+ if (te.getElement().type == DTDConstants.EMPTY)
+ _handleEmptyTag(te);
+ else
+ _handleStartTag(te);
+ }
+ }
+
+ /**
+ * This should fire additional actions in response to the
+ * ChangedCharSetException. The current implementation
+ * does nothing.
+ * @param tag
+ */
+ private void startingTag(TagElement tag)
+ {
+ try
+ {
+ startTag(tag);
+ }
+ catch (ChangedCharSetException cax)
+ {
+ error("Invalid change of charset");
+ }
+ }
+
+ private void ws_error()
+ {
+ error("Whitespace here is not permitted");
+ }
+}
--- /dev/null
+/* gnuStringIntMapper.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * A helper class, mapping between the strings and they unique integer
+ * identifiers.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public abstract class gnuStringIntMapper
+{
+ /**
+ * Maps argument integer values from DTDConstants into they string
+ * names. Initialized on demand.
+ */
+ private Map is_Map;
+
+ /**
+ * Maps argument string names into they integer values from DTDConstants.
+ * Initialized on demand.
+ */
+ private Map si_Map;
+
+ /**
+ * Get string from id or null if no such id is present in the mapper.
+ */
+ public final String get(int id)
+ {
+ if (is_Map == null)
+ createTheMap();
+
+ return (String) is_Map.get(new Integer(id));
+ }
+
+ /** Get id from string or 0 if no such string is present in the mapper. */
+ public final int get(String id)
+ {
+ if (si_Map == null)
+ createTheMap();
+
+ Integer i = (Integer) si_Map.get(id);
+
+ return i != null ? i.intValue() : 0;
+ }
+
+ /**
+ * Create the mapping table for this mapper by adding the required
+ * String/int pairs. The method is invoked
+ * only once for each instance, after the first invocation of the any
+ * form of the <code>get</code> method. Use <code>add</code> to
+ * create a map for a concrete instance.
+ */
+ protected abstract void create();
+
+ /**
+ * Add an id/string pair to this mapper. This is called from
+ * the method <code>create</code> only.
+ */
+ protected void add(String name, int id)
+ {
+ Integer i = new Integer(id);
+ si_Map.put(name, i);
+ is_Map.put(i, name);
+ }
+
+ private void createTheMap()
+ {
+ is_Map = new HashMap();
+ si_Map = new TreeMap();
+ create();
+ }
+}
--- /dev/null
+/* Buffer.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+/**
+ * A string buffer that additionally holds line and absolute postion
+ * information.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Buffer
+{
+ public static int INITIAL_SIZE = 2048;
+
+ /**
+ * True if the \n symbol has been seen.
+ */
+ public boolean n_seen;
+
+ /**
+ * True if the \r symbol has been seen.
+ */
+ public boolean r_seen;
+ char[] chr = new char[ INITIAL_SIZE ];
+ int[] line = new int[ INITIAL_SIZE ];
+ int[] position = new int[ INITIAL_SIZE ];
+
+ /**
+ * Current line.
+ */
+ int current_line = 0;
+
+ /**
+ * Point to the next free position.
+ */
+ int length;
+
+ public Buffer()
+ {
+ }
+
+ public Buffer(String content)
+ {
+ for (int i = 0; i < content.length(); i++)
+ {
+ append(content.charAt(i), i);
+ }
+ }
+
+ /**
+ * Get the characters into array.
+ * @param srcBegin From, inclusive
+ * @param srcEnd To, exclusive.
+ * @param dst Into
+ * @param dstBegin Offset.
+ */
+ public void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
+ {
+ System.arraycopy(chr, srcBegin, dst, dstBegin, (srcEnd - srcBegin));
+ }
+
+ /**
+ * Return the sequence, used to separate lines in the document.
+ * @return one of \n, \r or \r\n.
+ */
+ public String getEndOfLineSequence()
+ {
+ if (r_seen && n_seen)
+ return "\r\n";
+ else if (r_seen)
+ return "\r";
+ else
+
+ // This also is returned for single-line document.
+ return "\n";
+ }
+
+ /**
+ * Truncate.
+ * @param n The length to truncate till.
+ */
+ public void setLength(int n)
+ {
+ length = n;
+ }
+
+ /**
+ * Get location information for the given region.
+ * @param from Region start, inclusive.
+ * @param to Region end, exclusive.
+ * @return The location, covering the region.
+ */
+ public Location getLocation(int from, int to)
+ {
+ Location l = new Location();
+ l.beginLine = line [ from ];
+ l.endLine = line [ to - 1 ];
+
+ l.startPosition = position [ from ];
+ l.endPosition = position [ to - 1 ] + 1;
+
+ return l;
+ }
+
+ /**
+ * Add the character.
+ * @param c The character.
+ * @param pos The character position in the stream (the line number
+ * is handled internally in the buffer).
+ */
+ public void append(char c, int pos)
+ {
+ if (length >= chr.length)
+ expand();
+ chr [ length ] = c;
+ position [ length ] = pos;
+
+ if (c == '\n')
+ {
+ if (!r_seen)
+ current_line++;
+ n_seen = true;
+ }
+ else if (c == '\r')
+ {
+ current_line++;
+ r_seen = true;
+ }
+
+ line [ length ] = current_line;
+
+ length++;
+ }
+
+ /**
+ * Return char at the given positon.
+ */
+ public char charAt(int i)
+ {
+ return chr [ i ];
+ }
+
+ /**
+ * Delete the range
+ * @param from Start position, inclusive.
+ * @param to End position, exclusive.
+ */
+ public void delete(int from, int to)
+ {
+ int len = to - from;
+ if (len < 1)
+ throw new AssertionError("Deleting " + from + " till " + to);
+
+ int tail = length - to;
+
+ System.arraycopy(chr, to, chr, from, tail);
+ System.arraycopy(position, to, position, from, tail);
+ System.arraycopy(line, to, line, from, tail);
+ length = length - len;
+ }
+
+ /**
+ * Double the buffer size.
+ */
+ public void expand()
+ {
+ int nSize = 2 * chr.length;
+
+ char[] nchr = new char[ nSize ];
+ int[] nposition = new int[ nSize ];
+ int[] nline = new int[ nSize ];
+
+ System.arraycopy(chr, 0, nchr, 0, chr.length);
+ System.arraycopy(position, 0, nposition, 0, position.length);
+ System.arraycopy(line, 0, nline, 0, line.length);
+
+ chr = nchr;
+ position = nposition;
+ line = nline;
+ }
+
+ /**
+ * Return length of the occupied part of the buffer.
+ */
+ public int length()
+ {
+ return length;
+ }
+
+ /**
+ * Prepare for parsing the new document.
+ */
+ public void reset()
+ {
+ setLength(0);
+ r_seen = n_seen = false;
+ }
+
+ public String toString()
+ {
+ return new String(chr, 0, length);
+ }
+}
--- /dev/null
+/* Constants.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+import java.util.BitSet;
+
+/**
+ * The parser constants and operations, directly related to the parser
+ * constants.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Constants
+{
+ /* Single character tokens are reflected into they ASCII codes. */
+
+ /**
+ * Start of HTML token.
+ */
+ public static final int BEGIN = '<';
+
+ /**
+ * End of HTML token.
+ */
+ public static final int END = '>';
+
+ /**
+ * Exclamation (indicates SGML or comment).
+ */
+ public static final int EXCLAMATION = '!';
+
+ /**
+ * Slash (indicates closing tag).
+ */
+ public static final int SLASH = '/';
+
+ /**
+ * Equals sign.
+ */
+ public static final int EQ = '=';
+
+ /**
+ * Quoting sign.
+ */
+ public static final int AP = '\'';
+
+ /**
+ * Quoting sign.
+ */
+ public static final int QUOT = '"';
+
+ /* The numbers of other tokens start outside the ascii space. */
+ /* String tokens */
+
+ /**
+ * Double dash (--)
+ */
+ public static final int DOUBLE_DASH = 1000;
+
+ /**
+ * The STYLE tag (needs special handling).
+ */
+ public static final int STYLE = 1001;
+
+ /**
+ * The SCRIPT tag (needs special handling).
+ */
+ public static final int SCRIPT = 1002;
+
+ /* Pattern tokens */
+
+ /**
+ * HTML whitespace.
+ */
+ public static final int WS = 1003;
+
+ /**
+ * Named or numeric entity,
+ */
+ public static final int ENTITY = 1004;
+
+ /**
+ * Sequence of valid name characters (can start from digit).
+ */
+ public static final int NUMTOKEN = 1005;
+
+ /* Complex tokens */
+
+ /**
+ * Comment opening sequence.
+ */
+ public static final pattern COMMENT_OPEN =
+ new pattern(new node[]
+ {
+ new node(BEGIN), new node(WS, true), new node(EXCLAMATION),
+ new node(WS, true), new node(DOUBLE_DASH),
+ }
+ );
+
+ /**
+ * Comment closing sequence
+ */
+ public static final pattern COMMENT_END =
+ new pattern(new node[]
+ {
+ new node(DOUBLE_DASH), new node(WS, true), new node(END)
+ }
+ );
+
+ /**
+ * Special case ---> (also is treated as end of comment).
+ */
+ public static final pattern COMMENT_TRIPLEDASH_END =
+ new pattern(new node[]
+ {
+ new node(DOUBLE_DASH), new node(NUMTOKEN), new node(END)
+ }
+ );
+
+ /**
+ * STYLE element heading pattern.
+ */
+ public static final pattern STYLE_OPEN =
+ new pattern(new node[] { new node(BEGIN), new node(WS, true), new node(STYLE) });
+
+ /**
+ * SCRIPT element heading pattern.
+ */
+ public static final pattern SCRIPT_OPEN =
+ new pattern(new node[] { new node(BEGIN), new node(WS, true), new node(SCRIPT) });
+
+ /**
+ * SGML element heading pattern.
+ */
+ public static final pattern SGML =
+ new pattern(new node[]
+ {
+ new node(BEGIN), new node(WS, true), new node(EXCLAMATION)
+ }
+ );
+
+ /**
+ * SCRIPT element closing pattern.
+ */
+ public static final pattern SCRIPT_CLOSE =
+ new pattern(new node[]
+ {
+ new node(BEGIN), new node(WS, true), new node(SLASH),
+ new node(WS, true), new node(SCRIPT), new node(WS, true),
+ new node(END)
+ }
+ );
+
+ /**
+ * STYLE element closing pattern.
+ */
+ public static final pattern STYLE_CLOSE =
+ new pattern(new node[]
+ {
+ new node(BEGIN), new node(WS, true), new node(SLASH),
+ new node(WS, true), new node(STYLE), new node(WS, true),
+ new node(END)
+ }
+ );
+
+ /**
+ * Ordinary HTML tag heading pattern.
+ */
+ public static final pattern TAG =
+ new pattern(new node[]
+ {
+ new node(BEGIN), new node(WS, true), new node(SLASH, true),
+ new node(WS, true), new node(NUMTOKEN)
+ }
+ );
+
+ /* Special tokens */
+
+ /**
+ * All other tokens.
+ */
+ public static final int OTHER = 1999;
+
+ /**
+ * The UNICODE "end of text" control code
+ */
+ static final char ETX = 3;
+
+ /**
+ * End of file.
+ */
+ public static final int EOF = ETX;
+
+ /* Character categories */
+
+ /**
+ * All single char tokens.
+ */
+ public static final BitSet bSINGLE_CHAR_TOKEN = new BitSet();
+
+ /**
+ * Non letters and non numbers, allowed in HTML names.
+ */
+ public static final BitSet bSPECIAL = new BitSet();
+
+ /**
+ * All letters, used in HTML names.
+ */
+ public static final BitSet bLETTER = new BitSet();
+
+ /**
+ * Digits.
+ */
+ public static final BitSet bDIGIT = new BitSet();
+
+ /**
+ * Both line breaks.
+ */
+ public static final BitSet bLINEBREAK = new BitSet();
+
+ /**
+ * All whitespace.
+ */
+ public static final BitSet bWHITESPACE = new BitSet();
+
+ /**
+ * Both quoting characters.
+ */
+ public static final BitSet bQUOTING = new BitSet();
+
+ /**
+ * Valid name characters.
+ */
+ public static final BitSet bNAME = new BitSet();
+
+ /* Entity subcategories */
+
+ /**
+ * Named entity.
+ */
+ public static final int ENTITY_NAMED = 1;
+
+ /**
+ * Numeric entity.
+ */
+ public static final int ENTITY_NUMERIC = 2;
+
+ static
+ {
+ bQUOTING.set(AP);
+ bQUOTING.set(QUOT);
+
+ bSINGLE_CHAR_TOKEN.set(BEGIN);
+ bSINGLE_CHAR_TOKEN.set(END);
+ bSINGLE_CHAR_TOKEN.set(EXCLAMATION);
+ bSINGLE_CHAR_TOKEN.set(SLASH);
+ bSINGLE_CHAR_TOKEN.set(EQ);
+ bSINGLE_CHAR_TOKEN.set(EOF);
+
+ bSINGLE_CHAR_TOKEN.or(bQUOTING);
+
+ bLINEBREAK.set('\r');
+ bLINEBREAK.set('\n');
+
+ bWHITESPACE.set(' ');
+ bWHITESPACE.set('\t');
+ bWHITESPACE.set(0xC);
+ bWHITESPACE.or(bLINEBREAK);
+
+ for (char i = '0'; i <= '9'; i++)
+ {
+ bDIGIT.set(i);
+ }
+
+ for (char i = 'a'; i <= 'z'; i++)
+ {
+ bLETTER.set(i);
+ }
+
+ for (char i = 'A'; i <= 'Z'; i++)
+ {
+ bLETTER.set(i);
+ }
+
+ bSPECIAL.set('-');
+ bSPECIAL.set('_');
+ bSPECIAL.set(':');
+ bSPECIAL.set('.');
+
+ bNAME.or(bLETTER);
+ bNAME.or(bDIGIT);
+ bNAME.or(bSPECIAL);
+ }
+
+ /**
+ * Verifies if one of the tokens matches the end of string
+ * buffer. The last character in the string buffer is the
+ * "future character", some tokens needs to verify it the
+ * token does not continue "towards the future". If the token
+ * matches, it matches till "pre-last" character in the buffer.
+ * @param b
+ * @return
+ */
+ public Token endMatches(Buffer b)
+ {
+ if (b.length() < 2)
+ return null;
+
+ int p = b.length() - 2;
+
+ if (b.length() > 2 && b.charAt(p) == '-' && b.charAt(p - 1) == '-')
+ return new Token(DOUBLE_DASH, "--", b.getLocation(p - 1, p + 1));
+
+ char last = b.charAt(p);
+
+ if (bSINGLE_CHAR_TOKEN.get(last))
+ return new Token(last, last, b.getLocation(p, p + 1));
+
+ char future = b.charAt(p + 1);
+
+ // Check for numtokens, script and style:
+ if (bNAME.get(last) && !bNAME.get(future))
+ {
+ // Scan the history up:
+ int u = p - 1;
+ while (u >= 0 && bNAME.get(b.charAt(u)))
+ u--;
+ u++;
+
+ char[] token = new char[ p - u + 1 ];
+
+ // Found a numtoken
+ b.getChars(u, p + 1, token, 0);
+
+ // Verify for the built-in tokens:
+ String e = new String(token);
+
+ // found the entity reference
+ if (u > 0 && b.charAt(u - 1) == '&')
+ {
+ // The subsequent semicolon may be the part of the token
+ // as well. The semicolon must be ignored. This must be
+ // handled elsewhere.
+ return new Token(ENTITY, ENTITY_NAMED, "&" + e,
+ b.getLocation(u - 1, p + 1)
+ );
+ }
+
+ // found the numeric entity reference
+ if (u > 1 && b.charAt(u - 1) == '#' && b.charAt(u - 2) == '&')
+ {
+ // The subsequent semicolon may be the part of the token
+ // as well. The semicolon must be ignored. This must be
+ // handled elsewhere.
+ return new Token(ENTITY, ENTITY_NUMERIC, "&#" + e,
+ b.getLocation(u - 2, p + 2)
+ );
+ }
+
+ Location le = b.getLocation(u, p + 1);
+
+ if (e.equalsIgnoreCase("SCRIPT"))
+ return new Token(SCRIPT, e, le);
+ else if (e.equalsIgnoreCase("STYLE"))
+ return new Token(STYLE, e, le);
+ else
+ return new Token(NUMTOKEN, e, le);
+ }
+
+ // Check for whitespace
+ if (bWHITESPACE.get(last) && !bWHITESPACE.get(future))
+ {
+ // Scan the history up:
+ int u = p - 1;
+ while (u >= 0 && bWHITESPACE.get(b.charAt(u)))
+ u--;
+ u++;
+
+ char[] token = new char[ p - u + 1 ];
+ b.getChars(u, p + 1, token, 0);
+
+ return new Token(WS, new String(token), b.getLocation(u, p + 1));
+ }
+
+ return null;
+ }
+}
--- /dev/null
+/* Location.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+/**
+ * Defines a region in the text: its bounding positions and the line number.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Location
+{
+ /**
+ * The line number, where the token starts.
+ */
+ public int beginLine;
+
+ /**
+ * The line, where the token ends.
+ */
+ public int endLine;
+
+ /**
+ * The absolute token end position in the input stream,
+ * exclusive.
+ */
+ public int endPosition;
+
+ /**
+ * The absolute token start position in the input stream,
+ * inclusive.
+ */
+ public int startPosition;
+
+ public Location()
+ {
+ }
+
+ /**
+ * Special case, used to mark EOF.
+ * @param p The total stream length.
+ */
+ public Location(int p)
+ {
+ startPosition = p;
+ endPosition = p + 1;
+ beginLine = endLine = -1;
+ }
+}
--- /dev/null
+/* ParseException.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+/**
+ * This can be thrown from various parsing methods.
+ */
+public class ParseException
+ extends RuntimeException
+{
+ public ParseException(String s, Throwable cause)
+ {
+ super(s, cause);
+ }
+}
--- /dev/null
+/* Queue.java -- a token queue.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+import java.util.Arrays;
+
+/**
+ * A token queue.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Queue
+{
+ Token[] m = new Token[ 64 ];
+ int a = 0;
+ int b = 0;
+
+ /**
+ * True for the empty queue.
+ */
+ public boolean isEmpty()
+ {
+ return size() == 0;
+ }
+
+ /**
+ * Add this trace to the end of the queue.
+ */
+ public void add(Token u)
+ {
+ if (a < m.length)
+ {
+ m [ a ] = u;
+ a++;
+ }
+ else // The end of array has been reached.
+ {
+ if (b > 0) // If some elements were deleted from the start of the queue, shift.
+ {
+ int d = b;
+ System.arraycopy(m, b, m, 0, a - b);
+ b = b - d;
+ a = a - d;
+ m [ a ] = u;
+ a++;
+ }
+ else // Enlarge the queue, doubling the size.
+ {
+ int n = m.length * 2;
+ Token[] nm = new Token[ 2 * n ];
+ System.arraycopy(m, 0, nm, 0, m.length);
+ Arrays.fill(m, null);
+
+ nm [ a ] = u;
+ m = nm;
+ a++;
+ }
+ }
+ }
+
+ /**
+ * Clear the queue.
+ */
+ public void clear()
+ {
+ a = b = 0;
+ Arrays.fill(m, null);
+ }
+
+ /**
+ * Read the value ahead. 0 is the value that will be returned with
+ * the following next. This method does not remove values from the
+ * queue. To test if there is enough tokens in the queue, size() must
+ * be checked before calling this method.
+ */
+ public Token get(int ahead)
+ {
+ int p = b + ahead;
+ if (p < a)
+ return m [ p ];
+ else
+ throw new ArrayIndexOutOfBoundsException("Not enough tokens");
+ }
+
+ /**
+ * Read the oldest value from the queue and remove this value from
+ * the queue.
+ */
+ public Token next()
+ {
+ if (a == b)
+ throw new ArrayIndexOutOfBoundsException("queue empty");
+
+ Token r = m [ b ];
+ m [ b ] = null;
+ b++;
+ return r;
+ }
+
+ /**
+ * Size of the queue.
+ */
+ public int size()
+ {
+ return a - b;
+ }
+}
--- /dev/null
+/* ReaderTokenizer.java -- splits the input char sequence int tokens.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+import java.io.IOException;
+import java.io.Reader;
+
+/**
+ * Reader splits the input char sequence into tokens.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class ReaderTokenizer
+ extends Constants
+{
+ /**
+ * This is set to true each time the getNextToken is called.
+ * Used in preventing loops when all patterns refuse to accept
+ * the invalid input.
+ */
+ protected boolean advanced;
+
+ /**
+ * If true, the returned tokens are also placed in the backup
+ * queue.
+ */
+ protected boolean backupMode;
+
+ /**
+ * The buffer to read document into.
+ */
+ Buffer buffer = new Buffer();
+
+ /**
+ * The queue for supporting mark().
+ */
+ Queue backup = new Queue();
+
+ /**
+ * The queue of found tokens.
+ */
+ Queue queue = new Queue();
+
+ /**
+ * The reader to read the document from.
+ */
+ Reader reader;
+
+ /**
+ * Array of char tokens
+ */
+ char[] charTokens;
+
+ /**
+ * Array of string tokens.
+ */
+ String[] stringTokens;
+
+ /**
+ * The current reader position.
+ */
+ int readerPosition = -1;
+
+ /**
+ * Creates a new ReaderTokenizer. The reset(...) method must be
+ * subsequently called to set the reader.
+ */
+ public ReaderTokenizer()
+ {
+ }
+
+ /**
+ * Return the sequence, used to separate lines in the document.
+ * @return one of \n, \r or \r\n.
+ */
+ public String getEndOfLineSequence()
+ {
+ return buffer.getEndOfLineSequence();
+ }
+
+ /**
+ * Get the next token.
+ * @return
+ */
+ public Token getNextToken()
+ {
+ Token rt;
+ advanced = true;
+ try
+ {
+ if (queue.isEmpty())
+ read(1);
+
+ if (!queue.isEmpty())
+ rt = queue.next();
+ else
+ rt = new Token(EOF, new Location(readerPosition));
+ }
+ catch (IOException ex)
+ {
+ throw new ParseException("IO Exception", ex);
+ }
+ if (backupMode)
+ backup.add(rt);
+ return rt;
+ }
+
+ /**
+ * Get a token, lying the given number of tokens
+ * ahead. getToken(0) will return the same token,
+ * what would be returned by getNextToken().
+ * getToken(..) does change the current position
+ * in the input stream. If the end of stream is
+ * reached, the EOF token is always returned.
+ */
+ public Token getTokenAhead(int ahead)
+ {
+ try
+ {
+ read(ahead - queue.size() + 1);
+ return queue.size() >= ahead ? queue.get(ahead) : eofToken();
+ }
+ catch (IOException ex)
+ {
+ throw new ParseException("IO Exception", ex);
+ }
+ }
+
+ /**
+ * Get a token, bein immediatley ahead.
+ * If the end of stream is
+ * reached, the EOF token is always returned.
+ * The method is equivalent calling getTokenAhead(0).
+ */
+ public Token getTokenAhead()
+ {
+ try
+ {
+ if (queue.isEmpty())
+ read(1);
+ if (!queue.isEmpty())
+ return queue.get(0);
+ else
+ return eofToken();
+ }
+ catch (IOException ex)
+ {
+ throw new ParseException("IO Exception", ex);
+ }
+ }
+
+ /**
+ * Invokes the error handler.
+ */
+ public void error(String msg, Token at)
+ {
+ System.out.println(msg);
+ }
+
+ /**
+ * Turns the backup mode on or off.
+ * It is possible to return where the mark(true) was last called
+ * by calling reset().
+ * @param mode True if it is required to save tokens, making
+ * returning to the current point possible.
+ */
+ public void mark(boolean mode)
+ {
+ backup.clear();
+ backupMode = mode;
+ }
+
+ /**
+ * Prepare for new parsing from the given stream.
+ * @param a_reader A reader to parse from.
+ */
+ public void reset(Reader a_reader)
+ {
+ reader = a_reader;
+ readerPosition = -1;
+ buffer.reset();
+ queue.clear();
+ }
+
+ /**
+ * Reset the internal cursor to the position where the mark()
+ * was last time called. Switches the backup mode off.
+ */
+ public void reset()
+ {
+ if (!backupMode)
+ throw new AssertionError("Call mark(true) before using reset()!");
+ backupMode = false;
+
+ // That is now in the queue, will be appended to the end of backup.
+ while (!queue.isEmpty())
+ backup.add(queue.next());
+
+ Queue t = queue;
+ queue = backup;
+ backup = t;
+ backup.clear();
+ }
+
+ /**
+ * Read the given number of the tokens. Add the needed number of EOF
+ * tokens if there are no more data in the stream.
+ * @param amount The number of additional tokens to read.
+ */
+ void read(int numberOfTokens)
+ throws IOException
+ {
+ if (numberOfTokens <= 0)
+ return;
+
+ reading:
+ for (int i = 0; i < numberOfTokens; i++)
+ readToken();
+ }
+
+ /**
+ * Read next token from the reader, add it to the queue
+ */
+ void readToken()
+ throws IOException
+ {
+ Token t;
+ int ch;
+
+ enlarging:
+ while (true)
+ {
+ t = tokenMatches();
+ if (t != null)
+ break enlarging;
+ else
+ {
+ ch = reader.read();
+ readerPosition++;
+ if (ch == ETX)
+ ch = ' ';
+ if (ch < 0)
+ {
+ if (buffer.length() == 0)
+ {
+ queue.add(eofToken());
+ return;
+ }
+ else
+ {
+ if (buffer.charAt(buffer.length() - 1) != ETX)
+ buffer.append(ETX, readerPosition++);
+ else
+ {
+ // Discard terminating ETX
+ buffer.setLength(buffer.length() - 1);
+ if (buffer.length() > 0)
+ {
+ t = new Token(OTHER, buffer.toString(),
+ buffer.getLocation(0, buffer.length())
+ );
+ queue.add(t);
+ buffer.setLength(0);
+ }
+ return;
+ }
+ }
+ }
+ else
+ buffer.append((char) ch, readerPosition);
+ }
+ }
+ }
+
+ /**
+ * Check if the end of buffer matches one of the tokens. If it does,
+ * return this token and remove the token sequence from the end of
+ * buffer.
+ * @return The matching token.
+ */
+ Token tokenMatches()
+ {
+ Token rt = endMatches(buffer);
+ if (rt != null) // Remove the matched image
+ {
+ // Consume future character if it was an entity and the future
+ // character is semicolon.
+ if (rt.kind == ENTITY)
+ {
+ if (buffer.charAt(buffer.length() - 1) == ';')
+ buffer.setLength(buffer.length() - rt.getImage().length() - 1);
+ else
+ {
+ error("Missing closing semicolon for entity '" + rt.getImage() +
+ "'", rt
+ );
+ consumeBuffer(rt);
+ }
+ }
+ else
+ {
+ consumeBuffer(rt);
+ }
+ }
+
+ // If the buffer is not empty, some sequence does not match any tokens.
+ // Add it to the queue as "OTHER".
+ if (rt != null)
+ {
+ if (buffer.length() > 1)
+ {
+ String rest = buffer.toString();
+ rest = rest.substring(0, rest.length() - 1);
+
+ Token other =
+ new Token(OTHER, rest, buffer.getLocation(0, buffer.length));
+ queue.add(other);
+ consumeBuffer(other);
+ }
+ queue.add(rt);
+ }
+ return rt;
+ }
+
+ private void consumeBuffer(Token rt)
+ {
+ buffer.delete(buffer.length() - rt.getImage().length() - 1,
+ buffer.length() - 1
+ );
+ }
+
+ /**
+ * Create EOF token.
+ */
+ private Token eofToken()
+ {
+ return new Token(EOF, "#", new Location(readerPosition));
+ }
+}
--- /dev/null
+/* Token.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+/**
+ * A token.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Token
+{
+ /**
+ * The place of this token in the document.
+ */
+ public Location where;
+
+ /**
+ * The additional category of token.
+ */
+ public int category;
+
+ /**
+ * An integer that describes the kind of this token.
+ */
+ public int kind;
+
+ /**
+ * The string image of the token, null if the char image must be used.
+ */
+ private String stringImage;
+
+ /**
+ * The char image of the token.
+ */
+ private char charImage;
+
+ /**
+ * Creates a new token with fields, initialized to the default values.
+ */
+ public Token()
+ {
+ }
+
+ /**
+ * Creates a new token of the given kind.
+ */
+ public Token(int _kind, Location _where)
+ {
+ kind = _kind;
+ where = _where;
+ }
+
+ /**
+ * Creates a new token of the given kind and given single char image.
+ */
+ public Token(int _kind, char _image, Location _where)
+ {
+ kind = _kind;
+ charImage = _image;
+ where = _where;
+ }
+
+ /**
+ * Creates a new token of the given kind and given string image.
+ */
+ public Token(int _kind, String _image, Location _where)
+ {
+ kind = _kind;
+ stringImage = _image;
+ where = _where;
+ }
+
+ /**
+ * Creates a new token of the given kind, category and given string image.
+ */
+ public Token(int _kind, int _category, String _image, Location _where)
+ {
+ kind = _kind;
+ category = _category;
+ stringImage = _image;
+ where = _where;
+ }
+
+ /**
+ * Creates a new token, where location fields are set as for token,
+ * spanning over two provided tokens and any tokens between them.
+ * The image field is initialized to null, the kind field is set to -1.
+ */
+ public Token(Token fromInclusive, Token toInclusive)
+ {
+ where = new Location();
+ where.beginLine = fromInclusive.where.beginLine;
+ where.startPosition = fromInclusive.where.startPosition;
+
+ where.endLine = toInclusive.where.endLine;
+ where.endPosition = toInclusive.where.endPosition;
+ }
+
+ public String getImage()
+ {
+ if (kind == 3)
+ return "#";
+ if (stringImage == null)
+ {
+ if (charImage == 0)
+ return null;
+ stringImage = new String(new char[] { charImage });
+ }
+ return stringImage;
+ }
+
+ /**
+ * Append the token image to the given string buffer.
+ * This may be more effective that buffer.append(this.getImage()).
+ * @param buffer A buffer to append.
+ */
+ public void appendTo(StringBuffer buffer)
+ {
+ if (charImage == 0)
+ buffer.append(getImage());
+ else
+ buffer.append(charImage);
+ }
+
+ /**
+ * Returns the string image or, if null, the bounding positions.
+ */
+ public String toString()
+ {
+ return getImage() != null ? kind + "'" + getImage()
+ : "<line " + where.beginLine + ", abs pos " + where.startPosition +
+ ".." + where.endPosition + ">";
+ }
+}
--- /dev/null
+/* node.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+/**
+ * A text level content model node. The only required unary operations
+ * here are "appears" and "optionally appears" ('?').
+ * <p>@author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)</p>
+ */
+public class node
+{
+ /**
+ * True for node that is optional for the given position.
+ */
+ public boolean optional;
+
+ /**
+ * The kind of the token to match.
+ */
+ public int kind;
+
+ /**
+ * Creates the new node for matching a given kind of the token.
+ * @param kind The kind of the token to match.
+ * @param modifier The modifier (*?+).
+ */
+ public node(int kind, boolean _optional)
+ {
+ this.kind = kind;
+ optional = _optional;
+ }
+
+ /**
+ * Creates the node, indicating that token must match exactluy one time.
+ * @param kind The kind of token to match.
+ */
+ public node(int kind)
+ {
+ this.kind = kind;
+ optional = false;
+ }
+}
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.swing.text.html.parser package.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. -->
+
+<html>
+<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.support.low</title></head>
+
+<body>
+<p>This package contains classes that are directly used to process
+the text input: adapted stream tokenizer, specialized buffer and text-level content models .</p>
+@author Audrius Meskauskas, Lithuania
+</body>
+</html>
--- /dev/null
+/* pattern.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support.low;
+
+
+/**
+ * The simple pattern, consisting from the sequence of tokens that
+ * may have the unary modifier '?'. Choices and grouping
+ * are not required here.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class pattern
+{
+ /**
+ * The nodes of this pattern.
+ */
+ public final node[] nodes;
+
+ /**
+ * Create a pattern, containing the given list of nodes.
+ * @param a_nodes
+ */
+ public pattern(node[] a_nodes)
+ {
+ nodes = a_nodes;
+ }
+
+ /**
+ * Checks if the pattern can match the tokens in this
+ * tokenizer. Does not change the state of tokenizer.
+ * @param stream The tokenizer to read data from
+ * @return True if the pattern sequence matches the
+ * beginning of the tokenizer content.
+ */
+ public boolean matches(ReaderTokenizer stream)
+ {
+ try
+ {
+ int pt = 0;
+ int pn = 0;
+ Token t;
+ node n;
+
+ while (pn < nodes.length)
+ {
+ n = nodes [ pn ];
+ t = stream.getTokenAhead(pt);
+
+ if (t.kind == n.kind)
+ {
+ pn++;
+ pt++;
+ }
+ else
+ {
+ if (!n.optional)
+ return false;
+ else
+ pn++;
+ }
+ }
+ return true;
+ }
+ catch (Exception ex)
+ {
+ throw new ParseException("Exception", ex);
+ }
+ }
+}
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!-- package.html - describes classes in javax.swing.text.html.parser package.
+ Copyright (C) 2002 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. -->
+
+<html>
+<head><title>GNU Classpath - gnu.javax.swing.text.html.parser.support</title></head>
+
+<body>
+<p>This package provides various specialised classes, needed by HTML parser.
+</p>
+@author Audrius Meskauskas, Lithuania
+</body>
+</html>
--- /dev/null
+/* parameterDefaulter.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support;
+
+import gnu.javax.swing.text.html.parser.htmlAttributeSet;
+
+import java.util.Hashtable;
+
+import javax.swing.text.html.parser.AttributeList;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.Element;
+
+/**
+ * Returns an attribute set, containing default
+ * parameters for the given element. Caches sets of default
+ * parameters.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class parameterDefaulter
+{
+ public final DTD dtd;
+ Hashtable sets = new Hashtable();
+
+ /**
+ * Create a parameterDefaulter that looks for the default attribute
+ * values in the given DTD.
+ * @param a_dtd
+ */
+ public parameterDefaulter(DTD a_dtd)
+ {
+ dtd = a_dtd;
+ }
+
+ /**
+ * Get the default parameter set for the given element.
+ * @param element The element name (case insensitive).
+ * @return the default attrbute set.
+ */
+ public htmlAttributeSet getDefaultParameters(String element)
+ {
+ String key = element.toLowerCase();
+ htmlAttributeSet atts = (htmlAttributeSet) sets.get(key);
+
+ if (atts == null)
+ {
+ htmlAttributeSet set = new htmlAttributeSet();
+ Element e = (Element) dtd.elementHash.get(element.toLowerCase());
+
+ if (e != null)
+ {
+ AttributeList a = e.getAttributes();
+
+ while (a != null)
+ {
+ if (a.value != null)
+ set.addAttribute(a.name, a.value);
+ a = a.next;
+ }
+ }
+
+ if (set.getAttributeCount() > 0)
+ sets.put(key, set);
+ else
+ sets.put(key, htmlAttributeSet.EMPTY_HTML_ATTRIBUTE_SET);
+
+ atts = set;
+ }
+ return atts;
+ }
+}
--- /dev/null
+/* textPreProcessor.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.parser.support;
+
+import gnu.javax.swing.text.html.parser.support.low.Constants;
+
+/**
+ * Pre - processes text in text parts of the html document.
+ * Not thread - safe.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class textPreProcessor
+{
+ /**
+ * Pre - process non-preformatted text.
+ * \t, \r and \n mutate into spaces, then multiple spaces mutate
+ * into single one, all whitespace around tags is consumed.
+ * The content of the passed buffer is destroyed.
+ * @param text A text to pre-process.
+ */
+ public char[] preprocess(StringBuffer a_text)
+ {
+ if (a_text.length() == 0)
+ return null;
+
+ char[] text = toCharArray(a_text);
+
+ int a = 0;
+ int b = text.length - 1;
+
+ try
+ {
+ while (Constants.bWHITESPACE.get(text [ a ]))
+ a++;
+ while (Constants.bWHITESPACE.get(text [ b ]))
+ b--;
+ }
+ catch (ArrayIndexOutOfBoundsException sx)
+ {
+ // A text fragment, consisting from line breaks only.
+ return null;
+ }
+
+ a_text.setLength(0);
+
+ boolean spacesWere = false;
+ boolean spaceNow;
+ char c;
+
+ chars:
+ for (int i = a; i <= b; i++)
+ {
+ c = text [ i ];
+ spaceNow = Constants.bWHITESPACE.get(c);
+ if (spacesWere && spaceNow)
+ continue chars;
+ if (spaceNow)
+ a_text.append(' ');
+ else
+ a_text.append(c);
+ spacesWere = spaceNow;
+ }
+
+ if (a_text.length() == text.length)
+ {
+ a_text.getChars(0, a_text.length(), text, 0);
+ return text;
+ }
+ else
+ return toCharArray(a_text);
+ }
+
+ /**
+ * Pre - process pre-formatted text.
+ * Heading/closing spaces and tabs preserved.
+ * ONE bounding \r, \n or \r\n is removed.
+ * \r or \r\n mutate into \n. Tabs are
+ * preserved.
+ * The content of the passed buffer is destroyed.
+ * @param text
+ * @return
+ */
+ public char[] preprocessPreformatted(StringBuffer a_text)
+ {
+ if (a_text.length() == 0)
+ return null;
+
+ char[] text = toCharArray(a_text);
+
+ int a = 0;
+ int n = text.length - 1;
+ int b = n;
+
+ if (text [ 0 ] == '\n')
+ a++;
+ else
+ {
+ if (text [ 0 ] == '\r')
+ {
+ a++;
+ if (text.length > 1 && text [ 1 ] == '\n')
+ a++;
+ }
+ }
+
+ if (text [ n ] == '\r')
+ b--;
+ else
+ {
+ if (text [ n ] == '\n')
+ {
+ b--;
+ if (n > 0 && text [ n - 1 ] == '\r')
+ b--;
+ }
+ }
+
+ a_text.setLength(0);
+
+ if (a > b)
+ return null;
+
+ char c;
+
+ for (int i = a; i <= b; i++)
+ {
+ c = text [ i ];
+ if (c == '\r')
+ {
+ if (i == b || text [ i + 1 ] != '\n')
+ a_text.append('\n');
+ }
+ else
+ a_text.append(c);
+ }
+
+ if (a_text.length() == text.length)
+ {
+ a_text.getChars(0, a_text.length(), text, 0);
+ return text;
+ }
+ else
+ return toCharArray(a_text);
+ }
+
+ /**
+ * Return array of chars, present in the given buffer.
+ * @param a_text The buffer
+ * @return
+ */
+ private static char[] toCharArray(StringBuffer a_text)
+ {
+ char[] text = new char[ a_text.length() ];
+ a_text.getChars(0, text.length, text, 0);
+ return text;
+ }
+}
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSParser;
import org.w3c.dom.ls.LSSerializer;
+import gnu.xml.dom.html2.DomHTMLImpl;
import gnu.xml.dom.ls.DomLSInput;
import gnu.xml.dom.ls.DomLSOutput;
import gnu.xml.dom.ls.DomLSParser;
"".equals(version) ||
"3.0".equals(version));
}
+ else if ("html".equals(name) || "xhtml".equals(name))
+ {
+ return (version == null ||
+ "".equals(version) ||
+ "2.0".equals(version));
+ }
// views
// stylesheets
String rootName,
DocumentType doctype)
{
- Document doc = new DomDocument(this);
+ Document doc = createDocument();
Element root = null;
if (rootName != null)
return doc;
}
+ protected Document createDocument()
+ {
+ return new DomDocument(this);
+ }
+
// DOM Level 3
public Object getFeature(String feature, String version)
{
if (hasFeature(feature, version))
{
+ if ("html".equalsIgnoreCase(feature) ||
+ "xhtml".equalsIgnoreCase(feature))
+ {
+ return new DomHTMLImpl();
+ }
return this;
}
return null;
--- /dev/null
+/* DomHTMLAnchorElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLAnchorElement;
+
+/**
+ * An HTML 'A' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLAnchorElement
+ extends DomHTMLElement
+ implements HTMLAnchorElement
+{
+
+ protected DomHTMLAnchorElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public String getCharset()
+ {
+ return getHTMLAttribute("charset");
+ }
+
+ public void setCharset(String charset)
+ {
+ setHTMLAttribute("charset", charset);
+ }
+
+ public String getCoords()
+ {
+ return getHTMLAttribute("coords");
+ }
+
+ public void setCoords(String coords)
+ {
+ setHTMLAttribute("coords", coords);
+ }
+
+ public String getHref()
+ {
+ return getHTMLAttribute("href");
+ }
+
+ public void setHref(String href)
+ {
+ setHTMLAttribute("href", href);
+ }
+
+ public String getHreflang()
+ {
+ return getHTMLAttribute("hreflang");
+ }
+
+ public void setHreflang(String hreflang)
+ {
+ setHTMLAttribute("hreflang", hreflang);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getRel()
+ {
+ return getHTMLAttribute("rel");
+ }
+
+ public void setRel(String rel)
+ {
+ setHTMLAttribute("rel", rel);
+ }
+
+ public String getRev()
+ {
+ return getHTMLAttribute("rev");
+ }
+
+ public void setRev(String rev)
+ {
+ setHTMLAttribute("rev", rev);
+ }
+
+ public String getShape()
+ {
+ return getHTMLAttribute("shape");
+ }
+
+ public void setShape(String shape)
+ {
+ setHTMLAttribute("shape", shape);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getTarget()
+ {
+ return getHTMLAttribute("target");
+ }
+
+ public void setTarget(String target)
+ {
+ setHTMLAttribute("target", target);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+ public void blur()
+ {
+ dispatchUIEvent("blur");
+ }
+
+ public void focus()
+ {
+ dispatchUIEvent("focus");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLAppletElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLAppletElement;
+
+/**
+ * An HTML 'APPLET' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLAppletElement
+ extends DomHTMLElement
+ implements HTMLAppletElement
+{
+
+ protected DomHTMLAppletElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getAlt()
+ {
+ return getHTMLAttribute("alt");
+ }
+
+ public void setAlt(String alt)
+ {
+ setHTMLAttribute("alt", alt);
+ }
+
+ public String getArchive()
+ {
+ return getHTMLAttribute("archive");
+ }
+
+ public void setArchive(String archive)
+ {
+ setHTMLAttribute("archive", archive);
+ }
+
+ public String getCode()
+ {
+ return getHTMLAttribute("code");
+ }
+
+ public void setCode(String code)
+ {
+ setHTMLAttribute("code", code);
+ }
+
+ public String getCodeBase()
+ {
+ return getHTMLAttribute("codebase");
+ }
+
+ public void setCodeBase(String codeBase)
+ {
+ setHTMLAttribute("codebase", codeBase);
+ }
+
+ public String getHeight()
+ {
+ return getHTMLAttribute("height");
+ }
+
+ public void setHeight(String height)
+ {
+ setHTMLAttribute("height", height);
+ }
+
+ public int getHspace()
+ {
+ return getIntHTMLAttribute("hspace");
+ }
+
+ public void setHspace(int hspace)
+ {
+ setIntHTMLAttribute("hspace", hspace);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getObject()
+ {
+ return getHTMLAttribute("object");
+ }
+
+ public void setObject(String object)
+ {
+ setHTMLAttribute("object", object);
+ }
+
+ public int getVspace()
+ {
+ return getIntHTMLAttribute("vspace");
+ }
+
+ public void setVspace(int vspace)
+ {
+ setIntHTMLAttribute("vspace", vspace);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLAreaElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLAreaElement;
+
+/**
+ * An HTML 'AREA' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLAreaElement
+ extends DomHTMLElement
+ implements HTMLAreaElement
+{
+
+ protected DomHTMLAreaElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public String getAlt()
+ {
+ return getHTMLAttribute("alt");
+ }
+
+ public void setAlt(String alt)
+ {
+ setHTMLAttribute("alt", alt);
+ }
+
+ public String getCoords()
+ {
+ return getHTMLAttribute("coords");
+ }
+
+ public void setCoords(String coords)
+ {
+ setHTMLAttribute("coords", coords);
+ }
+
+ public String getHref()
+ {
+ return getHTMLAttribute("href");
+ }
+
+ public void setHref(String href)
+ {
+ setHTMLAttribute("href", href);
+ }
+
+ public boolean getNoHref()
+ {
+ return getBooleanHTMLAttribute("nohref");
+ }
+
+ public void setNoHref(boolean nohref)
+ {
+ setBooleanHTMLAttribute("nohref", nohref);
+ }
+
+ public String getShape()
+ {
+ return getHTMLAttribute("shape");
+ }
+
+ public void setShape(String shape)
+ {
+ setHTMLAttribute("shape", shape);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getTarget()
+ {
+ return getHTMLAttribute("target");
+ }
+
+ public void setTarget(String target)
+ {
+ setHTMLAttribute("target", target);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLBRElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLBRElement;
+
+/**
+ * An HTML 'BR' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLBRElement
+ extends DomHTMLElement
+ implements HTMLBRElement
+{
+
+ protected DomHTMLBRElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getClear()
+ {
+ return getHTMLAttribute("clear");
+ }
+
+ public void setClear(String clear)
+ {
+ setHTMLAttribute("clear", clear);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLBaseElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLBaseElement;
+
+/**
+ * An HTML 'BASE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLBaseElement
+ extends DomHTMLElement
+ implements HTMLBaseElement
+{
+
+ protected DomHTMLBaseElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getHref()
+ {
+ return getHTMLAttribute("href");
+ }
+
+ public void setHref(String href)
+ {
+ setHTMLAttribute("href", href);
+ }
+
+ public String getTarget()
+ {
+ return getHTMLAttribute("target");
+ }
+
+ public void setTarget(String target)
+ {
+ setHTMLAttribute("target", target);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLBaseFontElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLBaseFontElement;
+
+/**
+ * An HTML 'BASEFONT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLBaseFontElement
+ extends DomHTMLElement
+ implements HTMLBaseFontElement
+{
+
+ protected DomHTMLBaseFontElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getColor()
+ {
+ return getHTMLAttribute("color");
+ }
+
+ public void setColor(String color)
+ {
+ setHTMLAttribute("color", color);
+ }
+
+ public String getFace()
+ {
+ return getHTMLAttribute("face");
+ }
+
+ public void setFace(String face)
+ {
+ setHTMLAttribute("face", face);
+ }
+
+ public int getSize()
+ {
+ return getIntHTMLAttribute("size");
+ }
+
+ public void setSize(int size)
+ {
+ setIntHTMLAttribute("size", size);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLBodyElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLBodyElement;
+
+/**
+ * An HTML 'BODY' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLBodyElement
+ extends DomHTMLElement
+ implements HTMLBodyElement
+{
+
+ protected DomHTMLBodyElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getALink()
+ {
+ return getHTMLAttribute("alink");
+ }
+
+ public void setALink(String alink)
+ {
+ setHTMLAttribute("alink", alink);
+ }
+
+ public String getBackground()
+ {
+ return getHTMLAttribute("background");
+ }
+
+ public void setBackground(String background)
+ {
+ setHTMLAttribute("background", background);
+ }
+
+ public String getBgColor()
+ {
+ return getHTMLAttribute("bgcolor");
+ }
+
+ public void setBgColor(String bgcolor)
+ {
+ setHTMLAttribute("bgcolor", bgcolor);
+ }
+
+ public String getLink()
+ {
+ return getHTMLAttribute("link");
+ }
+
+ public void setLink(String link)
+ {
+ setHTMLAttribute("link", link);
+ }
+
+ public String getText()
+ {
+ return getHTMLAttribute("text");
+ }
+
+ public void setText(String text)
+ {
+ setHTMLAttribute("text", text);
+ }
+
+ public String getVLink()
+ {
+ return getHTMLAttribute("vlink");
+ }
+
+ public void setVLink(String vlink)
+ {
+ setHTMLAttribute("vlink", vlink);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLButtonElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.html2.HTMLButtonElement;
+import org.w3c.dom.html2.HTMLFormElement;
+
+/**
+ * An HTML 'BUTTON' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLButtonElement
+ extends DomHTMLElement
+ implements HTMLButtonElement
+{
+
+ protected DomHTMLButtonElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public String getValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setValue(String value)
+ {
+ setHTMLAttribute("value", value);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLCollection.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import gnu.xml.dom.DomElement;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLOptionsCollection;
+import org.w3c.dom.traversal.NodeFilter;
+import org.w3c.dom.traversal.NodeIterator;
+
+/**
+ * An HTML element collection.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+class DomHTMLCollection
+ implements HTMLCollection, HTMLOptionsCollection, NodeList, NodeFilter
+{
+
+ final DomHTMLDocument doc;
+ final Node root;
+ List nodeNames;
+ List attributeNames;
+ List results;
+
+ DomHTMLCollection(DomHTMLDocument doc, Node root)
+ {
+ this.doc = doc;
+ this.root = root;
+ }
+
+ // -- Node name and attribute filtering --
+
+ void addNodeName(String name)
+ {
+ if (nodeNames == null)
+ {
+ nodeNames = new LinkedList();
+ }
+ nodeNames.add(name);
+ }
+
+ void addAttributeName(String name)
+ {
+ if (attributeNames == null)
+ {
+ attributeNames = new LinkedList();
+ }
+ attributeNames.add(name);
+ }
+
+ public short acceptNode(Node n)
+ {
+ if (n.getNodeType() != Node.ELEMENT_NODE)
+ {
+ return NodeFilter.FILTER_SKIP;
+ }
+ if (nodeNames != null && !acceptName(n.getLocalName()))
+ {
+ return NodeFilter.FILTER_SKIP;
+ }
+ if (attributeNames != null && !acceptAttributes(n.getAttributes()))
+ {
+ return NodeFilter.FILTER_SKIP;
+ }
+ return NodeFilter.FILTER_ACCEPT;
+ }
+
+ private boolean acceptName(String name)
+ {
+ for (Iterator i = nodeNames.iterator(); i.hasNext(); )
+ {
+ String nodeName = (String) i.next();
+ if (nodeName.equalsIgnoreCase(name))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private boolean acceptAttributes(NamedNodeMap attrs)
+ {
+ for (Iterator i = attributeNames.iterator(); i.hasNext(); )
+ {
+ String attributeName = (String) i.next();
+ Node attr = getNamedItem(attrs, attributeName);
+ if (attr != null)
+ {
+ // Check that attribute has a non-null value
+ String nodeValue = attr.getNodeValue();
+ if (nodeValue != null && nodeValue.length() > 0)
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Case-insensitive version of getNamedItem.
+ */
+ private Node getNamedItem(NamedNodeMap attrs, String name)
+ {
+ int len = attrs.getLength();
+ for (int i = 0; i < len; i++)
+ {
+ Node attr = attrs.item(i);
+ String attrName = attr.getLocalName();
+ if (name.equalsIgnoreCase(attrName))
+ {
+ return attr;
+ }
+ }
+ return null;
+ }
+
+ // -- Perform query --
+
+ void evaluate()
+ {
+ NodeIterator i = doc.createNodeIterator(root, NodeFilter.SHOW_ELEMENT,
+ this, true);
+ results = new ArrayList();
+ for (Node node = i.nextNode(); node != null; node = i.nextNode())
+ {
+ results.add(node);
+ }
+ }
+
+ // -- HTMLCollection/NodeList interface --
+
+ public int getLength()
+ {
+ return results.size();
+ }
+
+ public void setLength(int length)
+ {
+ throw new DomDOMException(DOMException.NOT_SUPPORTED_ERR);
+ }
+
+ public Node item(int index)
+ {
+ return (Node) results.get(index);
+ }
+
+ public Node namedItem(String name)
+ {
+ boolean xhtml = false; // FIXME detect XHTML document
+ for (Iterator i = results.iterator(); i.hasNext(); )
+ {
+ Node node = (Node) i.next();
+ NamedNodeMap attrs = node.getAttributes();
+ Node attr = getNamedItem(attrs, "id");
+ if (name.equals(attr.getTextContent()))
+ {
+ return node;
+ }
+ if (!xhtml)
+ {
+ attr = getNamedItem(attrs, "name");
+ if (name.equals(attr.getTextContent()))
+ {
+ return node;
+ }
+ }
+ }
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLDListElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLDListElement;
+
+/**
+ * An HTML 'DL' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLDListElement
+ extends DomHTMLElement
+ implements HTMLDListElement
+{
+
+ protected DomHTMLDListElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getCompact()
+ {
+ return getBooleanHTMLAttribute("compact");
+ }
+
+ public void setCompact(boolean compact)
+ {
+ setBooleanHTMLAttribute("compact", compact);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLDirectoryElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLDirectoryElement;
+
+/**
+ * An HTML 'DIR' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLDirectoryElement
+ extends DomHTMLElement
+ implements HTMLDirectoryElement
+{
+
+ protected DomHTMLDirectoryElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getCompact()
+ {
+ return getBooleanHTMLAttribute("compact");
+ }
+
+ public void setCompact(boolean compact)
+ {
+ setBooleanHTMLAttribute("compact", compact);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLDivElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLDivElement;
+
+/**
+ * An HTML 'DIV' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLDivElement
+ extends DomHTMLElement
+ implements HTMLDivElement
+{
+
+ protected DomHTMLDivElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLDocument.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDocument;
+import gnu.xml.dom.DomDOMException;
+import java.lang.reflect.Constructor;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLDocument;
+import org.w3c.dom.html2.HTMLElement;
+
+/**
+ * An HTML document.
+ * This is the factory object used to create HTML elements.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLDocument
+ extends DomDocument
+ implements HTMLDocument
+{
+
+ private static final Class[] ELEMENT_PT = new Class[] {
+ DomHTMLDocument.class,
+ String.class,
+ String.class
+ };
+
+ private static Map ELEMENT_CLASSES;
+ static
+ {
+ Map map = new HashMap();
+ map.put("a", DomHTMLAnchorElement.class);
+ map.put("applet", DomHTMLAppletElement.class);
+ map.put("area", DomHTMLAreaElement.class);
+ map.put("base", DomHTMLBaseElement.class);
+ map.put("basefont", DomHTMLBaseFontElement.class);
+ map.put("body", DomHTMLBodyElement.class);
+ map.put("br", DomHTMLBRElement.class);
+ map.put("button", DomHTMLButtonElement.class);
+ map.put("dir", DomHTMLDirectoryElement.class);
+ map.put("div", DomHTMLDivElement.class);
+ map.put("dlist", DomHTMLDListElement.class);
+ map.put("fieldset", DomHTMLFieldSetElement.class);
+ map.put("font", DomHTMLFontElement.class);
+ map.put("form", DomHTMLFormElement.class);
+ map.put("frame", DomHTMLFrameElement.class);
+ map.put("frameset", DomHTMLFrameSetElement.class);
+ map.put("head", DomHTMLHeadElement.class);
+ map.put("h1", DomHTMLHeadingElement.class);
+ map.put("h2", DomHTMLHeadingElement.class);
+ map.put("h3", DomHTMLHeadingElement.class);
+ map.put("h4", DomHTMLHeadingElement.class);
+ map.put("h5", DomHTMLHeadingElement.class);
+ map.put("h6", DomHTMLHeadingElement.class);
+ map.put("html", DomHTMLHtmlElement.class);
+ map.put("iframe", DomHTMLIFrameElement.class);
+ map.put("img", DomHTMLImageElement.class);
+ map.put("input", DomHTMLInputElement.class);
+ map.put("isindex", DomHTMLIsIndexElement.class);
+ map.put("label", DomHTMLLabelElement.class);
+ map.put("legend", DomHTMLLegendElement.class);
+ map.put("li", DomHTMLLIElement.class);
+ map.put("link", DomHTMLLinkElement.class);
+ map.put("map", DomHTMLMapElement.class);
+ map.put("menu", DomHTMLMenuElement.class);
+ map.put("meta", DomHTMLMetaElement.class);
+ map.put("ins", DomHTMLModElement.class);
+ map.put("del", DomHTMLModElement.class);
+ map.put("object", DomHTMLObjectElement.class);
+ map.put("ol", DomHTMLOListElement.class);
+ map.put("optgroup", DomHTMLOptGroupElement.class);
+ map.put("option", DomHTMLOptionElement.class);
+ map.put("p", DomHTMLParagraphElement.class);
+ map.put("param", DomHTMLParamElement.class);
+ map.put("pre", DomHTMLPreElement.class);
+ map.put("q", DomHTMLQuoteElement.class);
+ map.put("blockquote", DomHTMLQuoteElement.class);
+ map.put("script", DomHTMLScriptElement.class);
+ map.put("select", DomHTMLSelectElement.class);
+ map.put("style", DomHTMLStyleElement.class);
+ map.put("caption", DomHTMLTableCaptionElement.class);
+ map.put("th", DomHTMLTableCellElement.class);
+ map.put("td", DomHTMLTableCellElement.class);
+ map.put("col", DomHTMLTableColElement.class);
+ map.put("colgroup", DomHTMLTableColElement.class);
+ map.put("table", DomHTMLTableElement.class);
+ map.put("tr", DomHTMLTableRowElement.class);
+ map.put("thead", DomHTMLTableSectionElement.class);
+ map.put("tfoot", DomHTMLTableSectionElement.class);
+ map.put("tbody", DomHTMLTableSectionElement.class);
+ map.put("textarea", DomHTMLTextAreaElement.class);
+ map.put("title", DomHTMLTitleElement.class);
+ map.put("ul", DomHTMLUListElement.class);
+ ELEMENT_CLASSES = Collections.unmodifiableMap(map);
+ }
+
+ private static Set HTML_NS_URIS;
+ static
+ {
+ Set set = new HashSet();
+ set.add("http://www.w3.org/TR/html4/strict");
+ set.add("http://www.w3.org/TR/html4/loose");
+ set.add("http://www.w3.org/TR/html4/frameset");
+ set.add("http://www.w3.org/1999/xhtml");
+ set.add("http://www.w3.org/TR/xhtml1/strict");
+ set.add("http://www.w3.org/TR/xhtml1/loose");
+ set.add("http://www.w3.org/TR/xhtml1/frameset");
+ HTML_NS_URIS = Collections.unmodifiableSet(set);
+ }
+
+ /**
+ * Convenience constructor.
+ */
+ public DomHTMLDocument()
+ {
+ this(new DomHTMLImpl());
+ }
+
+ /**
+ * Constructor.
+ * This is called by the DOMImplementation.
+ */
+ public DomHTMLDocument(DomHTMLImpl impl)
+ {
+ super(impl);
+ }
+
+ private Node getChildNodeByName(Node parent, String name)
+ {
+ for (Node ctx = parent.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (name.equalsIgnoreCase(ctx.getNodeName()))
+ {
+ return ctx;
+ }
+ }
+ return null;
+ }
+
+ public String getTitle()
+ {
+ Node html = getDocumentElement();
+ if (html != null)
+ {
+ Node head = getChildNodeByName(html, "head");
+ if (head != null)
+ {
+ Node title = getChildNodeByName(head, "title");
+ if (title != null)
+ {
+ return title.getTextContent();
+ }
+ }
+ }
+ return null;
+ }
+
+ public void setTitle(String title)
+ {
+ Node html = getDocumentElement();
+ if (html == null)
+ {
+ html = createElement("html");
+ appendChild(html);
+ }
+ Node head = getChildNodeByName(html, "head");
+ if (head == null)
+ {
+ head = createElement("head");
+ Node first = html.getFirstChild();
+ if (first != null)
+ {
+ html.insertBefore(first, head);
+ }
+ else
+ {
+ html.appendChild(head);
+ }
+ }
+ Node titleNode = getChildNodeByName(head, "title");
+ if (titleNode == null)
+ {
+ titleNode = createElement("title");
+ Node first = head.getFirstChild();
+ if (first != null)
+ {
+ head.insertBefore(first, titleNode);
+ }
+ else
+ {
+ head.appendChild(titleNode);
+ }
+ }
+ titleNode.setTextContent(title);
+ }
+
+ public String getReferrer()
+ {
+ // TODO getReferrer
+ return null;
+ }
+
+ public String getDomain()
+ {
+ try
+ {
+ URL url = new URL(getDocumentURI());
+ return url.getHost();
+ }
+ catch (MalformedURLException e)
+ {
+ return null;
+ }
+ }
+
+ public String getURL()
+ {
+ return getDocumentURI();
+ }
+
+ public HTMLElement getBody()
+ {
+ Node html = getDocumentElement();
+ if (html != null)
+ {
+ Node body = getChildNodeByName(html, "body");
+ if (body == null)
+ {
+ body = getChildNodeByName(html, "frameset");
+ }
+ return (HTMLElement) body;
+ }
+ return null;
+ }
+
+ public void setBody(HTMLElement body)
+ {
+ Node html = getDocumentElement();
+ if (html == null)
+ {
+ html = createElement("html");
+ appendChild(html);
+ }
+ Node ref = getBody();
+ if (ref == null)
+ {
+ html.appendChild(body);
+ }
+ else
+ {
+ html.replaceChild(body, ref);
+ }
+ }
+
+ public HTMLCollection getImages()
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName("img");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLCollection getApplets()
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName("object");
+ ret.addNodeName("applet");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLCollection getLinks()
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName("area");
+ ret.addNodeName("a");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLCollection getForms()
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName("form");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLCollection getAnchors()
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName("a");
+ ret.addAttributeName("name");
+ ret.evaluate();
+ return ret;
+ }
+
+ public String getCookie()
+ {
+ // TODO getCookie
+ return null;
+ }
+
+ public void setCookie(String cookie)
+ {
+ // TODO setCookie
+ }
+
+ public void open()
+ {
+ // TODO open
+ }
+
+ public void close()
+ {
+ // TODO close
+ }
+
+ public void write(String text)
+ {
+ // TODO write
+ }
+
+ public void writeln(String text)
+ {
+ // TODO write
+ }
+
+ public NodeList getElementsByName(String name)
+ {
+ DomHTMLCollection ret = new DomHTMLCollection(this, this);
+ ret.addNodeName(name);
+ ret.evaluate();
+ return ret;
+ // TODO xhtml: return only form controls (?)
+ }
+
+ public Element createElement(String tagName)
+ {
+ return createElementNS(null, tagName);
+ }
+
+ public Element createElementNS(String uri, String qName)
+ {
+ /* If a non-HTML element, use the default implementation. */
+ if (uri != null && !HTML_NS_URIS.contains(uri))
+ {
+ return super.createElementNS(uri, qName);
+ }
+ String localName = qName.toLowerCase();
+ int ci = qName.indexOf(':');
+ if (ci != -1)
+ {
+ localName = qName.substring(ci + 1);
+ }
+ Class t = (Class) ELEMENT_CLASSES.get(localName);
+ /* If a non-HTML element, use the default implementation. */
+ if (t == null)
+ {
+ return super.createElementNS(uri, qName);
+ }
+ try
+ {
+ Constructor c = t.getDeclaredConstructor(ELEMENT_PT);
+ Object[] args = new Object[] { this, uri, qName };
+ return (Element) c.newInstance(args);
+ }
+ catch (Exception e)
+ {
+ DOMException e2 = new DomDOMException(DOMException.TYPE_MISMATCH_ERR);
+ e2.initCause(e);
+ throw e2;
+ }
+ }
+
+}
+
--- /dev/null
+/* DomHTMLElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import gnu.xml.dom.DomElement;
+import gnu.xml.dom.DomEvent;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.events.UIEvent;
+import org.w3c.dom.html2.HTMLElement;
+
+/**
+ * Abstract implementation of an HTML element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public abstract class DomHTMLElement
+ extends DomElement
+ implements HTMLElement
+{
+
+ protected DomHTMLElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ /**
+ * Returns the value of the specified attribute.
+ * The attribute name is case insensitive.
+ */
+ protected String getHTMLAttribute(String name)
+ {
+ if (hasAttributes())
+ {
+ NamedNodeMap attrs = getAttributes();
+ int len = attrs.getLength();
+ for (int i = 0; i < len; i++)
+ {
+ Node attr = attrs.item(i);
+ String attrName = attr.getLocalName();
+ if (attrName.equalsIgnoreCase(name))
+ {
+ return attr.getNodeValue();
+ }
+ }
+ }
+ return "";
+ }
+
+ protected int getIntHTMLAttribute(String name)
+ {
+ String value = getHTMLAttribute(name);
+ if (value == null)
+ {
+ return -1;
+ }
+ try
+ {
+ return Integer.parseInt(value);
+ }
+ catch (NumberFormatException e)
+ {
+ return -1;
+ }
+ }
+
+ protected boolean getBooleanHTMLAttribute(String name)
+ {
+ String value = getHTMLAttribute(name);
+ return value != null;
+ }
+
+ /**
+ * Sets the value of the specified attribute.
+ * The attribute name is case insensitive.
+ */
+ protected void setHTMLAttribute(String name, String value)
+ {
+ Node attr;
+ NamedNodeMap attrs = getAttributes();
+ int len = attrs.getLength();
+ for (int i = 0; i < len; i++)
+ {
+ attr = attrs.item(i);
+ String attrName = attr.getLocalName();
+ if (attrName.equalsIgnoreCase(name))
+ {
+ if (value != null)
+ {
+ attr.setNodeValue(value);
+ }
+ else
+ {
+ attrs.removeNamedItem(attr.getNodeName());
+ }
+ return;
+ }
+ }
+ if (value != null)
+ {
+ // Create a new attribute
+ DomHTMLDocument doc = (DomHTMLDocument) getOwnerDocument();
+ // XXX namespace URI for attribute?
+ attr = doc.createAttribute(name);
+ attr.setNodeValue(value);
+ }
+ }
+
+ protected void setIntHTMLAttribute(String name, int value)
+ {
+ setHTMLAttribute(name, Integer.toString(value));
+ }
+
+ protected void setBooleanHTMLAttribute(String name, boolean value)
+ {
+ setHTMLAttribute(name, value ? name : null);
+ }
+
+ /**
+ * Returns the first parent element with the specified name.
+ */
+ protected Node getParentElement(String name)
+ {
+ for (Node parent = getParentNode(); parent != null;
+ parent = parent.getParentNode())
+ {
+ if (name.equalsIgnoreCase(parent.getLocalName()))
+ {
+ return parent;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the first child element with the specified name.
+ */
+ protected Node getChildElement(String name)
+ {
+ for (Node child = getFirstChild(); child != null;
+ child = child.getNextSibling())
+ {
+ if (name.equalsIgnoreCase(child.getLocalName()))
+ {
+ return child;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the index of this element among elements of the same name,
+ * relative to its parent.
+ */
+ protected int getIndex()
+ {
+ int index = 0;
+ Node parent = getParentNode();
+ if (parent != null)
+ {
+ for (Node ctx = parent.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (ctx == this)
+ {
+ return index;
+ }
+ index++;
+ }
+ }
+ throw new DomDOMException(DOMException.NOT_FOUND_ERR);
+ }
+
+ protected void dispatchUIEvent(String name)
+ {
+ UIEvent event = new DomEvent.DomUIEvent(name);
+ dispatchEvent(event);
+ }
+
+ public String getId()
+ {
+ return getHTMLAttribute("id");
+ }
+
+ public void setId(String id)
+ {
+ setHTMLAttribute("id", id);
+ }
+
+ public String getTitle()
+ {
+ return getHTMLAttribute("title");
+ }
+
+ public void setTitle(String title)
+ {
+ setHTMLAttribute("title", title);
+ }
+
+ public String getLang()
+ {
+ return getHTMLAttribute("lang");
+ }
+
+ public void setLang(String lang)
+ {
+ setHTMLAttribute("lang", lang);
+ }
+
+ public String getDir()
+ {
+ return getHTMLAttribute("dir");
+ }
+
+ public void setDir(String dir)
+ {
+ setHTMLAttribute("dir", dir);
+ }
+
+ public String getClassName()
+ {
+ return getHTMLAttribute("class");
+ }
+
+ public void setClassName(String className)
+ {
+ setHTMLAttribute("class", className);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLFieldSetElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFieldSetElement;
+import org.w3c.dom.html2.HTMLFormElement;
+
+/**
+ * An HTML 'FIELDSET' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLFieldSetElement
+ extends DomHTMLElement
+ implements HTMLFieldSetElement
+{
+
+ protected DomHTMLFieldSetElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLFontElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFontElement;
+
+/**
+ * An HTML 'FONT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLFontElement
+ extends DomHTMLElement
+ implements HTMLFontElement
+{
+
+ protected DomHTMLFontElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getColor()
+ {
+ return getHTMLAttribute("color");
+ }
+
+ public void setColor(String color)
+ {
+ setHTMLAttribute("color", color);
+ }
+
+ public String getFace()
+ {
+ return getHTMLAttribute("face");
+ }
+
+ public void setFace(String face)
+ {
+ setHTMLAttribute("face", face);
+ }
+
+ public String getSize()
+ {
+ return getHTMLAttribute("size");
+ }
+
+ public void setSize(String size)
+ {
+ setHTMLAttribute("size", size);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLFormElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLFormElement;
+
+/**
+ * An HTML 'FORM' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLFormElement
+ extends DomHTMLElement
+ implements HTMLFormElement
+{
+
+ protected DomHTMLFormElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLCollection getElements()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("input");
+ ret.addNodeName("button");
+ ret.addNodeName("select");
+ ret.addNodeName("textarea");
+ ret.addNodeName("isindex");
+ ret.addNodeName("label");
+ ret.addNodeName("option");
+ ret.evaluate();
+ return ret;
+ }
+
+ public int getLength()
+ {
+ return getElements().getLength();
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getAcceptCharset()
+ {
+ return getHTMLAttribute("accept-charset");
+ }
+
+ public void setAcceptCharset(String acceptCharset)
+ {
+ setHTMLAttribute("accept-charset", acceptCharset);
+ }
+
+ public String getAction()
+ {
+ return getHTMLAttribute("action");
+ }
+
+ public void setAction(String action)
+ {
+ setHTMLAttribute("action", action);
+ }
+
+ public String getEnctype()
+ {
+ return getHTMLAttribute("enctype");
+ }
+
+ public void setEnctype(String enctype)
+ {
+ setHTMLAttribute("enctype", enctype);
+ }
+
+ public String getMethod()
+ {
+ return getHTMLAttribute("method");
+ }
+
+ public void setMethod(String method)
+ {
+ setHTMLAttribute("method", method);
+ }
+
+ public String getTarget()
+ {
+ return getHTMLAttribute("target");
+ }
+
+ public void setTarget(String target)
+ {
+ setHTMLAttribute("target", target);
+ }
+
+ public void submit()
+ {
+ dispatchUIEvent("submit");
+ }
+
+ public void reset()
+ {
+ dispatchUIEvent("reset");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLFrameElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.html2.HTMLFrameElement;
+
+/**
+ * An HTML 'FRAME' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLFrameElement
+ extends DomHTMLElement
+ implements HTMLFrameElement
+{
+
+ protected DomHTMLFrameElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getFrameBorder()
+ {
+ return getHTMLAttribute("frameborder");
+ }
+
+ public void setFrameBorder(String frameBorder)
+ {
+ setHTMLAttribute("frameborder", frameBorder);
+ }
+
+ public String getLongDesc()
+ {
+ return getHTMLAttribute("longdesc");
+ }
+
+ public void setLongDesc(String longDesc)
+ {
+ setHTMLAttribute("longdesc", longDesc);
+ }
+
+ public String getMarginHeight()
+ {
+ return getHTMLAttribute("marginheight");
+ }
+
+ public void setMarginHeight(String marginHeight)
+ {
+ setHTMLAttribute("marginheight", marginHeight);
+ }
+
+ public String getMarginWidth()
+ {
+ return getHTMLAttribute("marginwidth");
+ }
+
+ public void setMarginWidth(String marginWidth)
+ {
+ setHTMLAttribute("marginwidth", marginWidth);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public boolean getNoResize()
+ {
+ return getBooleanHTMLAttribute("noresize");
+ }
+
+ public void setNoResize(boolean noResize)
+ {
+ setBooleanHTMLAttribute("noresize", noResize);
+ }
+
+ public String getScrolling()
+ {
+ return getHTMLAttribute("scrolling");
+ }
+
+ public void setScrolling(String scrolling)
+ {
+ setHTMLAttribute("scrolling", scrolling);
+ }
+
+ public String getSrc()
+ {
+ return getHTMLAttribute("src");
+ }
+
+ public void setSrc(String src)
+ {
+ setHTMLAttribute("src", src);
+ }
+
+ public Document getContentDocument()
+ {
+ // TODO getContentDocument
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLFrameSetElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFrameSetElement;
+
+/**
+ * An HTML 'FRAMESET' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLFrameSetElement
+ extends DomHTMLElement
+ implements HTMLFrameSetElement
+{
+
+ protected DomHTMLFrameSetElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getCols()
+ {
+ return getHTMLAttribute("cols");
+ }
+
+ public void setCols(String cols)
+ {
+ setHTMLAttribute("cols", cols);
+ }
+
+ public String getRows()
+ {
+ return getHTMLAttribute("rows");
+ }
+
+ public void setRows(String rows)
+ {
+ setHTMLAttribute("rows", rows);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLHRElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLHRElement;
+
+/**
+ * An HTML 'HR' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLHRElement
+ extends DomHTMLElement
+ implements HTMLHRElement
+{
+
+ protected DomHTMLHRElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public boolean getNoShade()
+ {
+ return getBooleanHTMLAttribute("noshade");
+ }
+
+ public void setNoShade(boolean noShade)
+ {
+ setBooleanHTMLAttribute("noshade", noShade);
+ }
+
+ public String getSize()
+ {
+ return getHTMLAttribute("size");
+ }
+
+ public void setSize(String size)
+ {
+ setHTMLAttribute("size", size);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLHeadElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLHeadElement;
+
+/**
+ * An HTML 'HEAD' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLHeadElement
+ extends DomHTMLElement
+ implements HTMLHeadElement
+{
+
+ protected DomHTMLHeadElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getProfile()
+ {
+ return getHTMLAttribute("profile");
+ }
+
+ public void setProfile(String profile)
+ {
+ setHTMLAttribute("profile", profile);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLHeadingElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLHeadingElement;
+
+/**
+ * An HTML 'H1', 'H2', 'H3', 'H4', 'H5', or 'H6' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLHeadingElement
+ extends DomHTMLElement
+ implements HTMLHeadingElement
+{
+
+ protected DomHTMLHeadingElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLHtmlElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLHtmlElement;
+
+/**
+ * An HTML 'HTML' top-level element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLHtmlElement
+ extends DomHTMLElement
+ implements HTMLHtmlElement
+{
+
+ protected DomHTMLHtmlElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getVersion()
+ {
+ return getHTMLAttribute("version");
+ }
+
+ public void setVersion(String version)
+ {
+ setHTMLAttribute("version", version);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLIFrameElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.html2.HTMLIFrameElement;
+
+/**
+ * An HTML 'IFRAME' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLIFrameElement
+ extends DomHTMLElement
+ implements HTMLIFrameElement
+{
+
+ protected DomHTMLIFrameElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getFrameBorder()
+ {
+ return getHTMLAttribute("frameborder");
+ }
+
+ public void setFrameBorder(String frameBorder)
+ {
+ setHTMLAttribute("frameborder", frameBorder);
+ }
+
+ public String getHeight()
+ {
+ return getHTMLAttribute("height");
+ }
+
+ public void setHeight(String height)
+ {
+ setHTMLAttribute("height", height);
+ }
+
+ public String getLongDesc()
+ {
+ return getHTMLAttribute("longdesc");
+ }
+
+ public void setLongDesc(String longDesc)
+ {
+ setHTMLAttribute("longdesc", longDesc);
+ }
+
+ public String getMarginHeight()
+ {
+ return getHTMLAttribute("marginheight");
+ }
+
+ public void setMarginHeight(String marginHeight)
+ {
+ setHTMLAttribute("marginheight", marginHeight);
+ }
+
+ public String getMarginWidth()
+ {
+ return getHTMLAttribute("marginwidth");
+ }
+
+ public void setMarginWidth(String marginWidth)
+ {
+ setHTMLAttribute("marginwidth", marginWidth);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getScrolling()
+ {
+ return getHTMLAttribute("scrolling");
+ }
+
+ public void setScrolling(String scrolling)
+ {
+ setHTMLAttribute("scrolling", scrolling);
+ }
+
+ public String getSrc()
+ {
+ return getHTMLAttribute("src");
+ }
+
+ public void setSrc(String src)
+ {
+ setHTMLAttribute("src", src);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+ public Document getContentDocument()
+ {
+ // TODO getContentDocument
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLImageElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLImageElement;
+
+/**
+ * An HTML 'IMG' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLImageElement
+ extends DomHTMLElement
+ implements HTMLImageElement
+{
+
+ protected DomHTMLImageElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getAlt()
+ {
+ return getHTMLAttribute("alt");
+ }
+
+ public void setAlt(String alt)
+ {
+ setHTMLAttribute("alt", alt);
+ }
+
+ public String getBorder()
+ {
+ return getHTMLAttribute("border");
+ }
+
+ public void setBorder(String border)
+ {
+ setHTMLAttribute("border", border);
+ }
+
+ public int getHeight()
+ {
+ return getIntHTMLAttribute("height");
+ }
+
+ public void setHeight(int height)
+ {
+ setIntHTMLAttribute("height", height);
+ }
+
+ public int getHspace()
+ {
+ return getIntHTMLAttribute("hspace");
+ }
+
+ public void setHspace(int hspace)
+ {
+ setIntHTMLAttribute("hspace", hspace);
+ }
+
+ public boolean getIsMap()
+ {
+ return getBooleanHTMLAttribute("ismap");
+ }
+
+ public void setIsMap(boolean isMap)
+ {
+ setBooleanHTMLAttribute("ismap", isMap);
+ }
+
+ public String getLongDesc()
+ {
+ return getHTMLAttribute("longdesc");
+ }
+
+ public void setLongDesc(String longDesc)
+ {
+ setHTMLAttribute("longdesc", longDesc);
+ }
+
+ public String getSrc()
+ {
+ return getHTMLAttribute("src");
+ }
+
+ public void setSrc(String src)
+ {
+ setHTMLAttribute("src", src);
+ }
+
+ public String getUseMap()
+ {
+ return getHTMLAttribute("usemap");
+ }
+
+ public void setUseMap(String useMap)
+ {
+ setHTMLAttribute("usemap", useMap);
+ }
+
+ public int getVspace()
+ {
+ return getIntHTMLAttribute("vspace");
+ }
+
+ public void setVspace(int vspace)
+ {
+ setIntHTMLAttribute("vspace", vspace);
+ }
+
+ public int getWidth()
+ {
+ return getIntHTMLAttribute("width");
+ }
+
+ public void setWidth(int width)
+ {
+ setIntHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLImpl.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomImpl;
+import org.w3c.dom.Document;
+
+/**
+ * Specialised DOMImplementation for creating HTML documents.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLImpl
+ extends DomImpl
+{
+
+ protected Document createDocument()
+ {
+ return new DomHTMLDocument(this);
+ }
+
+ public Object getFeature(String feature, String version)
+ {
+ if (hasFeature(feature, version))
+ {
+ return this;
+ }
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLInputElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLInputElement;
+
+/**
+ * An HTML 'INPUT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLInputElement
+ extends DomHTMLElement
+ implements HTMLInputElement
+{
+
+ protected String value;
+ protected Boolean checked;
+
+ protected DomHTMLInputElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getDefaultValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setDefaultValue(String defaultValue)
+ {
+ setHTMLAttribute("value", defaultValue);
+ }
+
+ public boolean getDefaultChecked()
+ {
+ return getBooleanHTMLAttribute("checked");
+ }
+
+ public void setDefaultChecked(boolean defaultChecked)
+ {
+ setBooleanHTMLAttribute("checked", defaultChecked);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getAccept()
+ {
+ return getHTMLAttribute("accept");
+ }
+
+ public void setAccept(String accept)
+ {
+ setHTMLAttribute("accept", accept);
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getAlt()
+ {
+ return getHTMLAttribute("alt");
+ }
+
+ public void setAlt(String alt)
+ {
+ setHTMLAttribute("alt", alt);
+ }
+
+ public boolean getChecked()
+ {
+ if (checked == null)
+ {
+ checked = Boolean.valueOf(getDefaultChecked());
+ }
+ return checked.booleanValue();
+ }
+
+ public void setChecked(boolean checked)
+ {
+ this.checked = Boolean.valueOf(checked);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public int getMaxLength()
+ {
+ return getIntHTMLAttribute("maxLength");
+ }
+
+ public void setMaxLength(int maxLength)
+ {
+ setIntHTMLAttribute("maxLength", maxLength);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public boolean getReadOnly()
+ {
+ return getBooleanHTMLAttribute("readonly");
+ }
+
+ public void setReadOnly(boolean readOnly)
+ {
+ setBooleanHTMLAttribute("readonly", readOnly);
+ }
+
+ public int getSize()
+ {
+ return getIntHTMLAttribute("size");
+ }
+
+ public void setSize(int size)
+ {
+ setIntHTMLAttribute("size", size);
+ }
+
+ public String getSrc()
+ {
+ return getHTMLAttribute("src");
+ }
+
+ public void setSrc(String src)
+ {
+ setHTMLAttribute("src", src);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+ public String getUseMap()
+ {
+ return getHTMLAttribute("usemap");
+ }
+
+ public void setUseMap(String useMap)
+ {
+ setHTMLAttribute("usemap", useMap);
+ }
+
+ public String getValue()
+ {
+ if (value == null)
+ {
+ value = getDefaultValue();
+ }
+ return value;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ public void blur()
+ {
+ dispatchUIEvent("blur");
+ }
+
+ public void focus()
+ {
+ dispatchUIEvent("focus");
+ }
+
+ public void select()
+ {
+ dispatchUIEvent("select");
+ }
+
+ public void click()
+ {
+ dispatchUIEvent("click");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLIsIndexElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLIsIndexElement;
+
+/**
+ * An HTML 'ISINDEX' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLIsIndexElement
+ extends DomHTMLElement
+ implements HTMLIsIndexElement
+{
+
+ protected DomHTMLIsIndexElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getPrompt()
+ {
+ return getHTMLAttribute("prompt");
+ }
+
+ public void setPrompt(String prompt)
+ {
+ setHTMLAttribute("prompt", prompt);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLLIElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLLIElement;
+
+/**
+ * An HTML 'LI' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLLIElement
+ extends DomHTMLElement
+ implements HTMLLIElement
+{
+
+ protected DomHTMLLIElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+ public int getValue()
+ {
+ return getIntHTMLAttribute("value");
+ }
+
+ public void setValue(int value)
+ {
+ setIntHTMLAttribute("value", value);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLLabelElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLLabelElement;
+
+/**
+ * An HTML 'LABEL' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLLabelElement
+ extends DomHTMLElement
+ implements HTMLLabelElement
+{
+
+ protected DomHTMLLabelElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public String getHtmlFor()
+ {
+ return getHTMLAttribute("for");
+ }
+
+ public void setHtmlFor(String htmlFor)
+ {
+ setHTMLAttribute("for", htmlFor);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLLegendElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLLegendElement;
+
+/**
+ * An HTML 'LEGEND' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLLegendElement
+ extends DomHTMLElement
+ implements HTMLLegendElement
+{
+
+ protected DomHTMLLegendElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLLinkElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLLinkElement;
+
+/**
+ * An HTML 'LINK' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLLinkElement
+ extends DomHTMLElement
+ implements HTMLLinkElement
+{
+
+ protected DomHTMLLinkElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getCharset()
+ {
+ return getHTMLAttribute("charset");
+ }
+
+ public void setCharset(String charset)
+ {
+ setHTMLAttribute("charset", charset);
+ }
+
+ public String getHref()
+ {
+ return getHTMLAttribute("href");
+ }
+
+ public void setHref(String href)
+ {
+ setHTMLAttribute("href", href);
+ }
+
+ public String getHreflang()
+ {
+ return getHTMLAttribute("hreflang");
+ }
+
+ public void setHreflang(String hreflang)
+ {
+ setHTMLAttribute("hreflang", hreflang);
+ }
+
+ public String getMedia()
+ {
+ return getHTMLAttribute("media");
+ }
+
+ public void setMedia(String media)
+ {
+ setHTMLAttribute("media", media);
+ }
+
+ public String getRel()
+ {
+ return getHTMLAttribute("rel");
+ }
+
+ public void setRel(String rel)
+ {
+ setHTMLAttribute("rel", rel);
+ }
+
+ public String getRev()
+ {
+ return getHTMLAttribute("rev");
+ }
+
+ public void setRev(String rev)
+ {
+ setHTMLAttribute("rev", rev);
+ }
+
+ public String getTarget()
+ {
+ return getHTMLAttribute("target");
+ }
+
+ public void setTarget(String target)
+ {
+ setHTMLAttribute("target", target);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLMapElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLMapElement;
+
+/**
+ * An HTML 'MAP' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLMapElement
+ extends DomHTMLElement
+ implements HTMLMapElement
+{
+
+ protected DomHTMLMapElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLCollection getAreas()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("area");
+ ret.evaluate();
+ return ret;
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLMenuElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLMenuElement;
+
+/**
+ * An HTML 'MENU' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLMenuElement
+ extends DomHTMLElement
+ implements HTMLMenuElement
+{
+
+ protected DomHTMLMenuElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getCompact()
+ {
+ return getBooleanHTMLAttribute("compact");
+ }
+
+ public void setCompact(boolean compact)
+ {
+ setBooleanHTMLAttribute("compact", compact);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLMetaElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLMetaElement;
+
+/**
+ * An HTML 'META' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLMetaElement
+ extends DomHTMLElement
+ implements HTMLMetaElement
+{
+
+ protected DomHTMLMetaElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getContent()
+ {
+ return getHTMLAttribute("content");
+ }
+
+ public void setContent(String content)
+ {
+ setHTMLAttribute("content", content);
+ }
+
+ public String getHttpEquiv()
+ {
+ return getHTMLAttribute("http-equiv");
+ }
+
+ public void setHttpEquiv(String httpEquiv)
+ {
+ setHTMLAttribute("http-equiv", httpEquiv);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getScheme()
+ {
+ return getHTMLAttribute("scheme");
+ }
+
+ public void setScheme(String scheme)
+ {
+ setHTMLAttribute("scheme", scheme);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLModElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLModElement;
+
+/**
+ * An HTML 'INS' or 'DEL' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLModElement
+ extends DomHTMLElement
+ implements HTMLModElement
+{
+
+ protected DomHTMLModElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getCite()
+ {
+ return getHTMLAttribute("cite");
+ }
+
+ public void setCite(String cite)
+ {
+ setHTMLAttribute("cite", cite);
+ }
+
+ public String getDateTime()
+ {
+ return getHTMLAttribute("datetime");
+ }
+
+ public void setDateTime(String dateTime)
+ {
+ setHTMLAttribute("datetime", dateTime);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLOListElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLOListElement;
+
+/**
+ * An HTML 'OL' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLOListElement
+ extends DomHTMLElement
+ implements HTMLOListElement
+{
+
+ protected DomHTMLOListElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getCompact()
+ {
+ return getBooleanHTMLAttribute("compact");
+ }
+
+ public void setCompact(boolean compact)
+ {
+ setBooleanHTMLAttribute("compact", compact);
+ }
+
+ public int getStart()
+ {
+ return getIntHTMLAttribute("start");
+ }
+
+ public void setStart(int start)
+ {
+ setIntHTMLAttribute("start", start);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLObjectElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLObjectElement;
+
+/**
+ * An HTML 'OBJECT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLObjectElement
+ extends DomHTMLElement
+ implements HTMLObjectElement
+{
+
+ protected DomHTMLObjectElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getCode()
+ {
+ return getHTMLAttribute("code");
+ }
+
+ public void setCode(String code)
+ {
+ setHTMLAttribute("code", code);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getArchive()
+ {
+ return getHTMLAttribute("archive");
+ }
+
+ public void setArchive(String archive)
+ {
+ setHTMLAttribute("archive", archive);
+ }
+
+ public String getBorder()
+ {
+ return getHTMLAttribute("border");
+ }
+
+ public void setBorder(String border)
+ {
+ setHTMLAttribute("border", border);
+ }
+
+ public String getCodeBase()
+ {
+ return getHTMLAttribute("codebase");
+ }
+
+ public void setCodeBase(String codeBase)
+ {
+ setHTMLAttribute("codebase", codeBase);
+ }
+
+ public String getCodeType()
+ {
+ return getHTMLAttribute("codetype");
+ }
+
+ public void setCodeType(String codeType)
+ {
+ setHTMLAttribute("codetype", codeType);
+ }
+
+ public String getData()
+ {
+ return getHTMLAttribute("data");
+ }
+
+ public void setData(String data)
+ {
+ setHTMLAttribute("data", data);
+ }
+
+ public boolean getDeclare()
+ {
+ return getBooleanHTMLAttribute("declare");
+ }
+
+ public void setDeclare(boolean declare)
+ {
+ setBooleanHTMLAttribute("declare", declare);
+ }
+
+ public String getHeight()
+ {
+ return getHTMLAttribute("height");
+ }
+
+ public void setHeight(String height)
+ {
+ setHTMLAttribute("height", height);
+ }
+
+ public int getHspace()
+ {
+ return getIntHTMLAttribute("hspace");
+ }
+
+ public void setHspace(int hspace)
+ {
+ setIntHTMLAttribute("hspace", hspace);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getStandby()
+ {
+ return getHTMLAttribute("standby");
+ }
+
+ public void setStandby(String standby)
+ {
+ setHTMLAttribute("standby", standby);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+ public String getUseMap()
+ {
+ return getHTMLAttribute("usemap");
+ }
+
+ public void setUseMap(String useMap)
+ {
+ setHTMLAttribute("usemap", useMap);
+ }
+
+ public int getVspace()
+ {
+ return getIntHTMLAttribute("vspace");
+ }
+
+ public void setVspace(int vspace)
+ {
+ setIntHTMLAttribute("vspace", vspace);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+ public Document getContentDocument()
+ {
+ // TODO getContentDocument
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLOptGroupElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLOptGroupElement;
+
+/**
+ * An HTML 'OPTGROUP' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLOptGroupElement
+ extends DomHTMLElement
+ implements HTMLOptGroupElement
+{
+
+ protected DomHTMLOptGroupElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getLabel()
+ {
+ return getHTMLAttribute("label");
+ }
+
+ public void setLabel(String label)
+ {
+ setHTMLAttribute("label", label);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLOptionElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLOptionElement;
+
+/**
+ * An HTML 'OPTION' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLOptionElement
+ extends DomHTMLElement
+ implements HTMLOptionElement
+{
+
+ protected Boolean selected;
+
+ protected DomHTMLOptionElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public boolean getDefaultSelected()
+ {
+ return getBooleanHTMLAttribute("selected");
+ }
+
+ public void setDefaultSelected(boolean defaultSelected)
+ {
+ setBooleanHTMLAttribute("selected", defaultSelected);
+ }
+
+ public String getText()
+ {
+ return getTextContent();
+ }
+
+ public int getIndex()
+ {
+ return super.getIndex();
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getLabel()
+ {
+ return getHTMLAttribute("label");
+ }
+
+ public void setLabel(String label)
+ {
+ setHTMLAttribute("label", label);
+ }
+
+ public boolean getSelected()
+ {
+ if (selected == null)
+ {
+ selected = Boolean.valueOf(getDefaultSelected());
+ }
+ return selected.booleanValue();
+ }
+
+ public void setSelected(boolean selected)
+ {
+ this.selected = Boolean.valueOf(selected);
+ }
+
+ public String getValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setValue(String value)
+ {
+ setHTMLAttribute("value", value);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLParagraphElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLParagraphElement;
+
+/**
+ * An HTML 'P' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLParagraphElement
+ extends DomHTMLElement
+ implements HTMLParagraphElement
+{
+
+ protected DomHTMLParagraphElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLParamElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLParamElement;
+
+/**
+ * An HTML 'PARAM' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLParamElement
+ extends DomHTMLElement
+ implements HTMLParamElement
+{
+
+ protected DomHTMLParamElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+ public String getValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setValue(String value)
+ {
+ setHTMLAttribute("value", value);
+ }
+
+ public String getValueType()
+ {
+ return getHTMLAttribute("valuetype");
+ }
+
+ public void setValueType(String valueType)
+ {
+ setHTMLAttribute("valuetype", valueType);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLParser.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.xml.dom.html2;
+
+import gnu.javax.swing.text.html.parser.support.Parser;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+
+import javax.swing.text.AttributeSet;
+import javax.swing.text.html.HTML;
+import javax.swing.text.html.parser.DTD;
+import javax.swing.text.html.parser.TagElement;
+
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+import org.w3c.dom.html2.HTMLDocument;
+
+/**
+ * This parser reads HTML from the given stream and stores into
+ * {@link HTMLDocument}. The HTML tag becomes the {@link Node}.
+ * The tag attributes become the node attributes. The text inside
+ * HTML tag is inserted as one or several text nodes. The nested
+ * HTML tags are inserted as child nodes.
+ *
+ * If the strict tree structure, closing the tag means closing all
+ * nested tags. To work around this, this parser closes the nested
+ * tags and immediately reopens them after the closed tag.
+ * In this way, <code><b><i>c</b>d</code>
+ * is parsed as <code><b><i>c</i></b><i>d</code> .
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class DomHTMLParser
+ extends gnu.javax.swing.text.html.parser.support.Parser
+{
+ /**
+ * The target where HTML document will be inserted.
+ */
+ protected DomHTMLDocument document;
+
+ /**
+ * The subsequently created new nodes will be inserted as the
+ * childs of this cursor.
+ */
+ protected Node cursor;
+
+ /**
+ * Create parser using the given DTD.
+ *
+ * @param dtd the DTD (for example,
+ * {@link gnu.javax.swing.text.html.parser.HTML_401F}).
+ */
+ public DomHTMLParser(DTD dtd)
+ {
+ super(dtd);
+ }
+
+ /**
+ * Parse SGML insertion ( <! ... > ).
+ * Currently just treats it as comment.
+ */
+ public boolean parseMarkupDeclarations(StringBuffer strBuff)
+ throws java.io.IOException
+ {
+ Node c = document.createComment(strBuff.toString());
+ cursor.appendChild(c);
+ return false;
+ }
+
+ /**
+ * Read the document, present in the given stream, and
+ * return the corresponding {@link HTMLDocument}.
+ *
+ * @param input a stream to read from.
+ * @return a document, reflecting the structure of the provided HTML
+ * text.
+ *
+ * @throws IOException if the reader throws one.
+ */
+ public HTMLDocument parseDocument(Reader input)
+ throws IOException
+ {
+ try
+ {
+ document = new DomHTMLDocument();
+
+ cursor = document;
+
+ parse(input);
+
+ DomHTMLDocument h = document;
+ document = null;
+ return h;
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ throw new IOException("Exception: " + ex.getMessage());
+ }
+ }
+
+ /**
+ * Create a new node.
+ * @param name the name of node, case insensitive.
+ * @return the created node.
+ */
+ protected Node createNode(String name)
+ {
+ Node new_node = document.createElement(name.toLowerCase());
+ AttributeSet hatts = getAttributes();
+ NamedNodeMap natts = new_node.getAttributes();
+
+ Enumeration enumeration = hatts.getAttributeNames();
+ Object key;
+ Node attribute;
+
+ while (hatts != null)
+ {
+ while (enumeration.hasMoreElements())
+ {
+ key = enumeration.nextElement();
+ attribute = document.createAttribute(key.toString());
+ attribute.setNodeValue(hatts.getAttribute(key).toString());
+ natts.setNamedItem(attribute);
+ }
+
+ // The default values are stored in a parent node.
+ hatts = hatts.getResolveParent();
+ }
+
+ return new_node;
+ }
+
+ /**
+ * Handle comment by inserting the comment node.
+ * @param text the comment text.
+ */
+ protected void handleComment(char[] text)
+ {
+ Node c = document.createComment(new String(text));
+ cursor.appendChild(c);
+ }
+
+ /**
+ * Handle the tag with no content.
+ * @param tag the tag to handle.
+ */
+ protected void handleEmptyTag(TagElement tag)
+ {
+ String name = tag.getHTMLTag().toString();
+
+ if (name.equalsIgnoreCase("#pcdata"))
+ return;
+
+ Node c = createNode(name);
+ cursor.appendChild(c);
+ }
+
+ /**
+ * Close the given tag. Close and reopen all nested tags.
+ * @param tag the tag to close.
+ */
+ protected void handleEndTag(TagElement tag)
+ {
+ String name = tag.getHTMLTag().toString();
+ String nname = cursor.getNodeName();
+
+ // Closing the current tag.
+ if (nname != null && nname.equalsIgnoreCase(name))
+ {
+ cursor = cursor.getParentNode();
+ }
+ else
+ {
+ Node nCursor = cursor.getParentNode();
+
+ // Remember the opened nodes.
+ LinkedList open = new LinkedList();
+ Node close = cursor;
+ while (close != null && !close.getNodeName().equalsIgnoreCase(name))
+ {
+ if (close != document)
+ open.addFirst(close);
+ close = close.getParentNode();
+ }
+
+ if (close == null)
+ cursor = document;
+ else
+ cursor = close.getParentNode();
+
+ // Insert the copies of the opened nodes.
+ Iterator iter = open.iterator();
+ while (iter.hasNext())
+ {
+ Node item = (Node) iter.next();
+ Node copy = item.cloneNode(true);
+ cursor.appendChild(copy);
+ cursor = copy;
+ }
+ }
+ }
+
+ /**
+ * Handle the start tag by inserting the HTML element.
+ * @param tag the tag to handle.
+ */
+ protected void handleStartTag(TagElement tag)
+ {
+ HTML.Tag h = tag.getHTMLTag();
+ Node c = createNode(h.toString());
+ cursor.appendChild(c);
+ cursor = c;
+ }
+
+ /**
+ * Handle text by inserting the text node.
+ * @param text the text to insert.
+ */
+ protected void handleText(char[] text)
+ {
+ Node c = document.createTextNode(text, 0, text.length);
+ cursor.appendChild(c);
+ }
+}
--- /dev/null
+/* DomHTMLPreElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLPreElement;
+
+/**
+ * An HTML 'PRE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLPreElement
+ extends DomHTMLElement
+ implements HTMLPreElement
+{
+
+ protected DomHTMLPreElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public int getWidth()
+ {
+ return getIntHTMLAttribute("width");
+ }
+
+ public void setWidth(int width)
+ {
+ setIntHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLQuoteElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLQuoteElement;
+
+/**
+ * An HTML 'Q' or 'BLOCKQUOTE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLQuoteElement
+ extends DomHTMLElement
+ implements HTMLQuoteElement
+{
+
+ protected DomHTMLQuoteElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getCite()
+ {
+ return getHTMLAttribute("cite");
+ }
+
+ public void setCite(String cite)
+ {
+ setHTMLAttribute("cite", cite);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLScriptElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLScriptElement;
+
+/**
+ * An HTML 'SCRIPT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLScriptElement
+ extends DomHTMLElement
+ implements HTMLScriptElement
+{
+
+ protected DomHTMLScriptElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getText()
+ {
+ return getTextContent();
+ }
+
+ public void setText(String text)
+ {
+ setTextContent(text);
+ }
+
+ public String getHtmlFor()
+ {
+ return getHTMLAttribute("for");
+ }
+
+ public void setHtmlFor(String htmlFor)
+ {
+ setHTMLAttribute("for", htmlFor);
+ }
+
+ public String getEvent()
+ {
+ return getHTMLAttribute("event");
+ }
+
+ public void setEvent(String event)
+ {
+ setHTMLAttribute("event", event);
+ }
+
+ public String getCharset()
+ {
+ return getHTMLAttribute("charset");
+ }
+
+ public void setCharset(String charset)
+ {
+ setHTMLAttribute("charset", charset);
+ }
+
+ public boolean getDefer()
+ {
+ return getBooleanHTMLAttribute("defer");
+ }
+
+ public void setDefer(boolean defer)
+ {
+ setBooleanHTMLAttribute("defer", defer);
+ }
+
+ public String getSrc()
+ {
+ return getHTMLAttribute("src");
+ }
+
+ public void setSrc(String src)
+ {
+ setHTMLAttribute("src", src);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLSelectElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.html2.HTMLElement;
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLOptionElement;
+import org.w3c.dom.html2.HTMLOptionsCollection;
+import org.w3c.dom.html2.HTMLSelectElement;
+
+/**
+ * An HTML 'SELECT' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLSelectElement
+ extends DomHTMLElement
+ implements HTMLSelectElement
+{
+
+ protected DomHTMLSelectElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public int getSelectedIndex()
+ {
+ HTMLOptionsCollection options = getOptions();
+ int len = options.getLength();
+ for (int i = 0; i < len; i++)
+ {
+ HTMLOptionElement option = (HTMLOptionElement) options.item(i);
+ if (option.getSelected())
+ {
+ return i;
+ }
+ }
+ return -1;
+ }
+
+ public void setSelectedIndex(int selectedIndex)
+ {
+ HTMLOptionsCollection options = getOptions();
+ int len = options.getLength();
+ if (selectedIndex < 0 || selectedIndex >= len)
+ {
+ throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
+ }
+ for (int i = 0; i < len; i++)
+ {
+ HTMLOptionElement option = (HTMLOptionElement) options.item(i);
+ option.setSelected(i == selectedIndex);
+ }
+ }
+
+ public String getValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setValue(String value)
+ {
+ setHTMLAttribute("value", value);
+ }
+
+ public int getLength()
+ {
+ return getIntHTMLAttribute("length");
+ }
+
+ public void setLength(int length)
+ {
+ setIntHTMLAttribute("length", length);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public HTMLOptionsCollection getOptions()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("option");
+ ret.evaluate();
+ return ret;
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public boolean getMultiple()
+ {
+ return getBooleanHTMLAttribute("multiple");
+ }
+
+ public void setMultiple(boolean multiple)
+ {
+ setBooleanHTMLAttribute("multiple", multiple);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public int getSize()
+ {
+ return getIntHTMLAttribute("size");
+ }
+
+ public void setSize(int size)
+ {
+ setIntHTMLAttribute("size", size);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public void add(HTMLElement element, HTMLElement before)
+ {
+ insertBefore(before, element);
+ }
+
+ public void remove(int index)
+ {
+ HTMLOptionsCollection options = getOptions();
+ int len = options.getLength();
+ if (index < 0 || index >= len)
+ {
+ throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
+ }
+ HTMLOptionElement option = (HTMLOptionElement) options.item(index);
+ option.getParentNode().removeChild(option);
+ }
+
+ public void blur()
+ {
+ dispatchUIEvent("blur");
+ }
+
+ public void focus()
+ {
+ dispatchUIEvent("focus");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLStyleElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLStyleElement;
+
+/**
+ * An HTML 'STYLE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLStyleElement
+ extends DomHTMLElement
+ implements HTMLStyleElement
+{
+
+ protected DomHTMLStyleElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getMedia()
+ {
+ return getHTMLAttribute("media");
+ }
+
+ public void setMedia(String media)
+ {
+ setHTMLAttribute("media", media);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableCaptionElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLTableCaptionElement;
+
+/**
+ * An HTML 'CAPTION' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableCaptionElement
+ extends DomHTMLElement
+ implements HTMLTableCaptionElement
+{
+
+ protected DomHTMLTableCaptionElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableCellElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLTableCellElement;
+
+/**
+ * An HTML 'TH' or 'TD' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableCellElement
+ extends DomHTMLElement
+ implements HTMLTableCellElement
+{
+
+ protected DomHTMLTableCellElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public int getCellIndex()
+ {
+ return getIndex();
+ }
+
+ public String getAbbr()
+ {
+ return getHTMLAttribute("abbr");
+ }
+
+ public void setAbbr(String abbr)
+ {
+ setHTMLAttribute("abbr", abbr);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getAxis()
+ {
+ return getHTMLAttribute("axis");
+ }
+
+ public void setAxis(String axis)
+ {
+ setHTMLAttribute("axis", axis);
+ }
+
+ public String getBgColor()
+ {
+ return getHTMLAttribute("bgcolor");
+ }
+
+ public void setBgColor(String bgColor)
+ {
+ setHTMLAttribute("bgcolor", bgColor);
+ }
+
+ public String getCh()
+ {
+ return getHTMLAttribute("char");
+ }
+
+ public void setCh(String ch)
+ {
+ setHTMLAttribute("char", ch);
+ }
+
+ public String getChOff()
+ {
+ return getHTMLAttribute("charoff");
+ }
+
+ public void setChOff(String chOff)
+ {
+ setHTMLAttribute("charoff", chOff);
+ }
+
+ public int getColSpan()
+ {
+ return getIntHTMLAttribute("colspan");
+ }
+
+ public void setColSpan(int colSpan)
+ {
+ setIntHTMLAttribute("colspan", colSpan);
+ }
+
+ public String getHeaders()
+ {
+ return getHTMLAttribute("headers");
+ }
+
+ public void setHeaders(String headers)
+ {
+ setHTMLAttribute("headers", headers);
+ }
+
+ public String getHeight()
+ {
+ return getHTMLAttribute("height");
+ }
+
+ public void setHeight(String height)
+ {
+ setHTMLAttribute("height", height);
+ }
+
+ public boolean getNoWrap()
+ {
+ return getBooleanHTMLAttribute("nowrap");
+ }
+
+ public void setNoWrap(boolean noWrap)
+ {
+ setBooleanHTMLAttribute("nowrap", noWrap);
+ }
+
+ public int getRowSpan()
+ {
+ return getIntHTMLAttribute("rowspan");
+ }
+
+ public void setRowSpan(int rowSpan)
+ {
+ setIntHTMLAttribute("rowspan", rowSpan);
+ }
+
+ public String getScope()
+ {
+ return getHTMLAttribute("scope");
+ }
+
+ public void setScope(String scope)
+ {
+ setHTMLAttribute("scope", scope);
+ }
+
+ public String getVAlign()
+ {
+ return getHTMLAttribute("valign");
+ }
+
+ public void setVAlign(String vAlign)
+ {
+ setHTMLAttribute("valign", vAlign);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableColElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLTableColElement;
+
+/**
+ * An HTML 'COL' or 'COLGROUP' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableColElement
+ extends DomHTMLElement
+ implements HTMLTableColElement
+{
+
+ protected DomHTMLTableColElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getCh()
+ {
+ return getHTMLAttribute("char");
+ }
+
+ public void setCh(String ch)
+ {
+ setHTMLAttribute("char", ch);
+ }
+
+ public String getChOff()
+ {
+ return getHTMLAttribute("charoff");
+ }
+
+ public void setChOff(String chOff)
+ {
+ setHTMLAttribute("charoff", chOff);
+ }
+
+ public int getSpan()
+ {
+ return getIntHTMLAttribute("span");
+ }
+
+ public void setSpan(int span)
+ {
+ setIntHTMLAttribute("span", span);
+ }
+
+ public String getVAlign()
+ {
+ return getHTMLAttribute("valign");
+ }
+
+ public void setVAlign(String vAlign)
+ {
+ setHTMLAttribute("valign", vAlign);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLElement;
+import org.w3c.dom.html2.HTMLTableCaptionElement;
+import org.w3c.dom.html2.HTMLTableElement;
+import org.w3c.dom.html2.HTMLTableSectionElement;
+
+/**
+ * An HTML 'TABLE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableElement
+ extends DomHTMLElement
+ implements HTMLTableElement
+{
+
+ protected DomHTMLTableElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public HTMLTableCaptionElement getCaption()
+ {
+ return (HTMLTableCaptionElement) getChildElement("caption");
+ }
+
+ public void setCaption(HTMLTableCaptionElement caption)
+ {
+ HTMLTableCaptionElement ref = getCaption();
+ if (ref == null)
+ {
+ appendChild(caption);
+ }
+ else
+ {
+ replaceChild(caption, ref);
+ }
+ }
+
+ public HTMLTableSectionElement getTHead()
+ {
+ return (HTMLTableSectionElement) getChildElement("thead");
+ }
+
+ public void setTHead(HTMLTableSectionElement tHead)
+ {
+ HTMLTableSectionElement ref = getTHead();
+ if (ref == null)
+ {
+ appendChild(tHead);
+ }
+ else
+ {
+ replaceChild(tHead, ref);
+ }
+ }
+
+ public HTMLTableSectionElement getTFoot()
+ {
+ return (HTMLTableSectionElement) getChildElement("tfoot");
+ }
+
+ public void setTFoot(HTMLTableSectionElement tFoot)
+ {
+ HTMLTableSectionElement ref = getTFoot();
+ if (ref == null)
+ {
+ appendChild(tFoot);
+ }
+ else
+ {
+ replaceChild(tFoot, ref);
+ }
+ }
+
+ public HTMLCollection getRows()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("tr");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLCollection getTBodies()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("tbody");
+ ret.evaluate();
+ return ret;
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getBgColor()
+ {
+ return getHTMLAttribute("bgcolor");
+ }
+
+ public void setBgColor(String bgColor)
+ {
+ setHTMLAttribute("bgcolor", bgColor);
+ }
+
+ public String getBorder()
+ {
+ return getHTMLAttribute("border");
+ }
+
+ public void setBorder(String border)
+ {
+ setHTMLAttribute("border", border);
+ }
+
+ public String getCellPadding()
+ {
+ return getHTMLAttribute("cellpadding");
+ }
+
+ public void setCellPadding(String cellPadding)
+ {
+ setHTMLAttribute("cellpadding", cellPadding);
+ }
+
+ public String getCellSpacing()
+ {
+ return getHTMLAttribute("cellspacing");
+ }
+
+ public void setCellSpacing(String cellSpacing)
+ {
+ setHTMLAttribute("cellspacing", cellSpacing);
+ }
+
+ public String getFrame()
+ {
+ return getHTMLAttribute("frame");
+ }
+
+ public void setFrame(String frame)
+ {
+ setHTMLAttribute("frame", frame);
+ }
+
+ public String getRules()
+ {
+ return getHTMLAttribute("rules");
+ }
+
+ public void setRules(String rules)
+ {
+ setHTMLAttribute("rules", rules);
+ }
+
+ public String getSummary()
+ {
+ return getHTMLAttribute("summary");
+ }
+
+ public void setSummary(String summary)
+ {
+ setHTMLAttribute("summary", summary);
+ }
+
+ public String getWidth()
+ {
+ return getHTMLAttribute("width");
+ }
+
+ public void setWidth(String width)
+ {
+ setHTMLAttribute("width", width);
+ }
+
+ public HTMLElement createTHead()
+ {
+ HTMLTableSectionElement ref = getTHead();
+ if (ref == null)
+ {
+ return (HTMLElement) getOwnerDocument().createElement("thead");
+ }
+ else
+ {
+ return ref;
+ }
+ }
+
+ public void deleteTHead()
+ {
+ HTMLTableSectionElement ref = getTHead();
+ if (ref != null)
+ {
+ removeChild(ref);
+ }
+ }
+
+ public HTMLElement createTFoot()
+ {
+ HTMLTableSectionElement ref = getTFoot();
+ if (ref == null)
+ {
+ return (HTMLElement) getOwnerDocument().createElement("tfoot");
+ }
+ else
+ {
+ return ref;
+ }
+ }
+
+ public void deleteTFoot()
+ {
+ HTMLTableSectionElement ref = getTFoot();
+ if (ref != null)
+ {
+ removeChild(ref);
+ }
+ }
+
+ public HTMLElement createCaption()
+ {
+ HTMLTableCaptionElement ref = getCaption();
+ if (ref == null)
+ {
+ return (HTMLElement) getOwnerDocument().createElement("caption");
+ }
+ else
+ {
+ return ref;
+ }
+ }
+
+ public void deleteCaption()
+ {
+ HTMLTableCaptionElement ref = getCaption();
+ if (ref != null)
+ {
+ removeChild(ref);
+ }
+ }
+
+ public HTMLElement insertRow(int index)
+ {
+ Node ref = getRow(index);
+ Node row = getOwnerDocument().createElement("tr");
+ if (ref == null)
+ {
+ Node tbody = getChildElement("tbody");
+ if (tbody == null)
+ {
+ tbody = getOwnerDocument().createElement("tfoot");
+ appendChild(tbody);
+ }
+ tbody.appendChild(row);
+ }
+ else
+ {
+ ref.getParentNode().insertBefore(row, ref);
+ }
+ return (HTMLElement) row;
+ }
+
+ public void deleteRow(int index)
+ {
+ Node ref = getRow(index);
+ if (ref == null)
+ {
+ throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
+ }
+ ref.getParentNode().removeChild(ref);
+ }
+
+ Node getRow(final int index)
+ {
+ int i = 0;
+ Node thead = getChildElement("thead");
+ if (thead != null)
+ {
+ for (Node ctx = thead.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
+ {
+ continue;
+ }
+ if (index == i)
+ {
+ return ctx;
+ }
+ i++;
+ }
+ }
+ Node tbody = getChildElement("tbody");
+ if (tbody == null)
+ {
+ tbody = this;
+ }
+ for (Node ctx = tbody.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
+ {
+ continue;
+ }
+ if (index == i)
+ {
+ return ctx;
+ }
+ i++;
+ }
+ Node tfoot = getChildElement("tfoot");
+ if (tfoot != null)
+ {
+ for (Node ctx = tfoot.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
+ {
+ continue;
+ }
+ if (index == i)
+ {
+ return ctx;
+ }
+ i++;
+ }
+ }
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableRowElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLElement;
+import org.w3c.dom.html2.HTMLTableRowElement;
+
+/**
+ * An HTML 'TR' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableRowElement
+ extends DomHTMLElement
+ implements HTMLTableRowElement
+{
+
+ protected DomHTMLTableRowElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public int getRowIndex()
+ {
+ return getIndex();
+ }
+
+ public int getSectionRowIndex()
+ {
+ int index = 0;
+ DomHTMLElement parent = (DomHTMLElement) getParentElement("table");
+ if (parent != null)
+ {
+ Node thead = parent.getChildElement("thead");
+ if (thead != null)
+ {
+ for (Node ctx = thead.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (ctx == this)
+ {
+ return index;
+ }
+ index++;
+ }
+ }
+ Node tbody = parent.getChildElement("tbody");
+ if (tbody != null)
+ {
+ for (Node ctx = tbody.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (ctx == this)
+ {
+ return index;
+ }
+ index++;
+ }
+ }
+ Node tfoot = parent.getChildElement("tfoot");
+ if (tfoot != null)
+ {
+ for (Node ctx = tfoot.getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (ctx == this)
+ {
+ return index;
+ }
+ index++;
+ }
+ }
+ }
+ throw new DomDOMException(DOMException.NOT_FOUND_ERR);
+ }
+
+ public HTMLCollection getCells()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("th");
+ ret.addNodeName("td");
+ ret.evaluate();
+ return ret;
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getBgColor()
+ {
+ return getHTMLAttribute("bgcolor");
+ }
+
+ public void setBgColor(String bgColor)
+ {
+ setHTMLAttribute("bgcolor", bgColor);
+ }
+
+ public String getCh()
+ {
+ return getHTMLAttribute("char");
+ }
+
+ public void setCh(String ch)
+ {
+ setHTMLAttribute("char", ch);
+ }
+
+ public String getChOff()
+ {
+ return getHTMLAttribute("charoff");
+ }
+
+ public void setChOff(String chOff)
+ {
+ setHTMLAttribute("charoff", chOff);
+ }
+
+ public String getVAlign()
+ {
+ return getHTMLAttribute("valign");
+ }
+
+ public void setVAlign(String vAlign)
+ {
+ setHTMLAttribute("valign", vAlign);
+ }
+
+ public HTMLElement insertCell(int index)
+ {
+ Node ref = getCell(index);
+ Node cell = getOwnerDocument().createElement("td");
+ if (ref == null)
+ {
+ appendChild(cell);
+ }
+ else
+ {
+ insertBefore(cell, ref);
+ }
+ return (HTMLElement) cell;
+ }
+
+ public void deleteCell(int index)
+ {
+ Node ref = getCell(index);
+ if (ref == null)
+ {
+ throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
+ }
+ removeChild(ref);
+ }
+
+ Node getCell(final int index)
+ {
+ int i = 0;
+ for (Node ctx = getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ String name = ctx.getLocalName();
+ if (!"td".equalsIgnoreCase(name) &&
+ !"th".equalsIgnoreCase(name))
+ {
+ continue;
+ }
+ if (index == i)
+ {
+ return ctx;
+ }
+ i++;
+ }
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTableSectionElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import gnu.xml.dom.DomDOMException;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Node;
+import org.w3c.dom.html2.HTMLCollection;
+import org.w3c.dom.html2.HTMLElement;
+import org.w3c.dom.html2.HTMLTableSectionElement;
+
+/**
+ * An HTML 'THEAD', 'TFOOT', or 'TBODY' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTableSectionElement
+ extends DomHTMLElement
+ implements HTMLTableSectionElement
+{
+
+ protected DomHTMLTableSectionElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getAlign()
+ {
+ return getHTMLAttribute("align");
+ }
+
+ public void setAlign(String align)
+ {
+ setHTMLAttribute("align", align);
+ }
+
+ public String getCh()
+ {
+ return getHTMLAttribute("char");
+ }
+
+ public void setCh(String ch)
+ {
+ setHTMLAttribute("char", ch);
+ }
+
+ public String getChOff()
+ {
+ return getHTMLAttribute("charoff");
+ }
+
+ public void setChOff(String chOff)
+ {
+ setHTMLAttribute("charoff", chOff);
+ }
+
+ public String getVAlign()
+ {
+ return getHTMLAttribute("valign");
+ }
+
+ public void setVAlign(String vAlign)
+ {
+ setHTMLAttribute("valign", vAlign);
+ }
+
+ public HTMLCollection getRows()
+ {
+ DomHTMLCollection ret =
+ new DomHTMLCollection((DomHTMLDocument) getOwnerDocument(), this);
+ ret.addNodeName("tr");
+ ret.evaluate();
+ return ret;
+ }
+
+ public HTMLElement insertRow(int index)
+ {
+ Node ref = getRow(index);
+ Node row = getOwnerDocument().createElement("tr");
+ if (ref == null)
+ {
+ appendChild(row);
+ }
+ else
+ {
+ insertBefore(row, ref);
+ }
+ return (HTMLElement) row;
+ }
+
+ public void deleteRow(int index)
+ {
+ Node ref = getRow(index);
+ if (ref == null)
+ {
+ throw new DomDOMException(DOMException.INDEX_SIZE_ERR);
+ }
+ removeChild(ref);
+ }
+
+ Node getRow(final int index)
+ {
+ int i = 0;
+ for (Node ctx = getFirstChild(); ctx != null;
+ ctx = ctx.getNextSibling())
+ {
+ if (!"tr".equalsIgnoreCase(ctx.getLocalName()))
+ {
+ continue;
+ }
+ if (index == i)
+ {
+ return ctx;
+ }
+ i++;
+ }
+ return null;
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTextAreaElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLFormElement;
+import org.w3c.dom.html2.HTMLTextAreaElement;
+
+/**
+ * An HTML 'TEXTAREA' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTextAreaElement
+ extends DomHTMLElement
+ implements HTMLTextAreaElement
+{
+
+ protected String value;
+
+ protected DomHTMLTextAreaElement(DomHTMLDocument owner,
+ String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getDefaultValue()
+ {
+ return getHTMLAttribute("value");
+ }
+
+ public void setDefaultValue(String defaultValue)
+ {
+ setHTMLAttribute("value", defaultValue);
+ }
+
+ public HTMLFormElement getForm()
+ {
+ return (HTMLFormElement) getParentElement("form");
+ }
+
+ public String getAccessKey()
+ {
+ return getHTMLAttribute("accesskey");
+ }
+
+ public void setAccessKey(String accessKey)
+ {
+ setHTMLAttribute("accesskey", accessKey);
+ }
+
+ public int getCols()
+ {
+ return getIntHTMLAttribute("cols");
+ }
+
+ public void setCols(int cols)
+ {
+ setIntHTMLAttribute("cols", cols);
+ }
+
+ public boolean getDisabled()
+ {
+ return getBooleanHTMLAttribute("disabled");
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ setBooleanHTMLAttribute("disabled", disabled);
+ }
+
+ public String getName()
+ {
+ return getHTMLAttribute("name");
+ }
+
+ public void setName(String name)
+ {
+ setHTMLAttribute("name", name);
+ }
+
+ public boolean getReadOnly()
+ {
+ return getBooleanHTMLAttribute("readOnly");
+ }
+
+ public void setReadOnly(boolean readOnly)
+ {
+ setBooleanHTMLAttribute("readonly", readOnly);
+ }
+
+ public int getRows()
+ {
+ return getIntHTMLAttribute("rows");
+ }
+
+ public void setRows(int rows)
+ {
+ setIntHTMLAttribute("rows", rows);
+ }
+
+ public int getTabIndex()
+ {
+ return getIntHTMLAttribute("tabindex");
+ }
+
+ public void setTabIndex(int tabIndex)
+ {
+ setIntHTMLAttribute("tabindex", tabIndex);
+ }
+
+ public String getType()
+ {
+ return "textarea";
+ }
+
+ public String getValue()
+ {
+ if (value == null)
+ {
+ value = getDefaultValue();
+ }
+ return value;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+
+ public void blur()
+ {
+ dispatchUIEvent("blur");
+ }
+
+ public void focus()
+ {
+ dispatchUIEvent("focus");
+ }
+
+ public void select()
+ {
+ dispatchUIEvent("select");
+ }
+
+}
+
--- /dev/null
+/* DomHTMLTitleElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLTitleElement;
+
+/**
+ * An HTML 'TITLE' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLTitleElement
+ extends DomHTMLElement
+ implements HTMLTitleElement
+{
+
+ protected DomHTMLTitleElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public String getText()
+ {
+ return getTextContent();
+ }
+
+ public void setText(String text)
+ {
+ setTextContent(text);
+ }
+
+}
+
--- /dev/null
+/* DomHTMLUListElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.xml.dom.html2;
+
+import org.w3c.dom.html2.HTMLUListElement;
+
+/**
+ * An HTML 'UL' element node.
+ *
+ * @author <a href='mailto:dog@gnu.org'>Chris Burdess</a>
+ */
+public class DomHTMLUListElement
+ extends DomHTMLElement
+ implements HTMLUListElement
+{
+
+ protected DomHTMLUListElement(DomHTMLDocument owner, String namespaceURI,
+ String name)
+ {
+ super(owner, namespaceURI, name);
+ }
+
+ public boolean getCompact()
+ {
+ return getBooleanHTMLAttribute("compact");
+ }
+
+ public void setCompact(boolean compact)
+ {
+ setBooleanHTMLAttribute("compact", compact);
+ }
+
+ public String getType()
+ {
+ return getHTMLAttribute("type");
+ }
+
+ public void setType(String type)
+ {
+ setHTMLAttribute("type", type);
+ }
+
+}
+
--- /dev/null
+/* ChangedCharSetException.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+/**
+ * The exception is thrown when the document charset is changed.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
+ */
+public class ChangedCharSetException
+ extends IOException
+ implements Serializable
+{
+ /**
+ * Use serialVersionUID for interoperability.
+ * This value corresponds the version 1.4.
+ */
+ private static final long serialVersionUID = 9119851554465432389L;
+
+ /**
+ * The char set specification.
+ */
+ private final String m_charSetSpec;
+
+ /**
+ * The char set key.
+ */
+ private final boolean m_charSetKey;
+
+ /**
+ * Constructs a new char set exception with two additional parameters,
+ * defining the circumstances under that the exception was raised.
+ */
+ public ChangedCharSetException(String charSetSpec, boolean charSetKey)
+ {
+ m_charSetSpec = charSetSpec;
+ m_charSetKey = charSetKey;
+ }
+
+ /**
+ * Get the value of the first parameter, previously passed to the
+ * constructor.
+ *
+ * @return the value of the first parameter
+ */
+ public String getCharSetSpec()
+ {
+ return m_charSetSpec;
+ }
+
+ /**
+ * Get the value of the second parameter, previously passed to the
+ * constructor.
+ *
+ * @return the value of the second parameter
+ */
+ public boolean keyEqualsCharSet()
+ {
+ return m_charSetKey;
+ }
+}
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
+
package javax.swing.text.html;
import java.io.Serializable;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+import javax.swing.text.AttributeSet;
+
/**
- * Stub implementation.
- * Just enough to get gjdoc working.
- *
- * @author Mark Wielaard (mark@klomp.org)
+ * HTML attribute and tag definitions.
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
*/
public class HTML
{
- public static class Tag
+ /**
+ * Represents a HTML attribute.
+ */
+ public static class Attribute
+ implements Serializable
{
- private final String id;
+ /**
+ * The action attribute
+ */
+ public static final Attribute ACTION = new Attribute("action");
- protected Tag(String id)
+ /**
+ * The align attribute
+ */
+ public static final Attribute ALIGN = new Attribute("align");
+
+ /**
+ * The alink attribute
+ */
+ public static final Attribute ALINK = new Attribute("alink");
+
+ /**
+ * The alt attribute
+ */
+ public static final Attribute ALT = new Attribute("alt");
+
+ /**
+ * The archive attribute
+ */
+ public static final Attribute ARCHIVE = new Attribute("archive");
+
+ /**
+ * The background attribute
+ */
+ public static final Attribute BACKGROUND = new Attribute("background");
+
+ /**
+ * The bgcolor attribute
+ */
+ public static final Attribute BGCOLOR = new Attribute("bgcolor");
+
+ /**
+ * The border attribute
+ */
+ public static final Attribute BORDER = new Attribute("border");
+
+ /**
+ * The cellpadding attribute
+ */
+ public static final Attribute CELLPADDING = new Attribute("cellpadding");
+
+ /**
+ * The cellspacing attribute
+ */
+ public static final Attribute CELLSPACING = new Attribute("cellspacing");
+
+ /**
+ * The checked attribute
+ */
+ public static final Attribute CHECKED = new Attribute("checked");
+
+ /**
+ * The class attribute
+ */
+ public static final Attribute CLASS = new Attribute("class");
+
+ /**
+ * The classid attribute
+ */
+ public static final Attribute CLASSID = new Attribute("classid");
+
+ /**
+ * The clear attribute
+ */
+ public static final Attribute CLEAR = new Attribute("clear");
+
+ /**
+ * The code attribute
+ */
+ public static final Attribute CODE = new Attribute("code");
+
+ /**
+ * The codebase attribute
+ */
+ public static final Attribute CODEBASE = new Attribute("codebase");
+
+ /**
+ * The codetype attribute
+ */
+ public static final Attribute CODETYPE = new Attribute("codetype");
+
+ /**
+ * The color attribute
+ */
+ public static final Attribute COLOR = new Attribute("color");
+
+ /**
+ * The cols attribute
+ */
+ public static final Attribute COLS = new Attribute("cols");
+
+ /**
+ * The colspan attribute
+ */
+ public static final Attribute COLSPAN = new Attribute("colspan");
+
+ /**
+ * The comment attribute
+ */
+ public static final Attribute COMMENT = new Attribute("comment");
+
+ /**
+ * The compact attribute
+ */
+ public static final Attribute COMPACT = new Attribute("compact");
+
+ /**
+ * The content attribute
+ */
+ public static final Attribute CONTENT = new Attribute("content");
+
+ /**
+ * The coords attribute
+ */
+ public static final Attribute COORDS = new Attribute("coords");
+
+ /**
+ * The data attribute
+ */
+ public static final Attribute DATA = new Attribute("data");
+
+ /**
+ * The declare attribute
+ */
+ public static final Attribute DECLARE = new Attribute("declare");
+
+ /**
+ * The dir attribute
+ */
+ public static final Attribute DIR = new Attribute("dir");
+
+ /**
+ * The dummy attribute
+ */
+ public static final Attribute DUMMY = new Attribute("dummy");
+
+ /**
+ * The enctype attribute
+ */
+ public static final Attribute ENCTYPE = new Attribute("enctype");
+
+ /**
+ * The endtag attribute
+ */
+ public static final Attribute ENDTAG = new Attribute("endtag");
+
+ /**
+ * The face attribute
+ */
+ public static final Attribute FACE = new Attribute("face");
+
+ /**
+ * The frameborder attribute
+ */
+ public static final Attribute FRAMEBORDER = new Attribute("frameborder");
+
+ /**
+ * The halign attribute
+ */
+ public static final Attribute HALIGN = new Attribute("halign");
+
+ /**
+ * The height attribute
+ */
+ public static final Attribute HEIGHT = new Attribute("height");
+
+ /**
+ * The href attribute
+ */
+ public static final Attribute HREF = new Attribute("href");
+
+ /**
+ * The hspace attribute
+ */
+ public static final Attribute HSPACE = new Attribute("hspace");
+
+ /**
+ * The http-equiv attribute
+ */
+ public static final Attribute HTTPEQUIV = new Attribute("http-equiv");
+
+ /**
+ * The id attribute
+ */
+ public static final Attribute ID = new Attribute("id");
+
+ /**
+ * The ismap attribute
+ */
+ public static final Attribute ISMAP = new Attribute("ismap");
+
+ /**
+ * The lang attribute
+ */
+ public static final Attribute LANG = new Attribute("lang");
+
+ /**
+ * The language attribute
+ */
+ public static final Attribute LANGUAGE = new Attribute("language");
+
+ /**
+ * The link attribute
+ */
+ public static final Attribute LINK = new Attribute("link");
+
+ /**
+ * The lowsrc attribute
+ */
+ public static final Attribute LOWSRC = new Attribute("lowsrc");
+
+ /**
+ * The marginheight attribute
+ */
+ public static final Attribute MARGINHEIGHT = new Attribute("marginheight");
+
+ /**
+ * The marginwidth attribute
+ */
+ public static final Attribute MARGINWIDTH = new Attribute("marginwidth");
+
+ /**
+ * The maxlength attribute
+ */
+ public static final Attribute MAXLENGTH = new Attribute("maxlength");
+
+ /**
+ * The media attribute
+ */
+ public static final Attribute MEDIA = new Attribute("media");
+
+ /**
+ * The method attribute
+ */
+ public static final Attribute METHOD = new Attribute("method");
+
+ /**
+ * The multiple attribute
+ */
+ public static final Attribute MULTIPLE = new Attribute("multiple");
+
+ /**
+ * The n attribute
+ */
+ public static final Attribute N = new Attribute("n");
+
+ /**
+ * The name attribute
+ */
+ public static final Attribute NAME = new Attribute("name");
+
+ /**
+ * The nohref attribute
+ */
+ public static final Attribute NOHREF = new Attribute("nohref");
+
+ /**
+ * The noresize attribute
+ */
+ public static final Attribute NORESIZE = new Attribute("noresize");
+
+ /**
+ * The noshade attribute
+ */
+ public static final Attribute NOSHADE = new Attribute("noshade");
+
+ /**
+ * The nowrap attribute
+ */
+ public static final Attribute NOWRAP = new Attribute("nowrap");
+
+ /**
+ * The prompt attribute
+ */
+ public static final Attribute PROMPT = new Attribute("prompt");
+
+ /**
+ * The rel attribute
+ */
+ public static final Attribute REL = new Attribute("rel");
+
+ /**
+ * The rev attribute
+ */
+ public static final Attribute REV = new Attribute("rev");
+
+ /**
+ * The rows attribute
+ */
+ public static final Attribute ROWS = new Attribute("rows");
+
+ /**
+ * The rowspan attribute
+ */
+ public static final Attribute ROWSPAN = new Attribute("rowspan");
+
+ /**
+ * The scrolling attribute
+ */
+ public static final Attribute SCROLLING = new Attribute("scrolling");
+
+ /**
+ * The selected attribute
+ */
+ public static final Attribute SELECTED = new Attribute("selected");
+
+ /**
+ * The shape attribute
+ */
+ public static final Attribute SHAPE = new Attribute("shape");
+
+ /**
+ * The shapes attribute
+ */
+ public static final Attribute SHAPES = new Attribute("shapes");
+
+ /**
+ * The size attribute
+ */
+ public static final Attribute SIZE = new Attribute("size");
+
+ /**
+ * The src attribute
+ */
+ public static final Attribute SRC = new Attribute("src");
+
+ /**
+ * The standby attribute
+ */
+ public static final Attribute STANDBY = new Attribute("standby");
+
+ /**
+ * The start attribute
+ */
+ public static final Attribute START = new Attribute("start");
+
+ /**
+ * The style attribute
+ */
+ public static final Attribute STYLE = new Attribute("style");
+
+ /**
+ * The target attribute
+ */
+ public static final Attribute TARGET = new Attribute("target");
+
+ /**
+ * The text attribute
+ */
+ public static final Attribute TEXT = new Attribute("text");
+
+ /**
+ * The title attribute
+ */
+ public static final Attribute TITLE = new Attribute("title");
+
+ /**
+ * The type attribute
+ */
+ public static final Attribute TYPE = new Attribute("type");
+
+ /**
+ * The usemap attribute
+ */
+ public static final Attribute USEMAP = new Attribute("usemap");
+
+ /**
+ * The valign attribute
+ */
+ public static final Attribute VALIGN = new Attribute("valign");
+
+ /**
+ * The value attribute
+ */
+ public static final Attribute VALUE = new Attribute("value");
+
+ /**
+ * The valuetype attribute
+ */
+ public static final Attribute VALUETYPE = new Attribute("valuetype");
+
+ /**
+ * The version attribute
+ */
+ public static final Attribute VERSION = new Attribute("version");
+
+ /**
+ * The vlink attribute
+ */
+ public static final Attribute VLINK = new Attribute("vlink");
+
+ /**
+ * The vspace attribute
+ */
+ public static final Attribute VSPACE = new Attribute("vspace");
+
+ /**
+ * The width attribute
+ */
+ public static final Attribute WIDTH = new Attribute("width");
+ private final String name;
+
+ /**
+ * Creates the attribute with the given name.
+ */
+ protected Attribute(String a_name)
{
- this.id = id;
+ name = a_name;
}
- }
- public static class UnknownTag extends Tag implements Serializable
- {
/**
- * For compatability with Sun's JDK 1.4.2 rev. 5
+ * Calls compareTo on the tag names (Strings)
*/
- private static final long serialVersionUID = -1534369342247250625L;
-
- public UnknownTag(String id)
+ public int compareTo(Object other)
{
- super(id);
+ return name.compareTo(((Attribute) other).name);
}
+
+ /**
+ * The attributes are equal if the names are equal
+ * (ignoring case)
+ */
+ public boolean equals(Object other)
+ {
+ if (other == this)
+ return true;
+
+ if (!(other instanceof Attribute))
+ return false;
+
+ Attribute that = (Attribute) other;
+
+ return that.name.equalsIgnoreCase(name);
+ }
+
+ /**
+ * Returns the hash code which corresponds to the string for this tag.
+ */
+ public int hashCode()
+ {
+ return name == null ? 0 : name.hashCode();
+ }
+
+ /**
+ * Returns the attribute name. The names of the built-in attributes
+ * are always returned in lowercase.
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+ /**
+ * Return an array of all attributes, declared in the HTML.Attribute
+ * class. WARNING: attributes are the only public fields,
+ * expected in this class.
+ */
+ static Attribute[] getAllAttributes()
+ {
+ Field[] f = Attribute.class.getFields();
+ Attribute[] attrs = new Attribute[ f.length ];
+ Field x;
+ int p = 0;
+ Attribute a;
+
+ for (int i = 0; i < f.length; i++)
+ {
+ x = f [ i ];
+
+ if ((x.getModifiers() & Modifier.STATIC) != 0)
+ {
+ if (x.getType().equals(Attribute.class))
+ {
+ try
+ {
+ a = (Attribute) x.get(null);
+ attrs [ p++ ] = a;
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace(System.err);
+ throw new Error("This should never happen, report a bug");
+ }
+ }
+ }
+ }
+
+ return attrs;
+ }
+ }
+
+ /**
+ * Represents a HTML tag.
+ */
+ public static class Tag
+ implements Comparable, Serializable
+ {
+ /**
+ * The <a> tag
+ */
+ public static final Tag A = new Tag("a");
+
+ /**
+ * The <address> tag
+ */
+ public static final Tag ADDRESS = new Tag("address");
+
+ /**
+ * The <applet> tag
+ */
+ public static final Tag APPLET = new Tag("applet");
+
+ /**
+ * The <area> tag
+ */
+ public static final Tag AREA = new Tag("area");
+
+ /**
+ * The <b> tag
+ */
+ public static final Tag B = new Tag("b");
+
+ /**
+ * The <base> tag
+ */
+ public static final Tag BASE = new Tag("base");
+
+ /**
+ * The <basefont> tag
+ */
+ public static final Tag BASEFONT = new Tag("basefont");
+
+ /**
+ * The <big> tag
+ */
+ public static final Tag BIG = new Tag("big");
+
+ /**
+ * The <blockquote> tag , breaks flow, block tag.
+ */
+ public static final Tag BLOCKQUOTE = new Tag("blockquote", BREAKS | BLOCK);
+
+ /**
+ * The <body> tag , breaks flow, block tag.
+ */
+ public static final Tag BODY = new Tag("body", BREAKS | BLOCK);
+
+ /**
+ * The <br> tag , breaks flow.
+ */
+ public static final Tag BR = new Tag("br", BREAKS);
+
+ /**
+ * The <caption> tag
+ */
+ public static final Tag CAPTION = new Tag("caption");
+
+ /**
+ * The <center> tag , breaks flow.
+ */
+ public static final Tag CENTER = new Tag("center", BREAKS);
+
+ /**
+ * The <cite> tag
+ */
+ public static final Tag CITE = new Tag("cite");
+
+ /**
+ * The <code> tag
+ */
+ public static final Tag CODE = new Tag("code");
+
+ /**
+ * The <dd> tag , breaks flow, block tag.
+ */
+ public static final Tag DD = new Tag("dd", BREAKS | BLOCK);
+
+ /**
+ * The <dfn> tag
+ */
+ public static final Tag DFN = new Tag("dfn");
+
+ /**
+ * The <dir> tag , breaks flow, block tag.
+ */
+ public static final Tag DIR = new Tag("dir", BREAKS | BLOCK);
+
+ /**
+ * The <div> tag , breaks flow, block tag.
+ */
+ public static final Tag DIV = new Tag("div", BREAKS | BLOCK);
+
+ /**
+ * The <dl> tag , breaks flow, block tag.
+ */
+ public static final Tag DL = new Tag("dl", BREAKS | BLOCK);
+
+ /**
+ * The <dt> tag , breaks flow, block tag.
+ */
+ public static final Tag DT = new Tag("dt", BREAKS | BLOCK);
+
+ /**
+ * The <em> tag
+ */
+ public static final Tag EM = new Tag("em");
+
+ /**
+ * The <font> tag
+ */
+ public static final Tag FONT = new Tag("font");
+
+ /**
+ * The <form> tag , breaks flow.
+ */
+ public static final Tag FORM = new Tag("form", BREAKS);
+
+ /**
+ * The <frame> tag
+ */
+ public static final Tag FRAME = new Tag("frame");
+
+ /**
+ * The <frameset> tag
+ */
+ public static final Tag FRAMESET = new Tag("frameset");
+
+ /**
+ * The <h1> tag , breaks flow, block tag.
+ */
+ public static final Tag H1 = new Tag("h1", BREAKS | BLOCK);
+
+ /**
+ * The <h2> tag , breaks flow, block tag.
+ */
+ public static final Tag H2 = new Tag("h2", BREAKS | BLOCK);
+
+ /**
+ * The <h3> tag , breaks flow, block tag.
+ */
+ public static final Tag H3 = new Tag("h3", BREAKS | BLOCK);
+
+ /**
+ * The <h4> tag , breaks flow, block tag.
+ */
+ public static final Tag H4 = new Tag("h4", BREAKS | BLOCK);
+
+ /**
+ * The <h5> tag , breaks flow, block tag.
+ */
+ public static final Tag H5 = new Tag("h5", BREAKS | BLOCK);
+
+ /**
+ * The <h6> tag , breaks flow, block tag.
+ */
+ public static final Tag H6 = new Tag("h6", BREAKS | BLOCK);
+
+ /**
+ * The <head> tag , breaks flow, block tag.
+ */
+ public static final Tag HEAD = new Tag("head", BREAKS | BLOCK);
+
+ /**
+ * The <hr> tag , breaks flow.
+ */
+ public static final Tag HR = new Tag("hr", BREAKS);
+
+ /**
+ * The <html> tag , breaks flow.
+ */
+ public static final Tag HTML = new Tag("html", BREAKS);
+
+ /**
+ * The <i> tag
+ */
+ public static final Tag I = new Tag("i");
+
+ /**
+ * The <img> tag
+ */
+ public static final Tag IMG = new Tag("img");
+
+ /**
+ * The <input> tag
+ */
+ public static final Tag INPUT = new Tag("input");
+
+ /**
+ * The <isindex> tag , breaks flow.
+ */
+ public static final Tag ISINDEX = new Tag("isindex", BREAKS);
+
+ /**
+ * The <kbd> tag
+ */
+ public static final Tag KBD = new Tag("kbd");
+
+ /**
+ * The <li> tag , breaks flow, block tag.
+ */
+ public static final Tag LI = new Tag("li", BREAKS | BLOCK);
+
+ /**
+ * The <link> tag
+ */
+ public static final Tag LINK = new Tag("link");
+
+ /**
+ * The <map> tag
+ */
+ public static final Tag MAP = new Tag("map");
+
+ /**
+ * The <menu> tag , breaks flow, block tag.
+ */
+ public static final Tag MENU = new Tag("menu", BREAKS | BLOCK);
+
+ /**
+ * The <meta> tag
+ */
+ public static final Tag META = new Tag("meta");
+
+ /**
+ * The <nobr> tag
+ */
+ public static final Tag NOBR = new Tag("nobr");
+
+ /**
+ * The <noframes> tag , breaks flow, block tag.
+ */
+ public static final Tag NOFRAMES = new Tag("noframes", BREAKS | BLOCK);
+
+ /**
+ * The <object> tag
+ */
+ public static final Tag OBJECT = new Tag("object");
+
+ /**
+ * The <ol> tag , breaks flow, block tag.
+ */
+ public static final Tag OL = new Tag("ol", BREAKS | BLOCK);
+
+ /**
+ * The <option> tag
+ */
+ public static final Tag OPTION = new Tag("option");
+
+ /**
+ * The <p> tag , breaks flow, block tag.
+ */
+ public static final Tag P = new Tag("p", BREAKS | BLOCK);
+
+ /**
+ * The <param> tag
+ */
+ public static final Tag PARAM = new Tag("param");
+
+ /**
+ * The <pre> tag , breaks flow, block tag, preformatted.
+ */
+ public static final Tag PRE = new Tag("pre", BREAKS | BLOCK | PREFORMATTED);
+
+ /**
+ * The <s> tag
+ */
+ public static final Tag S = new Tag("s");
+
+ /**
+ * The <samp> tag
+ */
+ public static final Tag SAMP = new Tag("samp");
+
+ /**
+ * The <script> tag
+ */
+ public static final Tag SCRIPT = new Tag("script");
+
+ /**
+ * The <select> tag
+ */
+ public static final Tag SELECT = new Tag("select");
+
+ /**
+ * The <small> tag
+ */
+ public static final Tag SMALL = new Tag("small");
+
+ /**
+ * The <span> tag
+ */
+ public static final Tag SPAN = new Tag("span");
+
+ /**
+ * The <strike> tag
+ */
+ public static final Tag STRIKE = new Tag("strike");
+
+ /**
+ * The <strong> tag
+ */
+ public static final Tag STRONG = new Tag("strong");
+
+ /**
+ * The <style> tag
+ */
+ public static final Tag STYLE = new Tag("style");
+
+ /**
+ * The <sub> tag
+ */
+ public static final Tag SUB = new Tag("sub");
+
+ /**
+ * The <sup> tag
+ */
+ public static final Tag SUP = new Tag("sup");
+
+ /**
+ * The <table> tag , block tag.
+ */
+ public static final Tag TABLE = new Tag("table", BLOCK);
+
+ /**
+ * The <td> tag , breaks flow, block tag.
+ */
+ public static final Tag TD = new Tag("td", BREAKS | BLOCK);
+
+ /**
+ * The <textarea> tag , preformatted.
+ */
+ public static final Tag TEXTAREA = new Tag("textarea", PREFORMATTED);
+
+ /**
+ * The <th> tag , breaks flow, block tag.
+ */
+ public static final Tag TH = new Tag("th", BREAKS | BLOCK);
+
+ /**
+ * The <title> tag , breaks flow, block tag.
+ */
+ public static final Tag TITLE = new Tag("title", BREAKS | BLOCK);
+
+ /**
+ * The <tr> tag , block tag.
+ */
+ public static final Tag TR = new Tag("tr", BLOCK);
+
+ /**
+ * The <tt> tag
+ */
+ public static final Tag TT = new Tag("tt");
+
+ /**
+ * The <u> tag
+ */
+ public static final Tag U = new Tag("u");
+
+ /**
+ * The <ul> tag , breaks flow, block tag.
+ */
+ public static final Tag UL = new Tag("ul", BREAKS | BLOCK);
+
+ /**
+ * The <var> tag
+ */
+ public static final Tag VAR = new Tag("var");
+
+ /* Special tags */
+
+ /**
+ * Total number of syntetic tags, delared in the Tag class.
+ * This must be adjusted if the new synthetic tags are declared.
+ * Otherwise the HTML.getAllTags() will not work as expected.
+ */
+ private static final int TOTAL_SYNTHETIC_TAGS = 3;
+
+ /**
+ * All comments are labeled with this tag.
+ * This tag is not included into the array, returned by getAllTags().
+ * toString() returns 'comment'. HTML reader synthesizes this tag.
+ */
+ public static final Tag COMMENT = new Tag("comment", SYNTETIC);
+
+ /**
+ * All text content is labeled with this tag.
+ * This tag is not included into the array, returned by getAllTags().
+ * toString() returns 'content'. HTML reader synthesizes this tag.
+ */
+ public static final Tag CONTENT = new Tag("content", SYNTETIC);
+
+ /**
+ * All text content must be in a paragraph element.
+ * If a paragraph didn't exist when content was encountered,
+ * a paragraph is manufactured.
+ * toString() returns 'implied'. HTML reader synthesizes this tag.
+ */
+ public static final Tag IMPLIED = new Tag("implied", SYNTETIC);
+ final String name;
+ final int flags;
+
+ /**
+ * Creates a new Tag with the specified id, and with causesBreak
+ * and isBlock set to false.
+ */
+ protected Tag(String id)
+ {
+ name = id;
+ flags = 0;
+ }
+
+ /**
+ * Creates a new Tag with the specified tag name and
+ * causesBreak and isBlock properties.
+ */
+ protected Tag(String id, boolean causesBreak, boolean isBlock)
+ {
+ int f = 0;
+
+ if (causesBreak)
+ {
+ f |= BREAKS;
+ }
+
+ if (isBlock)
+ {
+ f |= BLOCK;
+ }
+
+ flags = f;
+ name = id;
+ }
+
+ /**
+ * Create a tag taking flags.
+ */
+ Tag(String id, int a_flags)
+ {
+ name = id;
+ flags = a_flags;
+ }
+
+ /**
+ * Returns true if this tag is a block tag, which is a tag used to
+ * add structure to a document.
+ */
+ public boolean isBlock()
+ {
+ return (flags & BLOCK) != 0;
+ }
+
+ /**
+ * Returns true if this tag is pre-formatted, which is true if
+ * the tag is either PRE or TEXTAREA
+ */
+ public boolean isPreformatted()
+ {
+ return (flags & PREFORMATTED) != 0;
+ }
+
+ /**
+ * Returns true if this tag causes a line break to the flow of text
+ */
+ public boolean breaksFlow()
+ {
+ return (flags & BREAKS) != 0;
+ }
+
+ /**
+ * Calls compareTo on the tag names (Strings)
+ */
+ public int compareTo(Object other)
+ {
+ return name.compareTo(((Tag) other).name);
+ }
+
+ /**
+ * The tags are equal if the names are equal (ignoring case).
+ */
+ public boolean equals(Object other)
+ {
+ if (other == this)
+ {
+ return true;
+ }
+
+ if (!(other instanceof Tag))
+ {
+ return false;
+ }
+
+ Tag that = (Tag) other;
+
+ return that.name.equalsIgnoreCase(name);
+ }
+
+ /**
+ * Returns the hash code which corresponds to the string for this tag.
+ */
+ public int hashCode()
+ {
+ return name == null ? 0 : name.hashCode();
+ }
+
+ /**
+ * Returns the tag name. The names of the built-in tags are always
+ * returned in lowercase.
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+ /**
+ * Return an array of HTML tags, declared in HTML.Tag class.
+ * WARNING: This method expects that the Tags are the only
+ * public fields declared in the Tag class.
+ */
+ static Tag[] getAllTags()
+ {
+ Field[] f = Tag.class.getFields();
+ Field x;
+
+ // The syntetic tags are not included.
+ Tag[] tags = new Tag[ f.length - TOTAL_SYNTHETIC_TAGS ];
+ int p = 0;
+ Tag t;
+
+ for (int i = 0; i < f.length; i++)
+ {
+ x = f [ i ];
+
+ if ((x.getModifiers() & Modifier.STATIC) != 0)
+ {
+ if (x.getType().equals(Tag.class))
+ {
+ try
+ {
+ t = (Tag) x.get(null);
+
+ if (!t.isSyntetic())
+ {
+ tags [ p++ ] = t;
+ }
+ }
+ catch (IllegalAccessException ex)
+ {
+ unexpected(ex);
+ }
+ catch (IllegalArgumentException ex)
+ {
+ unexpected(ex);
+ }
+ }
+ }
+ }
+
+ return tags;
+ }
+
+ /**
+ * Returns true for tags, generated by the html reader
+ * (COMMENT, CONTENT and IMPLIED).
+ */
+ boolean isSyntetic()
+ {
+ return (flags & SYNTETIC) != 0;
+ }
+
+ private static void unexpected(Exception ex)
+ throws Error
+ {
+ throw new Error("This should never happen, report a bug", ex);
+ }
+ }
+
+ /**
+ * Represents an unknown HTML tag.
+ * @author Mark Wielaard (mark@klomp.org)
+ */
+ public static class UnknownTag
+ extends Tag
+ implements Serializable
+ {
+ private static final long serialVersionUID = -1534369342247250625L;
+
+ /**
+ * Creates a new UnknownTag with the specified name
+ * @param name The tag name.
+ *
+ */
+ public UnknownTag(String name)
+ {
+ super(name);
+ }
+ }
+
+ /**
+ * This value is returned for attributes without value that have no
+ * default value defined in the DTD.
+ */
+ public static final String NULL_ATTRIBUTE_VALUE = "#DEFAULT";
+
+ /* Package level html tag flags */
+ static final int BREAKS = 1;
+ static final int BLOCK = 2;
+ static final int PREFORMATTED = 4;
+ static final int SYNTETIC = 8;
+ private static Map tagMap;
+ private static Map attrMap;
+
+ /**
+ * The public constructor (does nothing). It it seldom required to have
+ * an instance of this class, because all public fields and methods
+ * are static.
+ */
+ public HTML()
+ {
+ }
+
+ /**
+ * Returns the set of the recognized HTML attributes.
+ */
+ public static HTML.Attribute[] getAllAttributeKeys()
+ {
+ return Attribute.getAllAttributes();
+ }
+
+ /**
+ * Returns the set of actual HTML tags that are recognized by
+ * the default HTML reader. The returned array does not include the
+ * COMMENT, CONTENT and IMPLIED tags.
+ */
+ public static HTML.Tag[] getAllTags()
+ {
+ return Tag.getAllTags();
+ }
+
+ /**
+ * Returns an htl attribute constant for the given attribute name.
+ * @param attName the attribute name, case insensitive
+ */
+ public static Attribute getAttributeKey(String attName)
+ {
+ if (attrMap == null)
+ {
+ // Create the map on demand.
+ attrMap = new TreeMap();
+
+ Attribute[] attrs = getAllAttributeKeys();
+
+ for (int i = 0; i < attrs.length; i++)
+ {
+ attrMap.put(attrs [ i ].toString(), attrs [ i ]);
+ }
+ }
+
+ return (Attribute) attrMap.get(attName.toLowerCase());
+ }
+
+ /**
+ * Searches the value of given attribute in the provided set.
+ * If the value is found (String type expected), tries to parse it as
+ * an integer value. If succeded, returns the obtained integer value.
+ *
+ * For example:<p><code>
+ * SimpleAttributeSet ase = new SimpleAttributeSet();
+ * ase.addAttribute(HTML.getAttributeKey("size"),"222");
+ * System.out.println(
+ * HTML.getIntegerAttributeValue
+ * (ase, HTML.getAttributeKey("size"), 333)); // prints "222"
+ * System.out.println(
+ * HTML.getIntegerAttributeValue
+ * (ase, HTML.getAttributeKey("width"), 333)); // prints "333".
+ * </code></p>
+ *
+ *
+ * @param set The attribute set to search in. If the set contains the
+ * given attribute, it must by a type of String.
+ * @param attribute The html attribute to search in
+ * @param defaultValue The value that is returned if the attribute is not
+ * found in the given set or if the NumberFormatException was thrown
+ * during the parsing.
+ */
+ public static int getIntegerAttributeValue(AttributeSet set,
+ HTML.Attribute attribute,
+ int defaultValue
+ )
+ {
+ Object v = set.getAttribute(attribute);
+
+ if (v == null)
+ {
+ return defaultValue;
+ }
+
+ try
+ {
+ return Integer.parseInt(v.toString().trim());
+ }
+ catch (Exception ex)
+ {
+ return defaultValue;
+ }
+ }
+
+ /**
+ * Returns a HTML tag constant for the given HTML attribute name.
+ * If the tag is unknown, the null is returned.
+ * @param tagName the tag name, case insensitive
+ */
+ public static Tag getTag(String tagName)
+ {
+ if (tagMap == null)
+ {
+ // Create the mao on demand.
+ tagMap = new TreeMap();
+
+ Tag[] tags = getAllTags();
+
+ for (int i = 0; i < tags.length; i++)
+ {
+ tagMap.put(tags [ i ].toString(), tags [ i ]);
+ }
+ }
+
+ return (Tag) tagMap.get(tagName.toLowerCase());
}
}
--- /dev/null
+/* HTMLDocument.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html;
+
+import javax.swing.text.DefaultStyledDocument;
+
+/**
+ * TODO: This class is not yet completetely implemented.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class HTMLDocument extends DefaultStyledDocument
+{
+ public void processHTMLFrameHyperlinkEvent(HTMLFrameHyperlinkEvent event)
+ {
+ }
+}
--- /dev/null
+/* HTMLEditorKit.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html;
+
+import java.io.Reader;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.MutableAttributeSet;
+
+/**
+ * This class is NOT implemented. This file currently holds only
+ * declarations of the two enclosing classes, necessary for testing
+ * the implemented javax.swing.text.html.parser package.
+ * @author No authorship is taken, implement the class and be!
+ * TODO: replace this header after implementing the class.
+ */
+public class HTMLEditorKit
+{
+ /**
+ * The abstract HTML parser declaration.
+ */
+ public abstract static class Parser
+ {
+ /**
+ * Parse the HTML text, calling various methods of the provided callback
+ * in response to the occurence of the corresponding HTML constructions.
+ * @param reader The reader to read the source HTML from.
+ * @param callback The callback to receive information about the parsed
+ * HTML structures
+ * @param ignoreCharSet If true, the parser ignores all charset information
+ * that may be present in HTML documents.
+ * @throws IOException, normally if the reader throws one.
+ */
+ public abstract void parse(Reader reader, ParserCallback callback,
+ boolean ignoreCharSet
+ )
+ throws java.io.IOException;
+ }
+
+ /**
+ * The "hook" that receives all information about the HTML document
+ * structure while parsing it. The methods are invoked by parser
+ * and should be normally overridden.
+ */
+ public static class ParserCallback
+ {
+ /**
+ * If the tag does not occurs in the html stream directly, but
+ * is supposed by parser, the tag attribute set contains this additional
+ * attribute, having value Boolean.True.
+ */
+ public static final Object IMPLIED = "_implied_";
+
+ /**
+ * The parser calls this method after it finishes parsing the document.
+ */
+ public void flush()
+ throws BadLocationException
+ {
+ }
+
+ /**
+ * Handle HTML comment, present in the given position.
+ * @param comment the comment
+ * @position the position of the comment in the text being parsed.
+ */
+ public void handleComment(char[] comment, int position)
+ {
+ }
+
+ /**
+ * Notifies about the character sequences, used to separate lines in
+ * this document. The parser calls this method after it finishes
+ * parsing the document, but before flush().
+ * @param end_of_line The "end of line sequence", one of: \r or \n or \r\n.
+ */
+ public void handleEndOfLineString(String end_of_line)
+ {
+ }
+
+ /**
+ * The method is called when the HTML closing tag ((like </table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag being handled
+ * @position the tag position in the text being parsed.
+ */
+ public void handleEndTag(HTML.Tag tag, int position)
+ {
+ }
+
+ /**
+ * Handle the error.
+ * @param message The message, explaining the error.
+ * @param position The starting position of the fragment that has caused
+ * the error in the html document being parsed.
+ */
+ public void handleError(String message, int position)
+ {
+ }
+
+ /**
+ * Handle the tag with no content, like <br>. The method is
+ * called for the elements that, in accordance with the current DTD,
+ * has an empty content.
+ * @param tag The tag being handled.
+ * @param position The tag position in the text being parsed.
+ */
+ public void handleSimpleTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param tag The tag being handled
+ * @param position The tag position in the text bein parsed
+ */
+ public void handleStartTag(HTML.Tag tag, MutableAttributeSet attributes,
+ int position
+ )
+ {
+ }
+
+ /**
+ * Handle the text section.
+ * @param text A section text.
+ * @param position The text position in the HTML document text being parsed.
+ */
+ public void handleText(char[] text, int position)
+ {
+ }
+ }
+}
--- /dev/null
+/* HTMLFrameHyperlinkEvent.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html;
+
+import java.net.URL;
+
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkEvent.EventType;
+import javax.swing.text.Element;
+
+/**
+ * HTMLFrameHyperlinkEvent transfers information about the link that was
+ * activated in a frame.
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class HTMLFrameHyperlinkEvent
+ extends HyperlinkEvent
+{
+ private final String target_frame;
+
+ /**
+ * Creates a new hypertext link event.
+ *
+ * @param source The object this link is associated to.
+ * @param type The type of event.
+ * @param url The URL this link pointing too.
+ * @param element The element in the document representing the anchor.
+ * @param frame - the Frame to display the document in.
+ */
+ public HTMLFrameHyperlinkEvent(Object source, EventType type, URL url,
+ Element element, String frame)
+ {
+ super(source, type, url, frame, element);
+ target_frame = frame;
+ }
+
+ /**
+ * Creates a new hypertext link event.
+ *
+ * @param source The object this link is associated to.
+ * @param type The type of event.
+ * @param url The URL this link pointing too.
+ * @param frame - the Frame to display the document in.
+ */
+ public HTMLFrameHyperlinkEvent(Object source, EventType type, URL url,
+ String frame)
+ {
+ super(source, type, url, frame);
+ target_frame = frame;
+ }
+
+ /**
+ * Creates a new hypertext link event.
+ *
+ * @param source The object this link is associated to.
+ * @param type The type of event.
+ * @param url The URL this link pointing too.
+ * @param description The description for this link.
+ * @param element The element in the document representing the anchor.
+ * @param frame - the Frame to display the document in.
+ */
+ public HTMLFrameHyperlinkEvent(Object source, EventType type, URL url,
+ String description, Element element,
+ String frame)
+ {
+ super(source, type, url, description, element);
+ target_frame = frame;
+ }
+
+ /**
+ * Creates a new hypertext link event.
+ *
+ * @param source The object this link is associated to.
+ * @param type The type of event.
+ * @param url The URL this link pointing too.
+ * @param description The description for this link.
+ * @param frame - the Frame to display the document in.
+ */
+ public HTMLFrameHyperlinkEvent(Object source, EventType type, URL url,
+ String description, String frame)
+ {
+ super(source, type, url, description);
+ target_frame = frame;
+ }
+
+ /**
+ * Gets the string, passed as the target frame identifier.
+ *
+ * @return the target for the link.
+ */
+ public String getTarget()
+ {
+ return target_frame;
+ }
+}
--- /dev/null
+/* AttributeList.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.support.gnuStringIntMapper;
+
+import java.io.Serializable;
+
+import java.util.Enumeration;
+import java.util.Vector;
+
+/**
+ * <p>
+ * Stores the attribute information, obtained by parsing SGML (DTD) tag
+ * <code><!ATTLIST .. ></code></p>
+ * <p>
+ * Elements can have a associated named properties (attributes) having the
+ * assigned values. The element start tag can have any number of attribute
+ * value pairs, separated by spaces. They can appear in any order.
+ * SGML requires you to delimit the attribute values using either double (")
+ * or single (') quotation marks. In HTML, it is possible
+ * (but not recommended) to specify the value of an attribute without
+ * quotation marks. Such attribute value may only contain
+ * letters, digits, hyphens (-) and periods (.) .
+ * </p>
+ * <p>
+ * The <code>AttributeList</code> defines a single attribute that additionally
+ * has a pointer referencing the possible subsequent attribute.
+ * The whole structure is just a simple linked list, storing all attributes of
+ * some <code>Element</code>.
+ * Use the <code>getNext()</code> method repeatedly to see all attributes in
+ * the list.
+ * </p>
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public final class AttributeList
+ implements DTDConstants, Serializable
+{
+ /** Maps between type names and they string values. */
+ private static final gnuStringIntMapper mapper =
+ new gnuStringIntMapper()
+ {
+ protected void create()
+ {
+ add("CDATA", DTDConstants.CDATA);
+ add("ENTITY", DTDConstants.ENTITY);
+ add("ENTITIES", DTDConstants.ENTITIES);
+ add("ID", DTDConstants.ID);
+ add("IDREF", DTDConstants.IDREF);
+ add("IDREFS", DTDConstants.IDREFS);
+ add("NAME", DTDConstants.NAME);
+ add("NAMES", DTDConstants.NAMES);
+ add("NMTOKEN", DTDConstants.NMTOKEN);
+ add("NMTOKENS", DTDConstants.NMTOKENS);
+ add("NOTATION", DTDConstants.NOTATION);
+ add("NUMBER", DTDConstants.NUMBER);
+ add("NUMBERS", DTDConstants.NUMBERS);
+ add("NUTOKEN", DTDConstants.NUTOKEN);
+ add("NUTOKENS", DTDConstants.NUTOKENS);
+ }
+ };
+
+ /** Use serialVersionUID for interoperability. */
+ private static final long serialVersionUID = -1361214058742015233L;
+
+ /**
+ * The value of ( = pointer to ) the next attribute in the linked list,
+ * storing all attributes of some Element. Contains null for the
+ * last attribute.
+ */
+ public AttributeList next;
+
+ /**
+ * The name of the attribute. The attribute names are case insensitive.
+ */
+ public String name;
+
+ /**
+ * The default value of this attribute. Equals to null if no default value
+ * is specified.
+ */
+ public String value;
+
+ /**
+ * The explicit set of the allowed values of this attribute. Equals to
+ * null, if this parameter was not specified.
+ * Values, defined in DTD, are case insensitive.
+ */
+ public Vector values;
+
+ /**
+ * The modifier of this attribute. This field contains one of the
+ * following DTD constants:
+ * <ul>
+ * <li> REQUIRED if the attribute value is always required,</li>
+ * <li> IMPLIED if the user agent must supply the default value itself,</li>
+ * <li> FIXED if the attribute value is fixed to some value and cannot
+ * be changed.</li>
+ * <li> DEFAULT if the attribute default value has been supplied.</li>
+ * <li> CURRENT the value that at any point in the document is
+ * the last value supplied for that element. A value is required to be
+ * supplied for the first* occurrence of an element</li>
+ * <li> CONREF specifies the IDREF value of
+ * the reference to content in another location of the document.
+ * The element with this attribute is empty, the content from
+ * that another location must be used instead.</li>
+ * </ul>
+ */
+ public int modifier;
+
+ /**
+ * The type of the attribute. The possible values of this field
+ * (NUMBER, NAME, ID, CDATA and so on) are defined in DTDConstants.
+ */
+ public int type;
+
+ /**
+ * Creates the attribute with the given name, initializing other fields
+ * to the default values ( 0 and null ).
+ *
+ * @param a_name The name of the attribute.
+ */
+ public AttributeList(String a_name)
+ {
+ name = a_name;
+ }
+
+ /**
+ * Creates the attribute with the given properties.
+ * @param a_name The name of the attribute
+ * @param a_type The type of the attribute. The possible values are defined
+ * in <code> DTDConstants</code>.
+ * @param a_modifier The modifier of this attribute. The possible values
+ * are defined in <code> DTDConstants</code>.
+ * @param a_default The default value of this attribute
+ * @param allowed_values The explicit set of the allowed values of
+ * this attribute
+ * @param a_next The value of the subsequent instance of the AttributeList,
+ * representing the next attribute definition for the same element.
+ * Equals to null for the last attribute definition.
+ */
+ public AttributeList(String a_name, int a_type, int a_modifier,
+ String a_default, Vector allowed_values,
+ AttributeList a_next
+ )
+ {
+ this(a_name);
+ type = a_type;
+ modifier = a_modifier;
+ value = a_default;
+ values = allowed_values;
+ next = a_next;
+ }
+
+ /**
+ * Get the modifier of this attribute. This field contains one of the
+ * following DTD constants:
+ * <ul>
+ * <li> REQUIRED if the attribute value is always required,</li>
+ * <li> IMPLIED if the user agent must supply the default value itself,</li>
+ * <li> FIXED if the attribute value is fixed to some value and cannot
+ * be changed.</li>
+ * <li> DEFAULT if the attribute default value has been supplied.</li>
+ * <li> CURRENT the value that at any point in the document is
+ * the last value supplied for that element. A value is required to be
+ * supplied for the first* occurrence of an element</li>
+ * <li> CONREF specifies the IDREF value of
+ * the reference to content in another location of the document.
+ * The element with this attribute is empty, the content from
+ * that another location must be used instead.</li>
+ * </ul>
+ */
+ public int getModifier()
+ {
+ return modifier;
+ }
+
+ /**
+ * Get the name of the attribute.
+ * The value is returned as it was supplied to a
+ * constructor, preserving the character case.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Get the value of ( = pointer to ) the next attribute in the linked list,
+ * storing all attributes of some Element. Contains null for the
+ * last attribute.
+ */
+ public AttributeList getNext()
+ {
+ return next;
+ }
+
+ /**
+ * Get the type of the attribute. The possible values of this field
+ * (NUMBER, NAME, ID, CDATA and so on) are defined in DTDConstants.
+ */
+ public int getType()
+ {
+ return type;
+ }
+
+ /**
+ * Get the default value of this attribute.
+ */
+ public String getValue()
+ {
+ return value;
+ }
+
+ /**
+ * Get the allowed values of this attribute.
+ */
+ public Enumeration getValues()
+ {
+ return values.elements();
+ }
+
+ /**
+ * Converts a string value, representing a valid SGLM attribute type,
+ * into the corresponding value, defined in DTDConstants.
+ * @param typeName the name of the type (character case is ignored).
+ * @return a value from DTDConstants or DTDConstants.ANY if the
+ * string is not representing a known type. The known attribute types
+ * in this implementation are CDATA, ENTITY, ENTITIES, ID, IDREF, IDREFS,
+ * NAME, NAMES, NMTOKEN, NMTOKENS, NOTATION, NUMBER, NUMBERS, NUTOKEN and
+ * NUTOKENS.
+ * @throws NullPointerException if the passed parameter is null.
+ */
+ public static int name2type(String typeName)
+ {
+ return mapper.get(typeName.toUpperCase());
+ }
+
+ /**
+ * Returns the attribute name.
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+ /**
+ * Converts a value from DTDConstants into the string representation.
+ * @param type - an integer value of the public static integer field,
+ * defined in the DTDConstants class.
+ * @return a corresponding SGML DTD keyword (UPPERCASE) or null if there
+ * are no attribute type constant having the given value.
+ */
+ public static String type2name(int type)
+ {
+ return mapper.get(type);
+ }
+}
--- /dev/null
+/* ContentModel.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.models.transformer;
+
+import java.io.Serializable;
+
+import java.util.Vector;
+
+/**
+ * A representation of the element content. The instances of this class
+ * can be arranged into the linked list, representing a BNF expression.
+ * The content model is constructed as a branched tree structure in the
+ * following way:
+ * <pre>
+ * a = new ContentModel('+', A, null); // a reprensents A+
+ * b = new ContentModel('&', B, a); // b represents B & A+
+ * c = new ContentModel('*', b, null); // c represents ( B & A+) *
+ * d = new ContentModel('|', new ContentModel('*', A, null),
+ * new ContentModel('?', B, null)); // d represents ( A* | B? )
+ * </pre>
+ * where the valid operations are:
+ * <ul>
+ * <li><code>E* </code> E occurs zero or more times</li>
+ * <li><code>E+ </code> E occurs one or more times</li>
+ * <li><code>E? </code> E occurs once or not atl all</li>
+ * <li><code>A,B</code> A occurs before B</li>
+ * <li><code>A|B</code> both A and B are permitted in any order.
+ * The '|' alone does not permit the repetetive occurence of A or B
+ * (use <code>(A|B)*</code>.</li>
+ * <li><code>A&B</code> both A and B must occur once (in any order)</li>
+ * </ul>
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public final class ContentModel
+ implements Serializable
+{
+ /** Use serialVersionUID for interoperability. */
+ private static final long serialVersionUID = -1130825523866321257L;
+
+ /**
+ * The next content model model ( = pointer to the next element of
+ * the linked list) for the binary expression (',','&' or '|'). Null
+ * for the last element in the list.
+ */
+ public ContentModel next;
+
+ /**
+ * The document content, containing either Element or the enclosed
+ * content model (that would be in the parentheses in BNF expression).
+ */
+ public Object content;
+
+ /**
+ * Specifies the BNF operation between this node and the node,
+ * stored in the field <code>next</code> (or for this node, if it is
+ * an unary operation.
+ */
+ public int type;
+
+ /** Create a content model initializing all fields to default values. */
+ public ContentModel()
+ {
+ }
+
+ /**
+ * Create a content model, consisting of the single element.
+ * Examples:
+ *<code>
+ * a = new ContentModel('+', A, null); // a reprensents A+
+ * b = new ContentModel('&', B, a); // b represents B & A+
+ * c = new ContentModel('*', b, null); // c represents ( B & A+) *
+ * d = new ContentModel('|', A,
+ * new ContentModel('?',b, null);
+ * // d represents
+ * </code>
+ */
+ public ContentModel(Element a_content)
+ {
+ content = a_content;
+ }
+
+ /**
+ * Create a content model, involving expression of the given type.
+ * @param a_type The expression operation type ('*','?' or '+'
+ * @param a_content The content for that the expression is applied.
+ */
+ public ContentModel(int a_type, ContentModel a_content)
+ {
+ content = a_content;
+ type = a_type;
+ }
+
+ /**
+ * Create a content model, involving binary expression of the given type.
+ * @param a_type The expression operation type ( ',', '|' or '&').
+ * @param a_content The content of the left part of the expression.
+ * @param a_next The content model, representing the right part of the
+ * expression.
+ */
+ public ContentModel(int a_type, Object a_content, ContentModel a_next)
+ {
+ content = a_content;
+ type = a_type;
+ next = a_next;
+ }
+
+ /**
+ * Adds all list elements to the given vector, ignoring the
+ * operations between the elements. The old vector values are not
+ * discarded.
+ * @param elements - a vector to add the values to.
+ */
+ public void getElements(Vector elements)
+ {
+ ContentModel c = this;
+
+ while (c != null)
+ {
+ elements.add(c.content);
+ c = c.next;
+ }
+ }
+
+ /**
+ * Checks if the content model matches an empty input stream.
+ * The empty content is created using SGML DTD keyword EMPTY.
+ * The empty model is a model with the content field equal to null.
+ *
+ * @return true if the content field is equal to null.
+ */
+ public boolean empty()
+ {
+ return content == null;
+ }
+
+ /**
+ * Get the element, stored in the <code>next.content</code>.
+ * The method is programmed as the part of the standard API, but not
+ * used in this implementation.
+ * @return the value of the field <code>next</code>.
+ */
+ public Element first()
+ {
+ return (Element) next.content;
+ }
+
+ /**
+ * Checks if this object can potentially be the first token in the
+ * ContenModel list. The method is programmed as the part of the
+ * standard API, but not used in this implementation.
+ */
+ public boolean first(Object token)
+ {
+ ContentModel c = this;
+ while (c.next != null)
+ {
+ if (c.content != null && c.content.toString().equals(token.toString()) &&
+ c.type != ','
+ )
+
+ // Agree if the operation with the preceeding element
+ // is not the comma operation.
+ return true;
+ c = c.next;
+ }
+ return false;
+ }
+
+ /**
+ * Returns a string representation (an expression) of this content model.
+ * The expression has BNF-like syntax, except the absence of the
+ * unary operator is additionally indicated by " ' ". It is
+ * advisable to check the created models for correctness using this
+ * method.
+ */
+ public String toString()
+ {
+ return transformer.transform(this).toString();
+ }
+}
--- /dev/null
+/* DTD.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import java.io.DataInputStream;
+import java.io.EOFException;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.BitSet;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+/**
+ * <p>Representation or the SGML DTD document.
+ * Provides basis for describing a syntax of the
+ * HTML documents. The fields of this class are NOT initialized in
+ * constructor. You need to do this separately before passing this data
+ * structure to the HTML parser. The subclasses with the fields, pre-
+ * initialized, for example, for HTML 4.01, can be available only between
+ * the implementation specific classes
+ * ( for example, {@link gnu.javax.swing.text.html.parser.HTML_401F }
+ * in this implementation).</p>
+ * <p>
+ * If you need more information about SGML DTD documents,
+ * the author suggests to read SGML tutorial on
+ * {@link http://www.w3.org/TR/WD-html40-970708/intro/sgmltut.html}.
+ * We also recommend Goldfarb C.F (1991) <i>The SGML Handbook</i>,
+ * Oxford University Press, 688 p, ISBN: 0198537379.
+ * </p>
+ * <p>
+ * Warning: the html, head and other tag fields will only be automatically
+ * assigned if the VM has the correctly implemented reflection mechanism.
+ * As these fields are not used anywhere in the implementation, not
+ * exception will be thrown in the opposite case.
+ * </p>
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class DTD
+ implements DTDConstants
+{
+ /**
+ * The version of the persistent data format.
+ */
+ public static int FILE_VERSION = 1;
+
+ /**
+ * The table of existing available DTDs.
+ */
+ static Hashtable dtdHash = new Hashtable();
+
+ /**
+ * The applet element for this DTD.
+ */
+ public Element applet;
+
+ /**
+ * The base element for this DTD.
+ */
+ public Element base;
+
+ /**
+ * The body element for this DTD.
+ */
+ public Element body;
+
+ /**
+ * The head element for this DTD.
+ */
+ public Element head;
+
+ /**
+ * The html element for this DTD.
+ */
+ public Element html;
+
+ /**
+ * The isindex element of for this DTD.
+ */
+ public Element isindex;
+
+ /**
+ * The meta element for this DTD.
+ */
+ public Element meta;
+
+ /**
+ * The p element for this DTD.
+ */
+ public Element p;
+
+ /**
+ * The param element for this DTD.
+ */
+ public Element param;
+
+ /**
+ * The pcdata for this DTD.
+ */
+ public Element pcdata;
+
+ /**
+ * The title element for this DTD.
+ */
+ public Element title;
+
+ /**
+ * The element for accessing all DTD elements by name.
+ */
+ public Hashtable elementHash = new Hashtable();
+
+ /**
+ * The entity table for accessing all DTD entities by name.
+ */
+ public Hashtable entityHash = new Hashtable();
+
+ /**
+ * The name of this DTD.
+ */
+ public String name;
+
+ /**
+ * Contains all elements in this DTD. The
+ * javax.swing.text.html.parser.Element#index field of all elements
+ * in this vector is set to the element position in this vector.
+ */
+ public Vector elements = new Vector();
+
+ /** Create a new DTD with the specified name. */
+ protected DTD(String a_name)
+ {
+ name = a_name;
+ }
+
+ /** Get this DTD by name. The current implementation
+ * only looks in the internal table of DTD documents. If no corresponding
+ * entry is found, the new entry is created, placed into
+ * the table and returned. */
+ public static DTD getDTD(String name)
+ throws IOException
+ {
+ DTD d = (DTD) dtdHash.get(name);
+
+ if (d == null)
+ {
+ d = new DTD(name);
+ dtdHash.put(d.name, d);
+ }
+
+ return d;
+ }
+
+ /**
+ * Get the element by the element name. If the element is not yet
+ * defined, it is newly created and placed into the element table.
+ * If the element name matches (ingoring case) a public non static
+ * element field in this class, this field is assigned to the value
+ * of the newly created element.
+ */
+ public Element getElement(String element_name)
+ {
+ return newElement(element_name);
+ }
+
+ /**
+ * Get the element by the value of its
+ * {@link javax.swing.text.html.parser.Element#index} field.
+ */
+ public Element getElement(int index)
+ {
+ return (Element) elements.get(index);
+ }
+
+ /**
+ * Get the entity with the given identifier.
+ * @param id that can be returned by
+ * {@link javax.swing.text.html.parser.Entity#name2type(String an_entity)}
+ * @return The entity from this DTD or null if there is no entity with
+ * such id or such entity is not present in the table of this instance.
+ */
+ public Entity getEntity(int id)
+ {
+ String name = Entity.mapper.get(id);
+
+ if (name != null)
+ return (Entity) entityHash.get(name);
+ else
+ return null;
+ }
+
+ /**
+ * Get the named entity by its name.
+ */
+ public Entity getEntity(String entity_name)
+ {
+ return (Entity) entityHash.get(entity_name);
+ }
+
+ /**
+ * Get the name of this instance of DTD
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Creates, adds into the entity table and returns the
+ * character entity like <code>&lt;</code>
+ * (means '<code><</code>' );
+ * @param name The entity name (without heading & and closing ;)
+ * @param type The entity type
+ * @param character The entity value (single character)
+ * @return The created entity
+ */
+ public Entity defEntity(String name, int type, int character)
+ {
+ Entity e = newEntity(name, type);
+ e.data = new char[] { (char) character };
+ return e;
+ }
+
+ /**
+ * Define the attributes for the element with the given name.
+ * If the element is not exist, it is created.
+ * @param forElement
+ * @param attributes
+ */
+ public void defineAttributes(String forElement, AttributeList attributes)
+ {
+ Element e = (Element) elementHash.get(forElement.toLowerCase());
+
+ if (e == null)
+ e = newElement(forElement);
+
+ e.atts = attributes;
+ }
+
+ /**
+ * Defines the element and adds it to the element table. Sets the
+ * <code>Element.index</code> field to the value, unique for this
+ * instance of DTD. If the element with the given name already exists,
+ * replaces all other its settings by the method argument values.
+ * @param name the name of the element
+ * @param type the type of the element
+ * @param headless true if the element needs no starting tag
+ * (should not occur in HTML).
+ * @param tailless true if the element needs no ending tag (like
+ * <code><hr></code>
+ * @param content the element content
+ * @param exclusions the set of elements that must not occur inside
+ * this element. The <code>Element.index</code> value defines which
+ * bit in this bitset corresponds to that element.
+ * @param inclusions the set of elements that can occur inside this
+ * element. the <code>Element.index</code> value defines which
+ * bit in this bitset corresponds to that element.
+ * @param attributes the element attributes.
+ * @return the newly defined element.
+ */
+ public Element defineElement(String name, int type, boolean headless,
+ boolean tailless, ContentModel content,
+ BitSet exclusions, BitSet inclusions,
+ AttributeList attributes
+ )
+ {
+ Element e = newElement(name);
+ e.type = type;
+ e.oStart = headless;
+ e.oEnd = tailless;
+ e.content = content;
+ e.exclusions = exclusions;
+ e.inclusions = inclusions;
+ e.atts = attributes;
+
+ return e;
+ }
+
+ /**
+ * Creates, intializes and adds to the entity table the new
+ * entity.
+ * @param name the name of the entity
+ * @param type the type of the entity
+ * @param data the data section of the entity
+ * @return the created entity
+ */
+ public Entity defineEntity(String name, int type, char[] data)
+ {
+ Entity e = newEntity(name, type);
+ e.data = data;
+
+ return e;
+ }
+
+ /** Place this DTD into the DTD table. */
+ public static void putDTDHash(String name, DTD dtd)
+ {
+ dtdHash.put(name, dtd);
+ }
+
+ /**
+ * <p>Reads DTD from an archived format. This format is not standardized
+ * and differs between implementations.</p><p> This implementation
+ * reads and defines all entities and elements using
+ * ObjectInputStream. The elements and entities can be written into the
+ * stream in any order. The objects other than elements and entities
+ * are ignored.</p>
+ * @param stream A data stream to read from.
+ * @throws java.io.IOException If one is thrown by the input stream
+ */
+ public void read(DataInputStream stream)
+ throws java.io.IOException
+ {
+ ObjectInputStream oi = new ObjectInputStream(stream);
+ Object def;
+ try
+ {
+ while (true)
+ {
+ def = oi.readObject();
+ if (def instanceof Element)
+ {
+ Element e = (Element) def;
+ elementHash.put(e.name.toLowerCase(), e);
+ assignField(e);
+ }
+ else if (def instanceof Entity)
+ {
+ Entity e = (Entity) def;
+ entityHash.put(e.name, e);
+ }
+ }
+ }
+ catch (ClassNotFoundException ex)
+ {
+ throw new IOException(ex.getMessage());
+ }
+ catch (EOFException ex)
+ {
+ // ok EOF
+ }
+ }
+
+ /**
+ * Returns the name of this instance of DTD.
+ */
+ public String toString()
+ {
+ return name;
+ }
+
+ /**
+ * Creates and returns new attribute (not an attribute list).
+ * @param name the name of this attribute
+ * @param type the type of this attribute (FIXED, IMPLIED or
+ * REQUIRED from <code>DTDConstants</code>).
+ * @param modifier the modifier of this attribute
+ * @param default_value the default value of this attribute
+ * @param allowed_values the allowed values of this attribute. The multiple
+ * possible values in this parameter are supposed to be separated by
+ * '|', same as in SGML DTD <code><!ATTLIST </code>tag. This parameter
+ * can be null if no list of allowed values is specified.
+ * @param atts the previous attribute of this element. This is
+ * placed to the field
+ * {@link javax.swing.text.html.parser.AttributeList#next },
+ * creating a linked list.
+ * @return
+ */
+ protected AttributeList defAttributeList(String name, int type, int modifier,
+ String default_value,
+ String allowed_values,
+ AttributeList atts
+ )
+ {
+ AttributeList al = new AttributeList(name);
+ al.modifier = modifier;
+ al.value = default_value;
+ al.next = atts;
+
+ if (allowed_values != null)
+ {
+ StringTokenizer st = new StringTokenizer(allowed_values, " \t|");
+ Vector v = new Vector(st.countTokens());
+
+ while (st.hasMoreTokens())
+ v.add(st.nextToken());
+
+ al.values = v;
+ }
+
+ return al;
+ }
+
+ /**
+ * Creates a new content model.
+ * @param type specifies the BNF operation for this content model.
+ * The valid operations are documented in the
+ * {@link javax.swing.text.html.parser.ContentModel#type }.
+ * @param content the content of this content model
+ * @param next if the content model is specified by BNF-like
+ * expression, contains the rest of this expression.
+ * @return The newly created content model.
+ */
+ protected ContentModel defContentModel(int type, Object content,
+ ContentModel next
+ )
+ {
+ ContentModel model = new ContentModel();
+ model.type = type;
+ model.next = next;
+ model.content = content;
+
+ return model;
+ }
+
+ /**
+ * Defines a new element and adds it to the element table.
+ * If the element alredy exists,
+ * overrides it settings with the specified values.
+ * @param name the name of the new element
+ * @param type the type of the element
+ * @param headless true if the element needs no starting tag
+ * @param tailless true if the element needs no closing tag
+ * @param content the element content.
+ * @param exclusions the elements that must be excluded from the
+ * content of this element, in all levels of the hierarchy.
+ * @param inclusions the elements that can be included as the
+ * content of this element.
+ * @param attributes the element attributes.
+ * @return the created or updated element.
+ */
+ protected Element defElement(String name, int type, boolean headless,
+ boolean tailless, ContentModel content,
+ String[] exclusions, String[] inclusions,
+ AttributeList attributes
+ )
+ {
+ // compute the bit sets
+ BitSet exclude = bitSet(exclusions);
+ BitSet include = bitSet(inclusions);
+
+ Element e =
+ defineElement(name, type, headless, tailless, content, exclude, include,
+ attributes
+ );
+
+ return e;
+ }
+
+ /**
+ * Creates, intializes and adds to the entity table the new
+ * entity.
+ * @param name the name of the entity
+ * @param type the type of the entity
+ * @param data the data section of the entity
+ * @return the created entity
+ */
+ protected Entity defEntity(String name, int type, String data)
+ {
+ Entity e = newEntity(name, type);
+ e.data = data.toCharArray();
+
+ return e;
+ }
+
+ private void assignField(Element e)
+ {
+ String element_name = e.name;
+ try
+ {
+ // Assign the field via reflection.
+ Field f = getClass().getField(element_name.toLowerCase());
+ if ((f.getModifiers() & Modifier.PUBLIC) != 0)
+ if ((f.getModifiers() & Modifier.STATIC) == 0)
+ if (f.getType().isAssignableFrom(e.getClass()))
+ f.set(this, e);
+ }
+ catch (IllegalAccessException ex)
+ {
+ unexpected(ex);
+ }
+ catch (NoSuchFieldException ex)
+ {
+ // This is ok.
+ }
+
+ // Some virtual machines may still lack the proper
+ // implementation of reflection. As the tag fields
+ // are not used anywhere in this implementation,
+ // (and this class is also rarely used by the end user),
+ // it may be better not to crash everything by throwing an error
+ // for each case when the HTML parsing is required.
+ catch (Throwable t)
+ {
+ // This VM has no reflection mechanism implemented!
+ if (t instanceof OutOfMemoryError)
+ throw (Error) t;
+ }
+ }
+
+ /**
+ * Create the bit set for this array of elements.
+ * The unknown elements are automatically defined and added
+ * to the element table.
+ * @param elements
+ * @return
+ */
+ private BitSet bitSet(String[] elements)
+ {
+ BitSet b = new BitSet();
+
+ for (int i = 0; i < elements.length; i++)
+ {
+ Element e = getElement(elements [ i ]);
+
+ if (e == null)
+ e = newElement(elements [ i ]);
+
+ b.set(e.index);
+ }
+
+ return b;
+ }
+
+ /**
+ * Find the element with the given name in the element table.
+ * If not find, create a new element with this name and add to the
+ * table.
+ * @param name the name of the element
+ * @return the found or created element.
+ */
+ private Element newElement(String name)
+ {
+ Element e = (Element) elementHash.get(name.toLowerCase());
+
+ if (e == null)
+ {
+ e = new Element();
+ e.name = name;
+ e.index = elements.size();
+ elements.add(e);
+ elementHash.put(e.name.toLowerCase(), e);
+ assignField(e);
+ }
+ return e;
+ }
+
+ /**
+ * Creates and adds to the element table the entity with an
+ * unitialized data section. Used internally.
+ * @param name the name of the entity
+ * @param type the type of the entity, a bitwise combination
+ * of GENERAL, PARAMETER, SYSTEM and PUBLIC.
+ * @throws an error if the parameter is both GENERAL and PARAMETER
+ * of both PUBLIC and SYSTEM.
+ * @return the created entity
+ */
+ private Entity newEntity(String name, int type)
+ {
+ Entity e = new Entity(name, type, null);
+ entityHash.put(e.name, e);
+ return e;
+ }
+
+ private void unexpected(Exception ex)
+ {
+ throw new Error("This should never happen, report a bug", ex);
+ }
+}
--- /dev/null
+/* DTDConstants.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+/**
+ * <p>This class defines the SGML basic types, used for describing HTML 4.01
+ * at {@link http://www.w3.org/TR/html4/types.html }. Not all constants,
+ * defined here, are actually used in HTML 4.01 SGML specification. Some others
+ * are defined just as part of the required implementation.
+ * </p>
+ * <p>
+ * If you need more information about SGML DTD documents,
+ * the author suggests to read SGML tutorial on
+ * {@link http://www.w3.org/TR/WD-html40-970708/intro/sgmltut.html}.
+ * We also recommend Goldfarb C.F (1991) <i>The SGML Handbook</i>,
+ * Oxford University Press, 688 p, ISBN: 0198537379.
+ * </p>
+ *
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public interface DTDConstants
+{
+ /* ----- The data types, used in HTML 4.01 SGML definition: ---- */
+
+ /**
+ * The CDATA (Character data) constant, specifes the content model,
+ * consisting of characters only. In SGML for HTML 4.01, the character
+ * entities must be replaced by characters, the line feeds must be
+ * ignored and any number of the subsequent carriage returns or tabs
+ * must be replaced by a single space.
+ */
+ int CDATA = 1;
+
+ /**
+ * The EMPTY constant, means the element with no content.
+ */
+ int EMPTY = 17;
+
+ /**
+ * The ID constant, means that the token is the unique identifier.
+ * This identifier can be referenced by attribute with value of IDREF.
+ * The identifier must begin with letter, followed by any number of
+ * letters, digits, hyphens, underscores, colons and periods.
+ */
+ int ID = 4;
+
+ /**
+ * The IDREF constant, specifies reference to a valid ID within
+ * the document.
+ */
+ int IDREF = 5;
+
+ /**
+ * The IDREFS constant, a space separated list of IDREFs
+ */
+ int IDREFS = 6;
+
+ /**
+ * The NAME constant, means the token that
+ * must begin with letter, followed by any number of
+ * letters, digits, hyphens, underscores, colons and periods.
+ */
+ int NAME = 7;
+
+ /**
+ * The NAMES constant, specifies a space separated of NAMEs.
+ */
+ int NAMES = 8;
+
+ /**
+ * The NMTOKEN constant, specifies the attribute, consisting of
+ * characters that can be either digits or alphabetic characters).
+ */
+ int NMTOKEN = 9;
+
+ /**
+ * The NMTOKENS constant, specifies a list of NMTOKENs.
+ */
+ int NMTOKENS = 10;
+
+ /**
+ * The NOTATION constant, a previously defined data type.
+ */
+ int NOTATION = 11;
+
+ /**
+ * The NUMBER constant (means that the attribute consists of at least
+ * one decimal digit).
+ */
+ int NUMBER = 12;
+
+ /**
+ * The NUMBERS constant, specifies a space separated list of NUMBERs.
+ */
+ int NUMBERS = 13;
+
+ /**
+ * The NUTOKEN constant.
+ */
+ int NUTOKEN = 14;
+
+ /**
+ * The NUTOKENS constant.
+ */
+ int NUTOKENS = 15;
+
+ /* -------
+ The entity scope constants.
+ As these four constants are combined with the bitwise OR,
+ they are defined in the hexadecimal notation.
+ The reason of setting the two bits at once (for PUBLIC and SYSTEM)
+ is probably historical. ----- */
+
+ /**
+ * The PUBLIC constant, specifies the public entity. The PUBLIC entities
+ * are assumed to be known to many systems so that a full declaration
+ * need not be transmitted. For example,
+ * <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
+ */
+ int PUBLIC = 0xA;
+
+ /**
+ * The SYSTEM constant, specifies the system entitiy. The system entities
+ * are assumed to be known but require the clear identifer
+ * (like the file path), where they can be found in the system.
+ * For example, <code>
+ * <DOCTYPE html SYSTEM "/path/to/file.dtd"> </code>.
+ */
+ int SYSTEM = 0x11;
+
+ /**
+ * The PARAMETER constant, specifies that entity is only valid
+ * inside SGML DTD scope.
+ */
+ int PARAMETER = 0x40000;
+
+ /**
+ * The GENERAL constant, specifies theat the entity is valid in the
+ * whole HTML document scope.
+ */
+ int GENERAL = 0x10000;
+
+ /* ---- The constants, defining if the element attribute is required,
+ fixed or implied. ---- */
+
+ /**
+ * The attribute modifier #REQUIRED constant, indicates that the
+ * value must be supplied.
+ */
+ int REQUIRED = 2;
+
+ /**
+ * The attribute modifier #FIXED constant, means that the attribute has
+ * the fixed value that cannot be changed.
+ */
+ int FIXED = 1;
+
+ /**
+ * The attribute modifier #IMPLIED constant,
+ * indicating that for this attribute the user agent must provide
+ * the value itself.
+ */
+ int IMPLIED = 5;
+
+ /**
+ * The attribute modifier #CURRENT constant, specifies the value
+ * that at any point in the document is the last value supplied for
+ * that element. A value is required to be supplied for the first
+ * occurrence of an element
+ */
+ int CURRENT = 3;
+
+ /**
+ * The attribute modifier #CONREF constant, specifies the IDREF value of
+ * the reference to content in another location of the document.
+ * The element with this attribute is empty, the content from
+ * that another location must be used instead.
+ */
+ int CONREF = 4;
+
+ /* ----- Constants, defining if the element
+ start and end tags are required. ---- */
+
+ /**
+ * The STARTTAG, meaning that the element needs a starting tag.
+ */
+ int STARTTAG = 13;
+
+ /**
+ * The ENDTAG constant, meaning that the element needs a closing tag.
+ */
+ int ENDTAG = 14;
+
+ /* ----- Other constants: ----- */
+
+ /**
+ * The ANY constant, specifies
+ * an attribute, consisting from arbitrary characters.
+ */
+ int ANY = 19;
+
+ /**
+ * The DEFAULT constant, specifies the default value.
+ */
+ int DEFAULT = 131072;
+
+ /**
+ * The ENTITIES constant (list of ENTITYes)
+ */
+ int ENTITIES = 3;
+
+ /**
+ * The ENTITY constant, meaning the numeric or symbolic name of some
+ * HTML data.
+ */
+ int ENTITY = 2;
+
+ /**
+ * The MD constant.
+ */
+ int MD = 16;
+
+ /**
+ * The MODEL constant.
+ */
+ int MODEL = 18;
+
+ /**
+ * The MS constant.
+ */
+ int MS = 15;
+
+ /**
+ * The PI (Processing Instruction) constant, specifies a processing
+ * instruction. Processing instructions are used to embed information
+ * intended for specific applications.
+ */
+ int PI = 12;
+
+ /**
+ * The RCDATA constant (Entity References and Character Data), specifies
+ * the content model, consisting of characters AND entities. The
+ * "<" is threated as an ordinary character, but
+ * "<code>&name;</code>" still means the general entity with
+ * the given name.
+ */
+ int RCDATA = 16;
+
+ /**
+ * The SDATA constant. Means that the value contains the entity name
+ * and the replacement value of a character entity reference.
+ */
+ int SDATA = 11;
+}
--- /dev/null
+/* DocumentParser.java -- A parser for HTML documents.
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.htmlAttributeSet;
+import javax.swing.text.html.parser.Parser;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.html.HTMLEditorKit;
+
+/**
+ * <p>A simple error-tolerant HTML parser that uses a DTD document
+ * to access data on the possible tokens, arguments and syntax.</p>
+ * <p> The parser reads an HTML content from a Reader and calls various
+ * notifying methods (which should be overridden in a subclass)
+ * when tags or data are encountered.</p>
+ * <p>Some HTML elements need no opening or closing tags. The
+ * task of this parser is to invoke the tag handling methods also when
+ * the tags are not explicitly specified and must be supposed using
+ * information, stored in the DTD.
+ * For example, parsing the document
+ * <p><table><tr><td>a<td>b<td>c</tr> <br>
+ * will invoke exactly the handling methods exactly in the same order
+ * (and with the same parameters) as if parsing the document: <br>
+ * <em><html><head></head><body><table><
+ * tbody></em><tr><td>a<em></td></em><td>b<em>
+ * </td></em><td>c<em></td></tr></em><
+ * <em>/tbody></table></body></html></em></p>
+ * (supposed tags are given in italics). The parser also supports
+ * obsolete elements of HTML syntax.<p>
+ * </p>
+ * In this implementation, DocumentParser is directly derived from its
+ * ancestor without changes of functionality.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class DocumentParser
+ extends Parser
+ implements DTDConstants
+{
+ /**
+ * The enclosed working parser class.
+ */
+ private class gnuParser
+ extends gnu.javax.swing.text.html.parser.support.Parser
+ {
+ private gnuParser(DTD d)
+ {
+ super(d);
+ }
+
+ protected final void handleComment(char[] comment)
+ {
+ parser.handleComment(comment);
+ callBack.handleComment(comment, hTag.where.startPosition);
+ }
+
+ protected final void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ parser.handleEmptyTag(tag);
+ callBack.handleSimpleTag(tag.getHTMLTag(), getAttributes(),
+ hTag.where.startPosition
+ );
+ }
+
+ protected final void handleEndTag(TagElement tag)
+ {
+ parser.handleEndTag(tag);
+ callBack.handleEndTag(tag.getHTMLTag(), hTag.where.startPosition);
+ }
+
+ protected final void handleError(int line, String message)
+ {
+ parser.handleError(line, message);
+ callBack.handleError(message, hTag.where.startPosition);
+ }
+
+ protected final void handleStartTag(TagElement tag)
+ {
+ parser.handleStartTag(tag);
+ htmlAttributeSet attributes = gnu.getAttributes();
+
+ if (tag.fictional())
+ attributes.addAttribute(HTMLEditorKit.ParserCallback.IMPLIED,
+ Boolean.TRUE
+ );
+
+ callBack.handleStartTag(tag.getHTMLTag(), attributes,
+ hTag.where.startPosition
+ );
+ }
+
+ protected final void handleText(char[] text)
+ {
+ parser.handleText(text);
+ callBack.handleText(text, hTag.where.startPosition);
+ }
+
+ DTD getDTD()
+ {
+ return dtd;
+ }
+ }
+
+ /**
+ * This field is used to access the identically named
+ * methods of the outer class.
+ */
+ private DocumentParser parser = this;
+
+ /**
+ * The callback.
+ */
+ private HTMLEditorKit.ParserCallback callBack;
+
+ /**
+ * The reference to the working class of HTML parser that is
+ * actually used to parse the document.
+ */
+ private gnuParser gnu;
+
+ /**
+ * Creates a new parser that uses the given DTD to access data on the
+ * possible tokens, arguments and syntax. There is no single - step way
+ * to get a default DTD; you must either refer to the implementation -
+ * specific packages, write your own DTD or obtain the working instance
+ * of parser in other way, for example, by calling
+ * {@link javax.swing.text.html.HTMLEditorKit#getParser() }.
+ * @param a_dtd a DTD to use.
+ */
+ public DocumentParser(DTD a_dtd)
+ {
+ super(a_dtd);
+ gnu = new gnuParser(a_dtd);
+ }
+
+ /**
+ * Parses the HTML document, calling methods of the provided
+ * callback. This method must be multithread - safe.
+ * @param reader The reader to read the HTML document from
+ * @param callback The callback that is notifyed about the presence
+ * of HTML elements in the document.
+ * @param ignoreCharSet If thrue, any charset changes during parsing
+ * are ignored.
+ * @throws java.io.IOException
+ */
+ public void parse(Reader reader, HTMLEditorKit.ParserCallback a_callback,
+ boolean ignoreCharSet
+ )
+ throws IOException
+ {
+ callBack = a_callback;
+ gnu.parse(reader);
+
+ callBack.handleEndOfLineString(gnu.getEndOfLineSequence());
+ try
+ {
+ callBack.flush();
+ }
+ catch (BadLocationException ex)
+ {
+ // Convert this into the supported type of exception.
+ throw new IOException(ex.getMessage());
+ }
+ }
+
+ /**
+ * Handle HTML comment. The default method returns without action.
+ * @param comment the comment being handled
+ */
+ protected void handleComment(char[] comment)
+ {
+ }
+
+ /**
+ * Handle the tag with no content, like <br>. The method is
+ * called for the elements that, in accordance with the current DTD,
+ * has an empty content.
+ * @param tag the tag being handled.
+ * @throws javax.swing.text.ChangedCharSetException
+ */
+ protected void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ }
+
+ /**
+ * The method is called when the HTML closing tag ((like </table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag being handled
+ */
+ protected void handleEndTag(TagElement tag)
+ {
+ }
+
+ /* Handle error that has occured in the given line. */
+ protected void handleError(int line, String message)
+ {
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag being handled
+ */
+ protected void handleStartTag(TagElement tag)
+ {
+ }
+
+ /**
+ * Handle the text section.
+ * @param text a section text.
+ */
+ protected void handleText(char[] text)
+ {
+ }
+}
--- /dev/null
+/* Element.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.support.gnuStringIntMapper;
+
+import java.io.Serializable;
+
+import java.util.BitSet;
+
+/**
+ * <p>
+ * Stores the element information, obtained by parsing SGML DTD
+ * tag <code><!ELEMENT .. ></code>. This class has no public
+ * constructor and can only be instantiated using the
+ * {@link javax.swing.text.html.parser.DTD } methods</p>
+ *
+ * <p>SGML defines elements that represent structures or
+ * behavior. An element typically consists of a start tag, content, and an
+ * end tag. Hence the elements are not tags. The HTML 4.0 definition specifies
+ * that some elements are not required to have the end tags. Also, some
+ * HTML elements (like <code><hr></code>) have no content. Element names
+ * are case sensitive.</p>
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public final class Element
+ implements DTDConstants, Serializable
+{
+ /**
+ * Package level mapper between type names and they string values.
+ */
+ static final gnuStringIntMapper mapper =
+ new gnuStringIntMapper()
+ {
+ protected void create()
+ {
+ add("CDATA", DTDConstants.CDATA);
+ add("RCDATA", DTDConstants.RCDATA);
+ add("EMPTY", DTDConstants.EMPTY);
+ add("ANY", DTDConstants.ANY);
+ }
+ };
+
+ /** Use serialVersionUID for interoperability. */
+ private static final long serialVersionUID = -6717939384601675586L;
+
+ /**
+ * The element attributes.
+ */
+ public AttributeList atts;
+
+ /**
+ * Contains refernces to elements that must NOT occur inside this element,
+ * at any level of hierarchy.
+ */
+ public BitSet exclusions;
+
+ /**
+ * Contains refernces to elements that must CAN occur inside this element,
+ * at any level of hierarchy.
+ */
+ public BitSet inclusions;
+
+ /**
+ * The content model, defining elements, entities and DTD text
+ * that may/may not occur inside this element.
+ */
+ public ContentModel content;
+
+ /**
+ * A field to store additional user data for this Element.
+ */
+ public Object data;
+
+ /**
+ * The element name.
+ */
+ public String name;
+
+ /**
+ * True is this element need not to have the closing tag, false
+ * otherwise. The HTML 4.0 definition specifies
+ * that some elements (like <code><hr></code>are
+ * not required to have the end tags.
+ */
+ public boolean oEnd;
+
+ /**
+ * True is this element need not to have the starting tag, false
+ * otherwise. The HTML 4.0 definition specifies
+ * that some elements (like <code><head></code> or
+ * <code><body></code>) are
+ * not required to have the start tags.
+
+ */
+ public boolean oStart;
+
+ /**
+ * This field contains the unique integer identifier of this Element,
+ * used to refer the element (more exactly, the element flag)
+ * in <code>inclusions</code> and <code>exclusions</code> bit set.
+ */
+ public int index;
+
+ /**
+ * The element type, containing value, defined in DTDConstants.
+ * In this implementation, the element type can be
+ * CDATA, RCDATA, EMPTY or ANY.
+ */
+ public int type;
+
+ /**
+ * The default constructor must have package level access in this
+ * class. Use DTD.defineElement(..) to create an element when required.
+ * @todo MAKE THIS PACKAGE in the final version. Now the Parser needs it!
+ */
+ Element()
+ {
+ }
+
+ /**
+ * Converts the string representation of the element type
+ * into its unique integer identifier, defined in DTDConstants.
+ * @param a_type A name of the type
+ * @return DTDConstants.CDATA, DTDConstants.RCDATA, DTDConstants.EMPTY,
+ * DTDConstants.ANY or null if the type name is not
+ * "CDATA", "RCDATA", "EMPTY" or "ANY". This function is case sensitive.
+ * @throws NullPointerException if <code>a_type</code> is null.
+ */
+ public static int name2type(String a_type)
+ {
+ return mapper.get(a_type);
+ }
+
+ /**
+ * Get the element attribute by name.
+ * @param attribute the attribute name, case insensitive.
+ * @return the correspoding attribute of this element. The class,
+ * for storing as attribute list, as a single attribute, is used to
+ * store a single attribute in this case.
+ * @throws NullPointerException if the attribute name is null.
+ */
+ public AttributeList getAttribute(String attribute)
+ {
+ AttributeList a = atts;
+
+ while (a != null && !attribute.equalsIgnoreCase(a.name))
+ a = a.next;
+
+ return a;
+ }
+
+ /**
+ * Get the element attribute by its value.
+ * @param a_value the attribute value, case insensitive.
+ * @return the correspoding attribute of this element. The class,
+ * for storing as attribute list, as a single attribute, is used to
+ * store a single attribute in this case. If there are several
+ * attributes with the same value, there is no garranty, which one
+ * is returned.
+ */
+ public AttributeList getAttributeByValue(String a_value)
+ {
+ AttributeList a = atts;
+
+ if (a_value == null)
+ {
+ while (a != null)
+ {
+ if (a.value == null)
+ return a;
+
+ a = a.next;
+ }
+ }
+ else
+ {
+ while (a != null)
+ {
+ if (a.value != null && a_value.equalsIgnoreCase(a.value))
+ return a;
+
+ a = a.next;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Get all attributes of this document as an attribute list.
+ * @return
+ */
+ public AttributeList getAttributes()
+ {
+ return atts;
+ }
+
+ /**
+ * Get the content model, defining elements, entities and DTD text
+ * that may/may not occur inside this element.
+ */
+ public ContentModel getContent()
+ {
+ return content;
+ }
+
+ /**
+ * Returns true for the element with no content.
+ * Empty elements are defined with the SGML DTD keyword "EMPTY".
+ * @return true if content model field (content) method is equal to
+ * null or its method empty() returns true.
+ */
+ public boolean isEmpty()
+ {
+ return content == null || content.empty();
+ }
+
+ /**
+ * Get the unique integer identifier of this Element,
+ * used to refer the element (more exactly, the element flag)
+ * in <code>inclusions</code> and <code>exclusions</code> bit set.
+ * WARNING: This value may not be the same between different
+ * implementations.
+ */
+ public int getIndex()
+ {
+ return index;
+ }
+
+ /**
+ * Get the element name.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Get the element type.
+ * @return one of the values, defined DTDConstants.
+ * In this implementation, the element type can be
+ * CDATA, RCDATA, EMPTY or ANY.
+ */
+ public int getType()
+ {
+ return type;
+ }
+
+ /**
+ * True is this element need not to have the starting tag, false
+ * otherwise.s element need not to have the closing tag, false
+ * otherwise. The HTML 4.0 definition specifies
+ * that some elements (like <code><hr></code>are
+ * not required to have the end tags.
+ */
+ public boolean omitEnd()
+ {
+ return oEnd;
+ }
+
+ /**
+ * True is this element need not to have the closing tag, false
+ * otherwise. The HTML 4.0 definition specifies
+ * that some elements (like <code><head></code> or
+ * <code><body></code>) are
+ * not required to have the start tags.
+ */
+ public boolean omitStart()
+ {
+ return oStart;
+ }
+
+ /**
+ * Returns the name of this element.
+ */
+ public String toString()
+ {
+ return name;
+ }
+}
--- /dev/null
+/* Entity.java -- Stores information, obtained by parsing SGML DTL
+ * <!ENTITY % .. > tag
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import gnu.javax.swing.text.html.parser.support.gnuStringIntMapper;
+
+import java.io.Serializable;
+
+/**
+ * <p>Stores information, obtained by parsing SGML DTL
+ * <!ENTITY % .. > tag.</p>
+ * <p>
+ * The entity defines some kind of macro that can be used elsewhere in
+ * the document.
+ * When the macro is referred to by the name in the DTD, it is expanded into
+ * a string
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public final class Entity
+ implements DTDConstants, Serializable
+{
+ /**
+ * Package level mapper between type names and they string values.
+ */
+ final static gnuStringIntMapper mapper =
+ new gnuStringIntMapper()
+ {
+ protected void create()
+ {
+ add("ANY", DTDConstants.ANY);
+ add("CDATA", DTDConstants.CDATA);
+ add("PUBLIC", DTDConstants.PUBLIC);
+ add("SDATA", DTDConstants.SDATA);
+ add("PI", DTDConstants.PI);
+ add("STARTTAG", DTDConstants.STARTTAG);
+ add("ENDTAG", DTDConstants.ENDTAG);
+ add("MS", DTDConstants.MS);
+ add("MD", DTDConstants.MD);
+ add("SYSTEM", DTDConstants.SYSTEM);
+ }
+ };
+
+ /**
+ * The entity name.
+ */
+ public String name;
+
+ /**
+ * The entity data
+ */
+ public char[] data;
+
+ /**
+ * The entity type.
+ */
+ public int type;
+
+ /**
+ * String representation of the entity data.
+ */
+ private String sdata;
+
+ /**
+ * Create a new entity
+ * @param a_name the entity name
+ * @param a_type the entity type
+ * @param a_data the data replacing the entity reference
+ */
+ public Entity(String a_name, int a_type, char[] a_data)
+ {
+ name = a_name;
+ type = a_type;
+ data = a_data;
+ }
+
+ /**
+ * Converts a given string to the corresponding entity type.
+ * @return a value, defined in DTDConstants (one of
+ * PUBLIC, CDATA, SDATA, PI, STARTTAG, ENDTAG, MS, MD, SYSTEM)
+ * or CDATA if the parameter is not a valid entity type.
+ */
+ public static int name2type(String an_entity)
+ {
+ int r = mapper.get(an_entity);
+ return (r == 0) ? DTDConstants.CDATA : r;
+ }
+
+ /**
+ * Get the entity data.
+ */
+ public char[] getData()
+ {
+ return data;
+ }
+
+ /**
+ * Returns true for general entities. Each general entity can be
+ * referenced as <code>&entity-name;</code>. Such entities are
+ * defined by the SGML DTD tag
+ * <code><!ENTITY <i>name</i> "<i>value</i>"></code>. The general
+ * entities can be used anywhere in the document.
+ */
+ public boolean isGeneral()
+ {
+ return (type & DTDConstants.GENERAL) != 0;
+ }
+
+ /**
+ * Get the entity name.
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * Returns true for parameter entities. Each parameter entity can be
+ * referenced as <code>&entity-name;</code>. Such entities are
+ * defined by the SGML DTD tag
+ * <code><!ENTITY % <i>name</i> "<i>value</i>"></code>. The parameter
+ * entities can be used only in SGML context.
+ */
+ public boolean isParameter()
+ {
+ return (type & DTDConstants.PARAMETER) != 0;
+ }
+
+ /**
+ * Returns a data as String
+ */
+ public String getString()
+ {
+ if (sdata == null)
+ sdata = new String(data);
+
+ return sdata;
+ }
+
+ /**
+ * Get the entity type.
+ * @return the value of the {@link #type}.
+ */
+ public int getType()
+ {
+ return type;
+ }
+
+}
--- /dev/null
+/* Parser.java -- HTML parser
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import java.io.IOException;
+import java.io.Reader;
+
+import javax.swing.text.ChangedCharSetException;
+import javax.swing.text.SimpleAttributeSet;
+
+/*
+ * FOR DEVELOPERS: To avoid regression, please run the package test
+ * textsuite/javax.swing.text.html.parser/AllParserTests after your
+ * modifications.
+ */
+
+/**
+ * <p>A simple error-tolerant HTML parser that uses a DTD document
+ * to access data on the possible tokens, arguments and syntax.</p>
+ * <p> The parser reads an HTML content from a Reader and calls various
+ * notifying methods (which should be overridden in a subclass)
+ * when tags or data are encountered.</p>
+ * <p>Some HTML elements need no opening or closing tags. The
+ * task of this parser is to invoke the tag handling methods also when
+ * the tags are not explicitly specified and must be supposed using
+ * information, stored in the DTD.
+ * For example, parsing the document
+ * <p><table><tr><td>a<td>b<td>c</tr> <br>
+ * will invoke exactly the handling methods exactly in the same order
+ * (and with the same parameters) as if parsing the document: <br>
+ * <em><html><head></head><body><table><
+ * tbody></em><tr><td>a<em></td></em><td>b<em>
+ * </td></em><td>c<em></td></tr></em><
+ * <em>/tbody></table></body></html></em></p>
+ * (supposed tags are given in italics). The parser also supports
+ * obsolete elements of HTML syntax.<p>
+ * </p>
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class Parser
+ implements DTDConstants
+{
+ /**
+ * The document template description that will be used to parse the documents.
+ */
+ protected DTD dtd;
+
+ /**
+ * The value of this field determines whether or not the Parser will be
+ * strict in enforcing SGML compatibility. The default value is false,
+ * stating that the parser should do everything to parse and get at least
+ * some information even from the incorrectly written HTML input.
+ */
+ protected boolean strict;
+
+ /**
+ * The package level reference to the working HTML parser in this
+ * implementation.
+ */
+ final gnu.javax.swing.text.html.parser.support.Parser gnu;
+
+ /**
+ * Creates a new parser that uses the given DTD to access data on the
+ * possible tokens, arguments and syntax. There is no single - step way
+ * to get a default DTD; you must either refer to the implementation -
+ * specific packages, write your own DTD or obtain the working instance
+ * of parser in other way, for example, by calling
+ * {@link javax.swing.text.html.HTMLEditorKit#getParser() }.
+ * @param a_dtd A DTD to use.
+ */
+ public Parser(DTD a_dtd)
+ {
+ dtd = a_dtd;
+
+ final Parser j = this;
+
+ gnu =
+ new gnu.javax.swing.text.html.parser.support.Parser(dtd)
+ {
+ protected final void handleComment(char[] comment)
+ {
+ j.handleComment(comment);
+ }
+
+ protected final void handleEOFInComment()
+ {
+ j.handleEOFInComment();
+ }
+
+ protected final void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ j.handleEmptyTag(tag);
+ }
+
+ protected final void handleStartTag(TagElement tag)
+ {
+ j.handleStartTag(tag);
+ }
+
+ protected final void handleEndTag(TagElement tag)
+ {
+ j.handleEndTag(tag);
+ }
+
+ protected final void handleError(int line, String message)
+ {
+ j.handleError(line, message);
+ }
+
+ protected final void handleText(char[] text)
+ {
+ j.handleText(text);
+ }
+
+ protected final void handleTitle(char[] title)
+ {
+ j.handleTitle(title);
+ }
+
+ protected final void markFirstTime(Element element)
+ {
+ j.markFirstTime(element);
+ }
+
+ protected final void startTag(TagElement tag)
+ throws ChangedCharSetException
+ {
+ j.startTag(tag);
+ }
+
+ protected final void endTag(boolean omitted)
+ {
+ j.endTag(omitted);
+ }
+
+ protected TagElement makeTag(Element element)
+ {
+ return j.makeTag(element);
+ }
+
+ protected TagElement makeTag(Element element, boolean isSupposed)
+ {
+ return j.makeTag(element, isSupposed);
+ }
+ };
+ }
+
+ /**
+ * Parse the HTML text, calling various methods in response to the
+ * occurence of the corresponding HTML constructions.
+ * @param reader The reader to read the source HTML from.
+ * @throws IOException If the reader throws one.
+ */
+ public synchronized void parse(Reader reader)
+ throws IOException
+ {
+ gnu.parse(reader);
+ }
+
+ /**
+ * Parses DTD markup declaration. Currently returns without action.
+ * @return null.
+ * @throws java.io.IOException
+ */
+ public String parseDTDMarkup()
+ throws IOException
+ {
+ return gnu.parseDTDMarkup();
+ }
+
+ /**
+ * Parse DTD document declarations. Currently only parses the document
+ * type declaration markup.
+ * @param strBuff
+ * @return true if this is a valid DTD markup declaration.
+ * @throws IOException
+ */
+ protected boolean parseMarkupDeclarations(StringBuffer strBuff)
+ throws IOException
+ {
+ return gnu.parseMarkupDeclarations(strBuff);
+ }
+
+ /**
+ * Get the attributes of the current tag.
+ * @return The attribute set, representing the attributes of the current tag.
+ */
+ protected SimpleAttributeSet getAttributes()
+ {
+ return gnu.getAttributes();
+ }
+
+ /**
+ * Get the number of the document line being parsed.
+ * @return The current line.
+ */
+ protected int getCurrentLine()
+ {
+ return gnu.hTag.where.beginLine;
+ }
+
+ /**
+ * Get the current position in the document being parsed.
+ * @return The current position.
+ */
+ protected int getCurrentPos()
+ {
+ return gnu.hTag.where.startPosition;
+ }
+
+ /**
+ * The method is called when the HTML end (closing) tag is found or if
+ * the parser concludes that the one should be present in the
+ * current position. The method is called immediatly
+ * before calling the handleEndTag().
+ * @param omitted True if the tag is no actually present in the document,
+ * but is supposed by the parser (like </html> at the end of the
+ * document).
+ */
+ protected void endTag(boolean omitted)
+ {
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * finally delegates the call to handleError, also providing the number of the
+ * current line.
+ */
+ protected void error(String msg)
+ {
+ gnu.error(msg);
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * finally delegates the call to error (msg+": '"+invalid+"'").
+ */
+ protected void error(String msg, String invalid)
+ {
+ gnu.error(msg, invalid);
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * finally delegates the call to error (parm1+" "+ parm2+" "+ parm3).
+ */
+ protected void error(String parm1, String parm2, String parm3)
+ {
+ gnu.error(parm1, parm2, parm3);
+ }
+
+ /**
+ * Invokes the error handler. The default method in this implementation
+ * finally delegates the call to error
+ * (parm1+" "+ parm2+" "+ parm3+" "+ parm4).
+ */
+ protected void error(String parm1, String parm2, String parm3, String parm4)
+ {
+ gnu.error(parm1, parm2, parm3, parm4);
+ }
+
+ /**
+ * In this implementation, this is never called and returns without action.
+ */
+ protected void flushAttributes()
+ {
+ gnu.flushAttributes();
+ }
+
+ /**
+ * Handle HTML comment. The default method returns without action.
+ * @param comment The comment being handled
+ */
+ protected void handleComment(char[] comment)
+ {
+ }
+
+ /**
+ * This is additionally called in when the HTML content terminates
+ * without closing the HTML comment. This can only happen if the
+ * HTML document contains errors (for example, the closing --;gt is
+ * missing. The default method calls the error handler.
+ */
+ protected void handleEOFInComment()
+ {
+ gnu.error("Unclosed comment");
+ }
+
+ /**
+ * Handle the tag with no content, like <br>. The method is
+ * called for the elements that, in accordance with the current DTD,
+ * has an empty content.
+ * @param The tag being handled.
+ * @throws javax.swing.text.ChangedCharSetException
+ */
+ protected void handleEmptyTag(TagElement tag)
+ throws ChangedCharSetException
+ {
+ }
+
+ /**
+ * The method is called when the HTML closing tag ((like </table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag being handled
+ */
+ protected void handleEndTag(TagElement tag)
+ {
+ }
+
+ /* Handle error that has occured in the given line. */
+ protected void handleError(int line, String message)
+ {
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position.
+ * @param The tag being handled
+ */
+ protected void handleStartTag(TagElement tag)
+ {
+ }
+
+ /**
+ * Handle the text section.
+ * <p> For non-preformatted section, the parser replaces
+ * \t, \r and \n by spaces and then multiple spaces
+ * by a single space. Additionaly, all whitespace around
+ * tags is discarded.
+ * </p>
+ * <p> For pre-formatted text (inside TEXAREA and PRE), the parser preserves
+ * all tabs and spaces, but removes <b>one</b> bounding \r, \n or \r\n,
+ * if it is present. Additionally, it replaces each occurence of \r or \r\n
+ * by a single \n.</p>
+ *
+ * @param text A section text.
+ */
+ protected void handleText(char[] text)
+ {
+ }
+
+ /**
+ * Handle HTML <title> tag. This method is invoked when
+ * both title starting and closing tags are already behind.
+ * The passed argument contains the concatenation of all
+ * title text sections.
+ * @param The title text.
+ */
+ protected void handleTitle(char[] title)
+ {
+ }
+
+ /**
+ * Constructs the tag from the given element. In this implementation,
+ * this is defined, but never called.
+ * @param element the base element of the tag.
+ * @return the tag
+ */
+ protected TagElement makeTag(Element element)
+ {
+ return makeTag(element, false);
+ }
+
+ /**
+ * Constructs the tag from the given element.
+ * @param the tag base {@link javax.swing.text.html.parser.Element}
+ * @param isSupposed true if the tag is not actually present in the
+ * html input, but the parser supposes that it should to occur in
+ * the current location.
+ * @return the tag
+ */
+ protected TagElement makeTag(Element element, boolean isSupposed)
+ {
+ return new TagElement(element, isSupposed);
+ }
+
+ /**
+ * This is called when the tag, representing the given element,
+ * occurs first time in the document.
+ * @param element
+ */
+ protected void markFirstTime(Element element)
+ {
+ }
+
+ /**
+ * The method is called when the HTML opening tag ((like <table>)
+ * is found or if the parser concludes that the one should be present
+ * in the current position. The method is called immediately before
+ * calling the handleStartTag.
+ * @param The tag
+ */
+ protected void startTag(TagElement tag)
+ throws ChangedCharSetException
+ {
+ }
+}
-/* ParserDelegator - Delegator for ParserDocument.
- Copyright (C) 2002 Free Software Foundation, Inc.
+/* ParserDelegator.java -- Delegator for ParserDocument.
+ Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
package javax.swing.text.html.parser;
+import gnu.javax.swing.text.html.parser.HTML_401F;
+import gnu.javax.swing.text.html.parser.htmlAttributeSet;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Serializable;
+
+import javax.swing.text.BadLocationException;
+import javax.swing.text.html.HTMLEditorKit;
+import javax.swing.text.html.HTMLEditorKit.ParserCallback;
+
/**
- * Stub implementeation to get gjdoc working.
+ * This class instantiates and starts the working instance of
+ * html parser, being responsible for providing the default DTD.
+ *
+ * TODO Later this class must be derived from the totally abstract class
+ * HTMLEditorKit.Parser. HTMLEditorKit that does not yet exist.
+ *
+ * @author Audrius Meskauskas (AudriusA@Bioinformatics.org)
*/
-//public class ParserDelegator extends HTMLEditorKit.Parser
public class ParserDelegator
+ extends javax.swing.text.html.HTMLEditorKit.Parser
+ implements Serializable
{
+ private class gnuParser
+ extends gnu.javax.swing.text.html.parser.support.Parser
+ {
+ private static final long serialVersionUID = 1;
+
+ private gnuParser(DTD d)
+ {
+ super(d);
+ }
+
+ protected final void handleComment(char[] comment)
+ {
+ callBack.handleComment(comment, hTag.where.startPosition);
+ }
+
+ protected final void handleEmptyTag(TagElement tag)
+ throws javax.swing.text.ChangedCharSetException
+ {
+ callBack.handleSimpleTag(tag.getHTMLTag(), getAttributes(),
+ hTag.where.startPosition
+ );
+ }
+
+ protected final void handleEndTag(TagElement tag)
+ {
+ callBack.handleEndTag(tag.getHTMLTag(), hTag.where.startPosition);
+ }
+
+ protected final void handleError(int line, String message)
+ {
+ callBack.handleError(message, hTag.where.startPosition);
+ }
+
+ protected final void handleStartTag(TagElement tag)
+ {
+ htmlAttributeSet attributes = gnu.getAttributes();
+
+ if (tag.fictional())
+ attributes.addAttribute(ParserCallback.IMPLIED, Boolean.TRUE);
+
+ callBack.handleStartTag(tag.getHTMLTag(), attributes,
+ hTag.where.startPosition
+ );
+ }
+
+ protected final void handleText(char[] text)
+ {
+ callBack.handleText(text, hTag.where.startPosition);
+ }
+
+ DTD getDTD()
+ {
+ return dtd;
+ }
+ }
+
+ /**
+ * Use serialVersionUID for interoperability.
+ */
+ private static final long serialVersionUID = -1276686502624777206L;
+
+ private static DTD dtd = HTML_401F.getInstance();
+
+ /**
+ * The callback.
+ */
+ private HTMLEditorKit.ParserCallback callBack;
+
+ /**
+ * The reference to the working class of HTML parser that is
+ * actually used to parse the document.
+ */
+ private gnuParser gnu;
+
+ /**
+ * Parses the HTML document, calling methods of the provided
+ * callback. This method must be multithread - safe.
+ * @param reader The reader to read the HTML document from
+ * @param callback The callback that is notifyed about the presence
+ * of HTML elements in the document.
+ * @param ignoreCharSet If thrue, any charset changes during parsing
+ * are ignored.
+ * @throws java.io.IOException
+ */
+ public void parse(Reader reader, HTMLEditorKit.ParserCallback a_callback,
+ boolean ignoreCharSet
+ )
+ throws IOException
+ {
+ callBack = a_callback;
+
+ if (gnu == null || !dtd.equals(gnu.getDTD()))
+ {
+ gnu = new gnuParser(dtd);
+ }
+
+ gnu.parse(reader);
+
+ callBack.handleEndOfLineString(gnu.getEndOfLineSequence());
+ try
+ {
+ callBack.flush();
+ }
+ catch (BadLocationException ex)
+ {
+ // Convert this into the supported type of exception.
+ throw new IOException(ex.getMessage());
+ }
+ }
+
+ /**
+ * Calling this method instructs that, if not specified directly,
+ * the documents will be parsed using the default
+ * DTD of the implementation.
+ */
+ protected static void setDefaultDTD()
+ {
+ dtd = HTML_401F.getInstance();
+ }
+
+ /**
+ * Registers the user - written DTD under the given name, also
+ * making it default for the subsequent parsings. This has effect on
+ * all subsequent calls to the parse(...) . If you need to specify
+ * your DTD locally, simply {@link javax.swing.text.html.parser.Parser}
+ * instead.
+ * @param dtd The DTD that will be used to parse documents by this class.
+ * @param name The name of this DTD.
+ * @return No standard is specified on which instance of DTD must be
+ * returned by this method, and it is recommended to leave the returned
+ * value without consideration. This implementation returns the DTD
+ * that was previously set as the default DTD, or the implementations
+ * default DTD if none was set.
+ */
+ protected static DTD createDTD(DTD a_dtd, String name)
+ {
+ DTD.putDTDHash(name, a_dtd);
+
+ DTD dtd_prev = dtd;
+ dtd = a_dtd;
+ return dtd_prev;
+ }
}
--- /dev/null
+/* TagElement.java --
+ Copyright (C) 2005 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package javax.swing.text.html.parser;
+
+import javax.swing.text.html.HTML;
+
+/**
+ * The SGML element, defining a single html tag.
+ * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org)
+ */
+public class TagElement
+{
+ /**
+ * The Element the tag was constructed from.
+ */
+ private final Element element;
+
+ /**
+ * The coresponding HTML tag, assigned once in constructor.
+ */
+ private final HTML.Tag tag;
+
+ /**
+ * The 'fictional' flag.
+ */
+ private final boolean fictional;
+
+ /**
+ * Creates the html tag element from the defintion, stored in the
+ * given element. Sets the flag 'fictional' to false.
+ * @param an_element
+ */
+ public TagElement(Element an_element)
+ {
+ this(an_element, false);
+ }
+
+ /**
+ * Creates the html tag element from the defintion, stored in the
+ * given element, setting the flag 'fictional' to the given value.
+ */
+ public TagElement(Element an_element, boolean is_fictional)
+ {
+ element = an_element;
+ fictional = is_fictional;
+
+ HTML.Tag t = HTML.getTag(element.getName());
+
+ if (t != null)
+ tag = t;
+ else
+ tag = new HTML.UnknownTag(element.getName());
+ }
+
+ /**
+ * Get the element from that the tag was constructed.
+ */
+ public Element getElement()
+ {
+ return element;
+ }
+
+ /**
+ * Get the corresponding HTML tag. This is either one of the
+ * pre-defined HTML tags or the instance of the UnknownTag with the
+ * element name.
+ */
+ public HTML.Tag getHTMLTag()
+ {
+ return tag;
+ }
+
+ /**
+ * Calls isPreformatted() for the corresponding html tag and returns
+ * the obtained value.
+ */
+ public boolean isPreformatted()
+ {
+ return tag.isPreformatted();
+ }
+
+ /**
+ * Calls breaksFlow() for the corresponding html tag and returns
+ * the obtained value.
+ */
+ public boolean breaksFlow()
+ {
+ return tag.breaksFlow();
+ }
+
+ /**
+ * Get the value of the flag 'fictional'.
+ */
+ public boolean fictional()
+ {
+ return fictional;
+ }
+
+ /**
+ * Returns string representation of this object.
+ */
+ public String toString()
+ {
+ return getElement() + (fictional ? "?" : "");
+ }
+}