12#ifdef LIBXML_HTML_ENABLED
46htmlGetMetaEncoding(htmlDocPtr doc) {
59 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
77 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
95 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
97 xmlAttrPtr
attr =
cur->properties;
105 (
attr->children->type == XML_TEXT_NODE) &&
127 if (encoding ==
NULL)
129 if (encoding ==
NULL)
131 if (encoding !=
NULL) {
135 if (encoding ==
NULL)
137 if (encoding ==
NULL)
139 if (encoding !=
NULL)
142 if (encoding !=
NULL) {
143 while ((*encoding ==
' ') || (*encoding ==
'\t')) encoding++;
160htmlSetMetaEncoding(htmlDocPtr doc,
const xmlChar *encoding) {
163 char newcontent[100];
174 if (encoding !=
NULL) {
175 snprintf(newcontent,
sizeof(newcontent),
"text/html; charset=%s",
177 newcontent[
sizeof(newcontent) - 1] = 0;
186 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
204 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
228 if ((
cur->type == XML_ELEMENT_NODE) && (
cur->name !=
NULL)) {
230 xmlAttrPtr
attr =
cur->properties;
238 (
attr->children->type == XML_TEXT_NODE) &&
273 xmlAddChild(
head, meta);
275 xmlAddPrevSibling(
head->children, meta);
281 if (encoding ==
NULL) {
303static const char*
const htmlBooleanAttrs[] = {
304 "checked",
"compact",
"declare",
"defer",
"disabled",
"ismap",
305 "multiple",
"nohref",
"noresize",
"noshade",
"nowrap",
"readonly",
323 while (htmlBooleanAttrs[
i] !=
NULL) {
331#ifdef LIBXML_OUTPUT_ENABLED
344htmlSaveErrMemory(
const char *
extra)
364 msg =
"string is not in UTF-8\n";
367 msg =
"invalid character value\n";
370 msg =
"unknown encoding %s\n";
373 msg =
"HTML has no DOCTYPE\n";
376 msg =
"unexpected error number\n";
399htmlBufNodeDumpFormat(xmlBufPtr
buf, xmlDocPtr doc, xmlNodePtr
cur,
403 xmlOutputBufferPtr outbuf;
411 outbuf = (xmlOutputBufferPtr)
xmlMalloc(
sizeof(xmlOutputBuffer));
412 if (outbuf ==
NULL) {
413 htmlSaveErrMemory(
"allocating HTML output buffer");
416 memset(outbuf, 0,
sizeof(xmlOutputBuffer));
417 outbuf->buffer =
buf;
418 outbuf->encoder =
NULL;
419 outbuf->writecallback =
NULL;
420 outbuf->closecallback =
NULL;
421 outbuf->context =
NULL;
443htmlNodeDump(xmlBufferPtr
buf, xmlDocPtr doc, xmlNodePtr
cur) {
479htmlNodeDumpFileFormat(
FILE *
out, xmlDocPtr doc,
480 xmlNodePtr
cur,
const char *encoding,
int format) {
481 xmlOutputBufferPtr
buf;
487 if (encoding !=
NULL) {
514 ret = xmlOutputBufferClose(
buf);
528htmlNodeDumpFile(
FILE *
out, xmlDocPtr doc, xmlNodePtr
cur) {
529 htmlNodeDumpFileFormat(
out, doc,
cur,
NULL, 1);
544 xmlOutputBufferPtr
buf;
546 const char *encoding;
558 encoding = (
const char *) htmlGetMetaEncoding(
cur);
560 if (encoding !=
NULL) {
589 xmlOutputBufferFlush(
buf);
597 (
void)xmlOutputBufferClose(
buf);
632htmlDtdDumpOutput(xmlOutputBufferPtr
buf, xmlDocPtr doc,
634 xmlDtdPtr
cur = doc->intSubset;
640 xmlOutputBufferWriteString(
buf,
"<!DOCTYPE ");
641 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
643 xmlOutputBufferWriteString(
buf,
" PUBLIC ");
646 xmlOutputBufferWriteString(
buf,
" ");
649 }
else if (
cur->SystemID !=
NULL &&
651 xmlOutputBufferWriteString(
buf,
" SYSTEM ");
654 xmlOutputBufferWriteString(
buf,
">\n");
666htmlAttrDumpOutput(xmlOutputBufferPtr
buf, xmlDocPtr doc, xmlAttrPtr
cur) {
679 xmlOutputBufferWriteString(
buf,
" ");
681 xmlOutputBufferWriteString(
buf, (
const char *)
cur->ns->prefix);
682 xmlOutputBufferWriteString(
buf,
":");
684 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
685 if ((
cur->children !=
NULL) && (!htmlIsBooleanAttr(
cur->name))) {
686 value = xmlNodeListGetString(doc,
cur->children, 0);
688 xmlOutputBufferWriteString(
buf,
"=");
710 BAD_CAST "\"#$%&+,/:;<=>?@[\\]^`{|}");
711 if (escaped !=
NULL) {
722 xmlOutputBufferWriteString(
buf,
"=\"\"");
738htmlNodeDumpFormatOutput(xmlOutputBufferPtr
buf, xmlDocPtr doc,
743 const htmlElemDesc *
info;
755 case XML_HTML_DOCUMENT_NODE:
756 case XML_DOCUMENT_NODE:
757 if (((xmlDocPtr)
cur)->intSubset !=
NULL) {
758 htmlDtdDumpOutput(
buf, (xmlDocPtr)
cur,
NULL);
768 xmlOutputBufferWriteString(
buf,
"\n");
772 case XML_ELEMENT_NODE:
779 htmlNodeDumpFormatOutput(
buf, doc,
cur, encoding,
format);
787 info = htmlTagLookup(
cur->name);
791 xmlOutputBufferWriteString(
buf,
"<");
793 xmlOutputBufferWriteString(
buf, (
const char *)
cur->ns->prefix);
794 xmlOutputBufferWriteString(
buf,
":");
796 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
798 xmlNsListDumpOutput(
buf,
cur->nsDef);
801 htmlAttrDumpOutput(
buf, doc,
attr);
806 xmlOutputBufferWriteString(
buf,
">");
807 }
else if (
cur->children ==
NULL) {
811 xmlOutputBufferWriteString(
buf,
">");
813 xmlOutputBufferWriteString(
buf,
"></");
815 xmlOutputBufferWriteString(
buf,
816 (
const char *)
cur->ns->prefix);
817 xmlOutputBufferWriteString(
buf,
":");
819 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
820 xmlOutputBufferWriteString(
buf,
">");
823 xmlOutputBufferWriteString(
buf,
">");
825 (
cur->children->type != HTML_TEXT_NODE) &&
826 (
cur->children->type != HTML_ENTITY_REF_NODE) &&
827 (
cur->children !=
cur->last) &&
829 (
cur->name[0] !=
'p'))
830 xmlOutputBufferWriteString(
buf,
"\n");
838 if ((
cur->next->type != HTML_TEXT_NODE) &&
839 (
cur->next->type != HTML_ENTITY_REF_NODE) &&
843 xmlOutputBufferWriteString(
buf,
"\n");
848 case XML_ATTRIBUTE_NODE:
849 htmlAttrDumpOutput(
buf, doc, (xmlAttrPtr)
cur);
864 xmlOutputBufferWriteString(
buf, (
const char *)
buffer);
868 xmlOutputBufferWriteString(
buf, (
const char *)
cur->content);
872 case HTML_COMMENT_NODE:
874 xmlOutputBufferWriteString(
buf,
"<!--");
875 xmlOutputBufferWriteString(
buf, (
const char *)
cur->content);
876 xmlOutputBufferWriteString(
buf,
"-->");
882 xmlOutputBufferWriteString(
buf,
"<?");
883 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
885 xmlOutputBufferWriteString(
buf,
" ");
886 xmlOutputBufferWriteString(
buf,
887 (
const char *)
cur->content);
889 xmlOutputBufferWriteString(
buf,
">");
893 case HTML_ENTITY_REF_NODE:
894 xmlOutputBufferWriteString(
buf,
"&");
895 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
896 xmlOutputBufferWriteString(
buf,
";");
899 case HTML_PRESERVE_NODE:
901 xmlOutputBufferWriteString(
buf, (
const char *)
cur->content);
921 if ((
cur->type == XML_HTML_DOCUMENT_NODE) ||
922 (
cur->type == XML_DOCUMENT_NODE)) {
923 xmlOutputBufferWriteString(
buf,
"\n");
926 info = htmlTagLookup(
cur->name);
931 (
cur->last->type != HTML_TEXT_NODE) &&
932 (
cur->last->type != HTML_ENTITY_REF_NODE) &&
933 (
cur->children !=
cur->last) &&
935 (
cur->name[0] !=
'p'))
936 xmlOutputBufferWriteString(
buf,
"\n");
938 xmlOutputBufferWriteString(
buf,
"</");
940 xmlOutputBufferWriteString(
buf, (
const char *)
cur->ns->prefix);
941 xmlOutputBufferWriteString(
buf,
":");
943 xmlOutputBufferWriteString(
buf, (
const char *)
cur->name);
944 xmlOutputBufferWriteString(
buf,
">");
948 if ((
cur->next->type != HTML_TEXT_NODE) &&
949 (
cur->next->type != HTML_ENTITY_REF_NODE) &&
953 xmlOutputBufferWriteString(
buf,
"\n");
971htmlNodeDumpOutput(xmlOutputBufferPtr
buf, xmlDocPtr doc,
973 htmlNodeDumpFormatOutput(
buf, doc,
cur,
NULL, 1);
986htmlDocContentDumpFormatOutput(xmlOutputBufferPtr
buf, xmlDocPtr
cur,
992 cur->type = XML_HTML_DOCUMENT_NODE;
996 cur->type = (xmlElementType)
type;
1008htmlDocContentDumpOutput(xmlOutputBufferPtr
buf, xmlDocPtr
cur,
1010 htmlNodeDumpFormatOutput(
buf,
cur, (xmlNodePtr)
cur,
NULL, 1);
1029htmlDocDump(
FILE *
f, xmlDocPtr
cur) {
1030 xmlOutputBufferPtr
buf;
1032 const char *encoding;
1041 encoding = (
const char *) htmlGetMetaEncoding(
cur);
1043 if (encoding !=
NULL) {
1066 ret = xmlOutputBufferClose(
buf);
1080htmlSaveFile(
const char *
filename, xmlDocPtr
cur) {
1081 xmlOutputBufferPtr
buf;
1083 const char *encoding;
1091 encoding = (
const char *) htmlGetMetaEncoding(
cur);
1093 if (encoding !=
NULL) {
1120 ret = xmlOutputBufferClose(
buf);
1136htmlSaveFileFormat(
const char *
filename, xmlDocPtr
cur,
1137 const char *encoding,
int format) {
1138 xmlOutputBufferPtr
buf;
1147 if (encoding !=
NULL) {
1156 htmlSetMetaEncoding(
cur, (
const xmlChar *) encoding);
1158 htmlSetMetaEncoding(
cur, (
const xmlChar *)
"UTF-8");
1175 htmlDocContentDumpFormatOutput(
buf,
cur, encoding,
format);
1177 ret = xmlOutputBufferClose(
buf);
1193htmlSaveFileEnc(
const char *
filename, xmlDocPtr
cur,
const char *encoding) {
1194 return(htmlSaveFileFormat(
filename,
cur, encoding, 1));
struct outqueuenode * head
xmlBufPtr xmlBufFromBuffer(xmlBufferPtr buffer)
xmlChar * xmlBufContent(const xmlBuf *buf)
int xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string)
xmlBufferPtr xmlBufBackToBuffer(xmlBufPtr buf)
size_t xmlBufUse(const xmlBufPtr buf)
UINT(* handler)(MSIPACKAGE *)
xmlCharEncodingHandlerPtr xmlFindCharEncodingHandler(const char *name)
xmlCharEncoding xmlParseCharEncoding(const char *name)
GLuint GLuint GLsizei GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
XMLPUBFUN xmlChar * xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input)
static const struct access_res create[16]
XMLPUBVAR const xmlChar xmlStringTextNoenc[]
XMLPUBVAR const xmlChar xmlStringText[]
XML_GLOBALS_PARSER XMLPUBFUN void xmlInitParser(void)
XML_HIDDEN void XML_HIDDEN void __xmlSimpleError(int domain, int code, struct _xmlNode *node, const char *msg, const char *extra) LIBXML_ATTR_FORMAT(4
XMLPUBFUN xmlChar * xmlURIEscapeStr(const xmlChar *str, const xmlChar *list)
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
@ XML_SAVE_UNKNOWN_ENCODING
XMLPUBFUN xmlChar * xmlStrndup(const xmlChar *cur, int len)
XMLPUBFUN const xmlChar * xmlStrcasestr(const xmlChar *str, const xmlChar *val)
XMLPUBFUN int xmlStrcasecmp(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN int xmlStrcmp(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN const xmlChar * xmlStrstr(const xmlChar *str, const xmlChar *val)
XMLPUBFUN int xmlStrEqual(const xmlChar *str1, const xmlChar *str2)