aboutsummaryrefslogtreecommitdiff
path: root/xml/details/genx
diff options
context:
space:
mode:
Diffstat (limited to 'xml/details/genx')
-rw-r--r--xml/details/genx/genx.c52
-rw-r--r--xml/details/genx/genx.h13
2 files changed, 65 insertions, 0 deletions
diff --git a/xml/details/genx/genx.c b/xml/details/genx/genx.c
index e9b4686..1f2303d 100644
--- a/xml/details/genx/genx.c
+++ b/xml/details/genx/genx.c
@@ -2143,6 +2143,58 @@ genxStatus genxXmlDeclaration(genxWriter w,
return GENX_SUCCESS;
}
+genxStatus genxDoctypeDeclaration(genxWriter w,
+ constUtf8 re,
+ constUtf8 pi,
+ constUtf8 si,
+ constUtf8 is)
+{
+ if (w->sequence != SEQUENCE_PRE_DOC)
+ return w->status = GENX_SEQUENCE_ERROR;
+
+ if ((w->status = genxCheckText(w, re)) != GENX_SUCCESS)
+ return w->status;
+
+ if (pi != NULL && (w->status = genxCheckText(w, pi)) != GENX_SUCCESS)
+ return w->status;
+
+ if (si != NULL && (w->status = genxCheckText(w, si)) != GENX_SUCCESS)
+ return w->status;
+
+ if (is != NULL && (w->status = genxCheckText(w, is)) != GENX_SUCCESS)
+ return w->status;
+
+ SendCheck (w, "<!DOCTYPE ");
+ SendCheck (w, re);
+
+ if (pi != NULL)
+ {
+ SendCheck (w, " PUBLIC\n \"");
+ SendCheck (w, pi);
+ SendCheck (w, "\"");
+ }
+
+ if (si != NULL)
+ {
+ if (pi == NULL)
+ SendCheck (w, " SYSTEM");
+
+ SendCheck (w, "\n \"");
+ SendCheck (w, si);
+ SendCheck (w, "\"");
+ }
+
+ if (is != NULL)
+ {
+ SendCheck (w, " [\n");
+ SendCheck (w, is);
+ SendCheck (w, "\n]");
+ }
+
+ SendCheck (w, ">\n");
+ return GENX_SUCCESS;
+}
+
genxStatus genxComment(genxWriter w, constUtf8 text)
{
size_t i;
diff --git a/xml/details/genx/genx.h b/xml/details/genx/genx.h
index bdaeee1..e55b467 100644
--- a/xml/details/genx/genx.h
+++ b/xml/details/genx/genx.h
@@ -205,6 +205,19 @@ genxStatus genxXmlDeclaration(genxWriter w,
constUtf8 encoding,
constUtf8 standalone);
/*
+ * Write DOCTYPE declaration. If public_id is not NULL, then this is
+ * a PUBLIC DOCTYPE declaration, otherwise, if system_id is not NULL,
+ * then this is a SYSTEM DOCTYPE. If both are NULL, then a DOCTYPE
+ * that only contains the root element and, if not NULL, internal
+ * subset is written.
+ */
+genxStatus genxDoctypeDeclaration(genxWriter w,
+ constUtf8 root_element,
+ constUtf8 public_id,
+ constUtf8 system_id,
+ constUtf8 internal_subset);
+
+/*
* Write a comment
*/
genxStatus genxComment(genxWriter w, constUtf8 text);