aboutsummaryrefslogtreecommitdiff
path: root/projects/xerces-c/xml.proto
diff options
context:
space:
mode:
Diffstat (limited to 'projects/xerces-c/xml.proto')
-rwxr-xr-xprojects/xerces-c/xml.proto339
1 files changed, 339 insertions, 0 deletions
diff --git a/projects/xerces-c/xml.proto b/projects/xerces-c/xml.proto
new file mode 100755
index 000000000..75e54b6f0
--- /dev/null
+++ b/projects/xerces-c/xml.proto
@@ -0,0 +1,339 @@
+/*
+ * Copyright (C) 2019 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto3";
+
+message Misc {
+ oneof misc_oneof {
+ string comment = 1;
+ ProcessingInstruction inst = 2;
+ }
+}
+
+message PEReference {
+ string name = 1;
+}
+
+message ElementDecl {
+ enum ContentSpec {
+ EMPTY = 0;
+ ANY = 1;
+ FUZZ = 2;
+ MIXED = 3;
+ CHILDREN = 4;
+ }
+ string name = 1;
+ ContentSpec spec = 2;
+ repeated string cdata = 3;
+}
+
+message AttrType {
+ enum Type {
+ CDATA = 0;
+ ID = 1;
+ IDREF = 2;
+ IDREFS = 3;
+ ENTITY = 4;
+ ENTITIES = 5;
+ NMTOKEN = 6;
+ NMTOKENS = 7;
+ }
+ Type ty = 1;
+}
+
+message EnumeratedType {
+ repeated string names = 1;
+}
+
+message AttrListDecl {
+ string name = 1;
+ AttrType atype = 2;
+ EnumeratedType etype = 3;
+ DefaultDecl def = 4;
+}
+
+message ExternalId {
+ enum Type {
+ SYSTEM = 0;
+ PUBLIC = 1;
+ FUZZ = 2;
+ }
+ Type type = 1;
+ string system = 2;
+ string pub = 3;
+}
+
+message AttValue {
+ enum Type {
+ ENTITY = 0;
+ CHAR = 1;
+ FUZZ = 2;
+ }
+ Type type = 1;
+ repeated string value = 2;
+}
+
+message DefaultDecl {
+ enum Type {
+ REQUIRED = 0;
+ IMPLIED = 1;
+ FIXED = 2;
+ FUZZ = 3;
+ }
+ Type type = 1;
+ AttValue att = 2;
+}
+
+message AttDef {
+ // TODO: Add enumerated type
+ enum Type {
+ CDATA = 0;
+ ID = 1;
+ IDREF = 2;
+ IDREFS = 3;
+ ENTITY = 4;
+ ENTITIES = 5;
+ NMTOKEN = 6;
+ NMTOKENS = 7;
+ FUZZ = 8;
+ }
+ string name = 1;
+ Type type = 2;
+ DefaultDecl def = 3;
+}
+
+message AttListDecl {
+ string name = 1;
+ repeated AttDef attdefs = 2;
+}
+
+message NotationDecl {
+ string name = 1;
+ oneof notation_oneof {
+ ExternalId ext = 2;
+ string pub = 3;
+ string fuzz = 4;
+ }
+}
+
+message EntityValue {
+ enum Type {
+ ENTITY = 0;
+ CHAR = 1;
+ PEREF = 2;
+ FUZZ = 3;
+ }
+ Type type = 1;
+ repeated string name = 2;
+}
+
+message NDataDecl {
+ string name = 1;
+}
+
+message EntityDef {
+ oneof entity_oneof {
+ ExternalId ext = 1;
+ EntityValue val = 2;
+ }
+ NDataDecl ndata = 3;
+}
+
+message PEDef {
+ oneof pedef_oneof {
+ EntityValue val = 1;
+ ExternalId id = 2;
+ }
+}
+
+message EntityDecl {
+ enum Type {
+ GEDECL = 0;
+ PEDECL = 1;
+ }
+ Type type = 1;
+ string name = 2;
+ EntityDef ent = 3;
+ PEDef pedef = 4;
+}
+
+message ConditionalSect {
+ enum Type {
+ INCLUDE = 0;
+ IGNORE = 1;
+ FUZZ = 2;
+ }
+ Type type = 1;
+ ExtSubsetDecl ext = 2;
+ // TODO: Make this recursive
+ // See https://www.w3.org/TR/xml/#NT-conditionalSect
+ repeated string ignores = 3;
+}
+
+message OneExtSubsetDecl {
+ oneof extsubset_oneof {
+ MarkupDecl m = 1;
+ ConditionalSect c = 2;
+ }
+}
+
+message ExtSubsetDecl {
+ repeated OneExtSubsetDecl decls = 1;
+}
+
+message MarkupDecl {
+ oneof markup_oneof {
+ ElementDecl e = 1;
+ AttListDecl a = 2;
+ NotationDecl n = 3;
+ Misc m = 4;
+ EntityDecl entity = 5;
+ ExtSubsetDecl ext = 6;
+ }
+}
+
+message DocTypeDecl {
+ string name = 1;
+ ExternalId ext = 2;
+ repeated MarkupDecl mdecl = 3;
+}
+
+message Prolog {
+ XmlDeclaration decl = 1;
+ DocTypeDecl doctype = 2;
+ repeated Misc misc = 3;
+}
+
+message KeyValue {
+ enum XmlNamespace {
+ ATTRIBUTES = 0;
+ BASE = 1;
+ CATALOG = 2;
+ ID = 3;
+ LANG = 4;
+ LINK = 5;
+ SPACE = 6;
+ SPECIAL = 7;
+ TEST = 8;
+ FUZZ = 9;
+ }
+ XmlNamespace type = 1;
+ string key = 2;
+ string value = 3;
+}
+
+message ProcessingInstruction {
+ string name = 1;
+ repeated KeyValue kv = 2;
+}
+
+message CData {
+ string data = 1;
+}
+
+message Content {
+ // TODO: Add other content types
+ oneof content_oneof {
+ string str = 1;
+ Element e = 2;
+ CData c = 3;
+ }
+}
+
+message Element {
+ enum Type {
+ PREDEFINED = 0;
+ FUZZ = 1;
+ }
+ enum Id {
+ XIINCLUDE = 0;
+ XIFALLBACK = 1;
+ // Attributes of xinclude
+ XIHREF = 2;
+ XIPARSE = 3;
+ XIXPOINTER = 4;
+ XIENCODING = 5;
+ XIACCEPT = 6;
+ XIACCEPTLANG = 7;
+ }
+ Type type = 1;
+ Id id = 2;
+ string name = 3;
+ repeated KeyValue kv = 4;
+ Content content = 5;
+ string childprop = 6;
+}
+
+message VersionNum {
+ enum Type {
+ STANDARD = 0;
+ FUZZ = 1;
+ }
+ Type type = 1;
+ uint64 major = 2;
+ uint64 minor = 3;
+}
+
+message Encodings {
+ enum Enc {
+ BIG5 = 0;
+ EUCJP = 1;
+ EUCKR = 2;
+ GB18030 = 3;
+ ISO2022JP = 4;
+ ISO2022KR = 5;
+ ISO88591 = 6;
+ ISO88592 = 7;
+ ISO88593 = 8;
+ ISO88594 = 9;
+ ISO88595 = 10;
+ ISO88596 = 11;
+ ISO88597 = 12;
+ ISO88598 = 13;
+ ISO88599 = 14;
+ SHIFTJIS = 15;
+ TIS620 = 16;
+ USASCII = 17;
+ UTF8 = 18;
+ UTF16 = 19;
+ UTF16BE = 20;
+ UTF16LE = 21;
+ WINDOWS31J = 22;
+ WINDOWS1255 = 23;
+ WINDOWS1256 = 24;
+ FUZZ = 25;
+ }
+ Enc name = 1;
+ string fuzz = 2;
+}
+
+message XmlDeclaration {
+ VersionNum ver = 1;
+ Encodings enc = 2;
+ enum Standalone {
+ YES = 0;
+ NO = 1;
+ }
+ Standalone standalone = 3;
+ string fuzz = 4;
+}
+
+message XmlDocument {
+ Prolog p = 1;
+ repeated Element e = 2;
+}
+
+package xmlProtoFuzzer; \ No newline at end of file