public void startElement(String uri,
String lname,
String name,
Attributes attrs) {
// System.err.println("Start: " + name);
// super.handleStartingTags is replaced with handleStartingTags
// suggestion by Vu Ngoc Tan/Hop
name = name.toLowerCase();
if (HtmlTagMap.isHtml(name)) {
// we do nothing
return;
}
if (HtmlTagMap.isHead(name)) {
// we do nothing
return;
}
if (HtmlTagMap.isTitle(name)) {
// we do nothing
return;
}
if (HtmlTagMap.isMeta(name)) {
// we look if we can change the body attributes
String meta = null;
String content = null;
if (attrs != null) {
for (int i = 0; i < attrs.getLength(); i++) {
String attribute = attrs.getQName(i);
if (attribute.equalsIgnoreCase(HtmlTags.CONTENT))
content = attrs.getValue(i);
else if (attribute.equalsIgnoreCase(HtmlTags.NAME))
meta = attrs.getValue(i);
}
}
if (meta != null && content != null) {
bodyAttributes.put(meta, content);
}
return;
}
if (HtmlTagMap.isLink(name)) {
// we do nothing for the moment, in a later version we could extract
// the style sheet
return;
}
if (HtmlTagMap.isBody(name)) {
// maybe we could extract some info about the document: color,
// margins,...
// but that's for a later version...
XmlPeer peer = new XmlPeer(ElementTags.ITEXT, name);
peer.addAlias(ElementTags.TOP, HtmlTags.TOPMARGIN);
peer.addAlias(ElementTags.BOTTOM, HtmlTags.BOTTOMMARGIN);
peer.addAlias(ElementTags.RIGHT, HtmlTags.RIGHTMARGIN);
peer.addAlias(ElementTags.LEFT, HtmlTags.LEFTMARGIN);
bodyAttributes.putAll(peer.getAttributes(attrs));
handleStartingTags(peer.getTag(), bodyAttributes);
return;
}
if (myTags.containsKey(name)) {
XmlPeer peer = (XmlPeer) myTags.get(name);
if (ElementTags.TABLE.equals(peer.getTag()) || ElementTags.CELL.equals(peer.getTag())) {
Properties p = peer.getAttributes(attrs);
String value;
if (ElementTags.TABLE.equals(peer.getTag())
&& (value = p.getProperty(ElementTags.BORDERWIDTH)) != null) {
if (Float.parseFloat(value + "f") > 0) {
tableBorder = true;
}
}
if (tableBorder) {
p.put(ElementTags.LEFT, String.valueOf(true));
p.put(ElementTags.RIGHT, String.valueOf(true));
p.put(ElementTags.TOP, String.valueOf(true));
p.put(ElementTags.BOTTOM, String.valueOf(true));
}
handleStartingTags(peer.getTag(), p);
return;
}
handleStartingTags(peer.getTag(), peer.getAttributes(attrs));
return;
}
Properties attributes = new Properties();
if (attrs != null) {
for (int i = 0; i < attrs.getLength(); i++) {
String attribute = attrs.getQName(i).toLowerCase();
attributes.setProperty(attribute, attrs.getValue(i).toLowerCase());
}
}
handleStartingTags(name, attributes);
}
This method gets called when a start tag is encountered. |