#define PFOUT stdout int AttributeDecl(void *UserData, const XMLCH *eName, const XMLCH *aName, int type, const XMLCH *typeStr, int valueDef, const XMLCH *def) { fprintf(PFOUT, "<!ATTLIST %s %s ", eName, aName); switch(type) { case XMLATTDECL_TYPE_CDATA: fputs("CDATA", PFOUT); break; case XMLATTDECL_TYPE_ID: fputs("ID", PFOUT); break; case XMLATTDECL_TYPE_IDREF: fputs("IDREF", PFOUT); break; case XMLATTDECL_TYPE_IDREFS: fputs("IDREFS", PFOUT); break; case XMLATTDECL_TYPE_ENTITY: fputs("ENTITY", PFOUT); break; case XMLATTDECL_TYPE_ENTITIES: fputs("ENTITIES", PFOUT); break; case XMLATTDECL_TYPE_NMTOKEN: fputs("NMTOKEN", PFOUT); break; case XMLATTDECL_TYPE_NMTOKENS: fputs("NMTOKENS", PFOUT); break; case XMLATTDECL_TYPE_NOTATION: fputs("NOTATION ", PFOUT); /* fall through */ case XMLATTDECL_TYPE_ENUMERATED: fputs(typeStr, PFOUT); break; } switch(valueDef) { case XMLATTDECL_DEF_FIXED: fputs(" #FIXED", PFOUT); break; case XMLATTDECL_DEF_REQUIRED: fputs(" #REQUIRED", PFOUT); break; case XMLATTDECL_DEF_IMPLIED: fputs(" #IMPLIED", PFOUT); break; } if (def) fprintf(PFOUT, " \"%s\">\n", def); else fputs(">\n", PFOUT); return 0; } int ElementDecl(void *UserData, const XMLCH *name, void *contentModel) { fprintf(PFOUT, "<!ELEMENT %s %s>\n", name, (XMLCH*)contentModel); return 0; } int EntityDecl(void *UserData, LPXMLENTITY entity) { fputs("<!ENTITY ", PFOUT); if (entity->type == XML_ENTITY_INT_PARAM || entity->type == XML_ENTITY_EXT_PARAM) fprintf(PFOUT, "%% %s", entity->name+1); else fputs(entity->name, PFOUT); if (entity->value) fprintf(PFOUT, " \"%s\">\n", entity->value); else { if (entity->publicID) fprintf(PFOUT, " PUBLIC \"%s\" \"%s\"", entity->publicID, entity->systemID); else fprintf(PFOUT, " SYSTEM \"%s\"", entity->systemID); if (entity->notation) fprintf(PFOUT, " NDATA %s>\n", entity->notation); else fputs(">\n", PFOUT); } return 0; } int NotationDecl(void *UserData, const XMLCH *name, const XMLCH *publicID, const XMLCH *systemID) { fprintf(PFOUT, "<!NOTATION %s ", name); if (publicID) fprintf(PFOUT, "PUBLIC \"%s\"", publicID); else fputs("SYSTEM", PFOUT); if (systemID) fprintf(PFOUT, " \"%s\">\n", systemID); else fputs(">\n", PFOUT); return 0; }