Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Save work. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | wip |
Files: | files | file ages | folders |
SHA3-256: |
b26625af9b9b54e43105787e71e0d453 |
User & Date: | rolf 2019-10-06 23:40:51 |
Context
2019-10-07
| ||
09:33 | Renamed the info method subcommand frontexpected of the validation commands to the hopefully better name nextexpected. check-in: d889feb189 user: rolf tags: wip | |
2019-10-06
| ||
23:40 | Save work. check-in: b26625af9b user: rolf tags: wip | |
2019-10-05
| ||
00:16 | More minor doc tweaking. check-in: 43e20be75b user: rolf tags: wip | |
Changes
Changes to generic/schema.c.
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 .... 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 .... 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 |
#if defined(DEBUG) || defined(DDEBUG) static char *Schema_CP_Type2str[] = { "ANY", "NAME", "CHOICE", "INTERLEAVE", "PATTERN", "TEXT" "VIRTUAL", "KEYSPACE_START", "KEYSPACE_END" }; static char *Schema_Quant_Type2str[] = { "ONE", "OPT", "REP", "PLUS", "NM" }; #endif #ifndef TCL_THREADS static SchemaData *activeSchemaData = 0; # define GETASI activeSchemaData ................................................................................ if (!mayskip && mayMiss (candidate->quants[i])) mayskip = 1; } break; case SCHEMA_CTYPE_VIRTUAL: if (evalVirtual (interp, sdata, ac)) { /* Virtual contraints are always quant ONE, so * that the virtual constraints are called while * looking if an element can end. Therefor we use * here the already present mayskip mechanism to * try further, after calling the tcl script. */ mayskip = 1; break; } else return 0; case SCHEMA_CTYPE_INTERLEAVE: case SCHEMA_CTYPE_PATTERN: pushToStack (sdata, candidate, ac); rc = matchElementStart (interp, sdata, name, namespace); if (rc == 1) { updateStack (se, cp, ac); return 1; } popStack (sdata); break; case SCHEMA_CTYPE_KEYSPACE_END: candidate->keySpace->active--; if (!candidate->keySpace->active) { if (candidate->keySpace->unknownIDrefs) { if (!recover (interp, sdata, S("UNKNOWN_KEYREF"), ................................................................................ * cmd. */ pattern->content = MALLOC (sizeof (Tcl_Obj*) * (objc)); for (i = 1; i < objc; i++) { pattern->content[i-1] = (SchemaCP *) objv[i]; Tcl_IncrRefCount (objv[i]); } pattern->nc = objc; addToContent (sdata, pattern, SCHEMA_CQUANT_OPT, 0, 0); return TCL_OK; } static int domuniquePatternObjCmd ( ClientData clientData, Tcl_Interp *interp, |
| | > < < < < < | > | |
119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 .... 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 .... 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 |
#if defined(DEBUG) || defined(DDEBUG) static char *Schema_CP_Type2str[] = { "ANY", "NAME", "CHOICE", "INTERLEAVE", "PATTERN", "TEXT", "VIRTUAL", "KEYSPACE_START", "KEYSPACE_END" }; static char *Schema_Quant_Type2str[] = { "ONE", "OPT", "REP", "PLUS", "NM", "ERROR" }; #endif #ifndef TCL_THREADS static SchemaData *activeSchemaData = 0; # define GETASI activeSchemaData ................................................................................ if (!mayskip && mayMiss (candidate->quants[i])) mayskip = 1; } break; case SCHEMA_CTYPE_VIRTUAL: if (evalVirtual (interp, sdata, ac)) { hm = 1; break; } else return 0; case SCHEMA_CTYPE_INTERLEAVE: case SCHEMA_CTYPE_PATTERN: pushToStack (sdata, candidate, ac); rc = matchElementStart (interp, sdata, name, namespace); if (rc == 1) { updateStack (se, cp, ac); return 1; } popStack (sdata); if (rc == -1) mayskip = 1; break; case SCHEMA_CTYPE_KEYSPACE_END: candidate->keySpace->active--; if (!candidate->keySpace->active) { if (candidate->keySpace->unknownIDrefs) { if (!recover (interp, sdata, S("UNKNOWN_KEYREF"), ................................................................................ * cmd. */ pattern->content = MALLOC (sizeof (Tcl_Obj*) * (objc)); for (i = 1; i < objc; i++) { pattern->content[i-1] = (SchemaCP *) objv[i]; Tcl_IncrRefCount (objv[i]); } pattern->nc = objc; addToContent (sdata, pattern, SCHEMA_CQUANT_ONE, 0, 0); return TCL_OK; } static int domuniquePatternObjCmd ( ClientData clientData, Tcl_Interp *interp, |
Changes to tests/schema.test.
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
....
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
|
{<doc><items><b/><b/><c/></items><items><a/><c/></items><items><b/><a/><c/></items></doc>}
} {
lappend result [s validate $xml errMsg]
}
s delete
set result
} {1 1 0}
test schema-17.1 {info} {
tdom::schema s
s define {
foreach e {a b1 b11 b2 c} {
defelement $e {}
}
................................................................................
tdom::schema s
s defelement doc $def
s event start doc
lappend result {*}[s info frontexpected]
s delete
}
set result
} {a b c a b c a b c d}
proc schema-18 {args} {
lappend ::result {*}$args
}
test schema-18.1 {reportcmd} {
tdom::schema s
s define {
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
....
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
|
{<doc><items><b/><b/><c/></items><items><a/><c/></items><items><b/><a/><c/></items></doc>} } { lappend result [s validate $xml errMsg] } s delete set result } {1 1 0} test schema-16.17 {interleave with all content cp optional} { tdom::schema s s defelement doc { interleave { element a ? element b ? element c ? } element d } set result [list] foreach xml { <doc/> <doc><a/><d/></doc> <doc><b/><d/></doc> <doc><c/><d/></doc> <doc><a/><c/><d/></doc> <doc><b/><c/><d/></doc> <doc><c/><a/><d/></doc> <doc><c/><a/><b/><d/></doc> <doc><c/><a/><b/></doc> } { lappend result [s validate $xml] } s delete set result } {0 1 1 1 1 1 1 1 0} test schema-17.1 {info} { tdom::schema s s define { foreach e {a b1 b11 b2 c} { defelement $e {} } ................................................................................ tdom::schema s s defelement doc $def s event start doc lappend result {*}[s info frontexpected] s delete } set result } {a b c a b c d a b c d} proc schema-18 {args} { lappend ::result {*}$args } test schema-18.1 {reportcmd} { tdom::schema s s define { |