void TypeRegistry::writeTypeDTD(const TypeDefinition& def, stringstream& ss) const { ss << "<!ELEMENT " << def.getName() << " " << def.getDTDChildrenString() << " >\n"; if (!def.getDefaultArgs().getArgMap().empty()) { ss << "<!ATTLIST " << def.getName(); for (ArgMap::const_iterator argIt = def.getDefaultArgs().getArgMap().begin(); argIt != def.getDefaultArgs().getArgMap().end(); argIt++) { string argName = argIt->first; string argType = (argName == "id") ? "ID" : "CDATA"; string argRequired = def.getDefaultArgs().getArg(argName)->isRequired() ? "#REQUIRED" : "#IMPLIED"; ss << "\n " << argName << " " << argType << " " << argRequired; } ss << " >\n"; } }