in tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-apple-module/src/main/java/org/apache/tika/parser/iwork/NumbersContentHandler.java [65:170]
public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
if ("ls:workspace".equals(qName)) {
inSheet = true;
numberOfSheets++;
xhtml.startElement("div");
String sheetName = attributes.getValue("ls:workspace-name");
metadata.add("sheetNames", sheetName);
}
if ("sf:text".equals(qName)) {
inText = true;
xhtml.startElement("p");
}
if ("sf:p".equals(qName)) {
parseText = true;
}
if ("sf:metadata".equals(qName)) {
inMetadata = true;
return;
}
if (inMetadata && metadataKey == null) {
metadataKey = resolveMetadataKey(localName);
metadataPropertyQName = qName;
}
if (inMetadata && metadataKey != null && "sf:string".equals(qName)) {
metadata.add(metadataKey, attributes.getValue("sfa:string"));
}
if (!inSheet) {
return;
}
if ("sf:tabular-model".equals(qName)) {
String tableName = attributes.getValue("sf:name");
xhtml.startElement("div");
xhtml.characters(tableName);
xhtml.endElement("div");
inTable = true;
xhtml.startElement("table");
xhtml.startElement("tr");
currentColumn = 0;
}
if ("sf:menu-choices".equals(qName)) {
menuItems = new HashMap<>();
}
if (inTable && "sf:grid".equals(qName)) {
numberOfColumns = Integer.parseInt(attributes.getValue("sf:numcols"));
}
if (menuItems != null && "sf:t".equals(qName)) {
currentMenuItemId = attributes.getValue("sfa:ID");
}
if (currentMenuItemId != null && "sf:ct".equals(qName)) {
menuItems.put(currentMenuItemId, attributes.getValue("sfa:s"));
}
if (inTable && "sf:ct".equals(qName)) {
if (currentColumn >= numberOfColumns) {
currentColumn = 0;
xhtml.endElement("tr");
xhtml.startElement("tr");
}
xhtml.element("td", attributes.getValue("sfa:s"));
currentColumn++;
}
if (inTable && ("sf:n".equals(qName) || "sf:rn".equals(qName))) {
if (currentColumn >= numberOfColumns) {
currentColumn = 0;
xhtml.endElement("tr");
xhtml.startElement("tr");
}
xhtml.element("td", attributes.getValue("sf:v"));
currentColumn++;
}
if (inTable && "sf:proxied-cell-ref".equals(qName)) {
if (currentColumn >= numberOfColumns) {
currentColumn = 0;
xhtml.endElement("tr");
xhtml.startElement("tr");
}
xhtml.element("td", menuItems.get(attributes.getValue("sfa:IDREF")));
currentColumn++;
}
if ("sf:chart-name".equals(qName)) {
// Extract chart name:
xhtml.startElement("div", "class", "chart");
xhtml.startElement("h1");
xhtml.characters(attributes.getValue("sfa:string"));
xhtml.endElement("h1");
xhtml.endElement("div");
}
}