private DitaTopicDocumentBuilder getCurrentTopic() { if (currentTopic == null) { try { currentTopicFile = computeFile(latestHeadingId); currentTopicOut = new OutputStreamWriter( new BufferedOutputStream(new FileOutputStream(currentTopicFile)), "utf-8"); //$NON-NLS-1$ } catch (IOException e1) { throw new IllegalStateException(e1); } // create a DITA map entry String relativeTopic = currentTopicFile.getName(); if (topicFolder != null) { relativeTopic = topicFolder + '/' + relativeTopic; } writer.writeEmptyElement("chapter"); //$NON-NLS-1$ writer.writeAttribute("href", relativeTopic); //$NON-NLS-1$ titleText = ""; //$NON-NLS-1$ mapEntryOpen = true; currentTopic = new DitaTopicDocumentBuilder(new DefaultXmlStreamWriter(currentTopicOut), formattingDependencies); if (topicDoctype != null) { currentTopic.setDoctype(topicDoctype); } currentTopic.setTopicBreakLevel(topicBreakLevel); currentTopic.setOutline(outline); currentTopic.setFilename(currentTopicFile.getName()); currentTopic.beginDocument(); } return currentTopic; }