in doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java [66:148]
protected void handleStartTag(XmlPullParser parser, Sink sink)
throws XmlPullParserException, MacroExecutionException {
isEmptyElement = parser.isEmptyElementTag();
SinkEventAttributeSet attribs = getAttributesFromParser(parser);
if (parser.getName().equals(HTML.toString())) {
// Do nothing
return;
} else if (parser.getName().equals(HEAD.toString())) {
sink.head(attribs);
} else if (parser.getName().equals(TITLE.toString())) {
sink.title(attribs);
} else if (parser.getName().equals(META.toString())) {
String name = parser.getAttributeValue(null, Attribute.NAME.toString());
String content = parser.getAttributeValue(null, Attribute.CONTENT.toString());
if ("author".equals(name)) {
sink.author(null);
sink.text(content);
sink.author_();
} else if ("date".equals(name)) {
sink.date(null);
sink.text(content);
sink.date_();
} else {
sink.unknown("meta", new Object[] {TAG_TYPE_SIMPLE}, attribs);
}
}
/*
* The ADDRESS element may be used by authors to supply contact information
* for a model or a major part of a model such as a form. This element
* often appears at the beginning or end of a model.
*/
else if (parser.getName().equals(ADDRESS.toString())) {
sink.address(attribs);
} else if (parser.getName().equals(BODY.toString())) {
sink.body(attribs);
} else if (parser.getName().equals(DIV.toString())) {
String divClass = parser.getAttributeValue(null, Attribute.CLASS.toString());
if ("verbatim source".equals(divClass)) {
this.source = true;
}
baseStartTag(parser, sink); // pick up other divs
}
/*
* The PRE element tells visual user agents that the enclosed text is
* "preformatted". When handling preformatted text, visual user agents:
* - May leave white space intact.
* - May render text with a fixed-pitch font.
* - May disable automatic word wrap.
* - Must not disable bidirectional processing.
* Non-visual user agents are not required to respect extra white space
* in the content of a PRE element.
*/
else if (parser.getName().equals(PRE.toString())) {
if (source) {
attribs.addAttributes(SinkEventAttributeSet.SOURCE);
}
verbatim();
sink.verbatim(attribs);
} else if (!baseStartTag(parser, sink)) {
if (isEmptyElement) {
handleUnknown(parser, sink, TAG_TYPE_SIMPLE);
} else {
handleUnknown(parser, sink, TAG_TYPE_START);
}
LOGGER.warn(
"Unrecognized xhtml5 tag <{}> at [{}:{}]",
parser.getName(),
parser.getLineNumber(),
parser.getColumnNumber());
}
}