[Test] Update tests

This commit is contained in:
Sergey Konovalov
2022-01-21 17:49:22 +03:00
parent 53f53200df
commit 7066a55813
4 changed files with 114 additions and 106 deletions

View File

@ -35,11 +35,13 @@ using System.Linq;
using System.Text;
using System.IO;
using System.Text.RegularExpressions;
using System.Globalization;
namespace codegen
{
class CodeGenXmlJSCPP
{
string toXmlNaspace = "w:";
Dictionary<string, GenClassPivot> m_mapProcessedClasses = new Dictionary<string, GenClassPivot>();
string[] gc_numeric = { "Null", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
public static Dictionary<string, string> m_mapNamespaceToPrefix = new Dictionary<string, string>()
@ -134,6 +136,12 @@ namespace codegen
}
#endregion
#region JS
string getClassMemberName(string sName)
{
//for word
TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
return textInfo.ToTitleCase(sName);
}
string GetEnumClassName(string sEnumName)
{
return sEnumName;
@ -148,7 +156,7 @@ namespace codegen
}
else
{
//first = first.ToUpper();
first = first.ToUpper();
}
string name = first + sElemName.Substring(1);
//https://stackoverflow.com/questions/1661197/what-characters-are-valid-for-javascript-variable-names/9337047#9337047
@ -164,19 +172,19 @@ namespace codegen
}
public void ProcessEnumFromString(StringBuilder sb, GenClassPivot oGenClass)
{
sb.AppendFormat("function FromXml_{0}(val) \n{{\n", GetEnumClassName(oGenClass.sName));
sb.AppendFormat("function fromXml_{0}(val) \n{{\n", GetEnumClassName(oGenClass.sName));
sb.AppendFormat("switch (val) {{\n");
for (int j = 0; j < oGenClass.aMembers.Count; ++j)
{
sb.AppendFormat("case \"{0}\": return {1}.{2};\n", oGenClass.aMembers[j].sName, GetEnumClassName(oGenClass.sName), GetEnumElemName(oGenClass.aMembers[j].sName));
}
sb.AppendFormat("}}\n");
sb.AppendFormat("return null;\n");
sb.AppendFormat("return undefined;\n");
sb.AppendFormat("}}\n");
}
public void ProcessEnumToString(StringBuilder sb, GenClassPivot oGenClass)
{
sb.AppendFormat("function ToXml_{0}(val) \n{{\n", GetEnumClassName(oGenClass.sName));
sb.AppendFormat("function toXml_{0}(val) \n{{\n", GetEnumClassName(oGenClass.sName));
sb.AppendFormat("switch (val) {{\n");
for (int j = 0; j < oGenClass.aMembers.Count; ++j)
{
@ -242,11 +250,11 @@ namespace codegen
GenMemberPivot oGenMember = aAttributes[i];
if (!string.IsNullOrEmpty(oGenMember.sDefAttribute))
{
sb.AppendFormat("this.{0} = null;//{1}\n", oGenMember.sName, oGenMember.sDefAttribute);
sb.AppendFormat("this.{0} = null;//{1}\n", getClassMemberName(oGenMember.sName), oGenMember.sDefAttribute);
}
else
{
sb.AppendFormat("this.{0} = null;\n", oGenMember.sName);
sb.AppendFormat("this.{0} = null;\n", getClassMemberName(oGenMember.sName));
}
}
}
@ -260,17 +268,17 @@ namespace codegen
GenMemberPivot oGenMemberTmp = oGenMember.getArrayTypeIfSimple();
if (null != oGenMemberTmp)
{
sb.AppendFormat("this.{0} = [];\n", oGenMember.sName);
sb.AppendFormat("this.{0} = [];\n", getClassMemberName(oGenMember.sName));
}
else
{
sb.AppendFormat("//todo {0}\n", oGenMember.sName);
sb.AppendFormat("this.{0} = null;\n", oGenMember.sName);
sb.AppendFormat("//todo {0}\n", getClassMemberName(oGenMember.sName));
sb.AppendFormat("this.{0} = null;\n", getClassMemberName(oGenMember.sName));
}
}
else
{
sb.AppendFormat("this.{0} = null;\n", oGenMember.sName);
sb.AppendFormat("this.{0} = null;\n", getClassMemberName(oGenMember.sName));
}
}
}
@ -284,7 +292,7 @@ namespace codegen
sb.AppendFormat("writer.WriteXmlNodeStart(name);\n");
for (int i = 0; i < aAttributes.Count; ++i)
{
ProcessAttributeJSToXml(sb, oGenClass, aAttributes[i], i, aAttributes[i].sName);
ProcessAttributeJSToXml(sb, oGenClass, aAttributes[i], i);
}
if (aMembers.Count > 0)
{
@ -307,22 +315,22 @@ namespace codegen
string sElemXmlNameTmp = getNameWithPrefix(oGenClass, oGenMemberTmp, sRootNamespace, out sTodo);
if (false == oGenMemberTmp.bIsArrayTypesHidden)
{
sb.AppendFormat("//todo {0} minOccurs=0 or 1\n", oGenMember.sName);
sb.AppendFormat("writer.WriteXmlArray(this.{0}, \"{1}\", {2});\n", oGenMember.sName, sElemXmlName, sElemXmlNameTmp);
sb.AppendFormat("//todo {0} minOccurs=0 or 1\n", getClassMemberName(oGenMember.sName));
sb.AppendFormat("writer.WriteXmlArray(this.{0}, \"{1}\", {2});\n", getClassMemberName(oGenMember.sName), sElemXmlName, sElemXmlNameTmp);
}
else
{
sb.AppendFormat("writer.WriteXmlArray(this.{0}, \"{1}\");\n", oGenMember.sName, sElemXmlName);
sb.AppendFormat("writer.WriteXmlArray(this.{0}, \"{1}\");\n", getClassMemberName(oGenMember.sName), sElemXmlName);
}
}
else
{
sb.AppendFormat("//todo {0}\n", oGenMember.sName);
sb.AppendFormat("//todo {0}\n", getClassMemberName(oGenMember.sName));
}
}
else
{
sb.AppendFormat("writer.WriteXmlNullable(this.{0}, \"{1}\");\n", oGenMember.sName, sElemXmlName);
sb.AppendFormat("writer.WriteXmlNullable(this.{0}, \"{1}\");\n", getClassMemberName(oGenMember.sName), sElemXmlName);
}
}
sb.AppendFormat("writer.WriteXmlNodeEnd(name);\n");
@ -333,8 +341,9 @@ namespace codegen
}
sb.AppendFormat("}};\n");
}
void ProcessAttributeJSToXml(StringBuilder sb, GenClassPivot oGenClass, GenMemberPivot oGenMember, int index, string sElemName)
void ProcessAttributeJSToXml(StringBuilder sb, GenClassPivot oGenClass, GenMemberPivot oGenMember, int index)
{
string sElemName = getClassMemberName(oGenMember.sName);
string sTodo = sElemName;
string sRootNamespace = "";
string sElemXmlName = getNameWithPrefix(oGenClass, oGenMember, sRootNamespace, out sTodo);
@ -357,7 +366,7 @@ namespace codegen
if (oGenClassMember.bIsEnum)
{
sTodo = "";
sb.AppendFormat("writer.WriteXmlNullableAttributeString(\"{0}\", ToXml_{1}(this.{2}));\n", sElemXmlName, GetEnumClassName(oGenClassMember.sName), sElemName);
sb.AppendFormat("writer.WriteXmlNullableAttributeString(\"{0}\", toXml_{1}(this.{2}));\n", sElemXmlName, GetEnumClassName(oGenClassMember.sName), sElemName);
}
}
}
@ -409,7 +418,7 @@ namespace codegen
sb.AppendFormat("switch (reader.GetNameNoNS()) {{\n");
for (int i = 0; i < aAttributes.Count; ++i)
{
ProcessAttributeJSFromXml(sb, oGenClass, aAttributes[i], i, aAttributes[i].sName);
ProcessAttributeJSFromXml(sb, oGenClass, aAttributes[i], i);
}
sb.AppendFormat("}}\n");
sb.AppendFormat("}}\n");
@ -431,7 +440,7 @@ namespace codegen
sb.AppendFormat("case \"{0}\" : {{\n", aMembers[i].sName);
if (null == aMembers[i].sType)
{
sb.AppendFormat("//todo {0}\n", aMembers[i].sName);
sb.AppendFormat("//todo {0}\n", getClassMemberName(aMembers[i].sName));
}
else if (aMembers[i].isArray())
{
@ -443,17 +452,17 @@ namespace codegen
{
sb.AppendFormat("var elem = new {0}();\n", oGenMemberTmp.sType);
sb.AppendFormat("elem.fromXml(reader);\n");
sb.AppendFormat("this.{0}.push(elem);\n", aMembers[i].sName);
sb.AppendFormat("this.{0}.push(elem);\n", getClassMemberName(aMembers[i].sName));
}
else
{
sb.AppendFormat("var subDepth = reader.GetDepth();\n");
sb.AppendFormat("while (reader.ReadNextSiblingNode(subDepth)) {{\n");
sb.AppendFormat("if (\"{0}\" === reader.GetNameNoNS()) {{\n", aMembers[i].sName);
sb.AppendFormat("if (\"{0}\" === reader.GetNameNoNS()) {{\n", oGenMemberTmp.sName);
sb.AppendFormat("var elem = new {0}();\n", oGenMemberTmp.sType);
sb.AppendFormat("elem.fromXml(reader);\n");
sb.AppendFormat("this.{0}.push(elem);\n", aMembers[i].sName);
sb.AppendFormat("this.{0}.push(elem);\n", getClassMemberName(aMembers[i].sName));
sb.AppendFormat("}}\n");
sb.AppendFormat("}}\n");
@ -461,13 +470,13 @@ namespace codegen
}
else
{
sb.AppendFormat("//todo {0}\n", aMembers[i].sName);
sb.AppendFormat("//todo {0}\n", getClassMemberName(aMembers[i].sName));
}
}
else
{
sb.AppendFormat("this.{0} = new {1}();\n", aMembers[i].sName, aMembers[i].sType);
sb.AppendFormat("this.{0}.fromXml(reader);\n", aMembers[i].sName);
sb.AppendFormat("this.{0} = new {1}();\n", getClassMemberName(aMembers[i].sName), aMembers[i].sType);
sb.AppendFormat("this.{0}.fromXml(reader);\n", getClassMemberName(aMembers[i].sName));
}
sb.AppendFormat("break;");
sb.AppendFormat("}}\n");
@ -481,13 +490,13 @@ namespace codegen
}
sb.AppendFormat("}};\n");
}
void ProcessAttributeJSFromXml(StringBuilder sb, GenClassPivot oGenClass, GenMemberPivot oGenMember, int index, string sElemName)
void ProcessAttributeJSFromXml(StringBuilder sb, GenClassPivot oGenClass, GenMemberPivot oGenMember, int index)
{
bool bTodo = true;
if (null != oGenMember.oSystemType)
{
bTodo = false;
sb.AppendFormat("case \"{0}\": {{\n this.{1} = reader.{2}();\n break;\n }}\n", sElemName, sElemName, ProcessJSTypeFromXml(Type.GetTypeCode(oGenMember.oSystemType), out bTodo));
sb.AppendFormat("case \"{0}\": {{\n this.{1} = reader.{2}();\n break;\n }}\n", oGenMember.sName, getClassMemberName(oGenMember.sName), ProcessJSTypeFromXml(Type.GetTypeCode(oGenMember.oSystemType), out bTodo));
}
else if (null != oGenMember.sType)
{
@ -498,13 +507,13 @@ namespace codegen
if (oGenClassMember.bIsEnum)
{
bTodo = false;
sb.AppendFormat("case \"{0}\": {{\nthis.{1} = FromXml_{2}(reader.GetValue());\n break;\n }}\n", sElemName, sElemName, GetEnumClassName(oGenClassMember.sName));
sb.AppendFormat("case \"{0}\": {{\nthis.{1} = fromXml_{2}(reader.GetValue());\n break;\n }}\n", oGenMember.sName, getClassMemberName(oGenMember.sName), GetEnumClassName(oGenClassMember.sName));
}
}
}
if (bTodo)
{
sb.AppendFormat("//todo {0}\n", sElemName);
sb.AppendFormat("//todo {0}\n", getClassMemberName(oGenMember.sName));
}
}
string ProcessJSTypeFromXml(TypeCode oTypeCode, out bool bTodo)
@ -516,13 +525,15 @@ namespace codegen
case TypeCode.Boolean:
sRes = "GetValueBool";
break;
case TypeCode.Byte:
case TypeCode.SByte:
case TypeCode.Int16:
case TypeCode.Int32:
sRes = "GetValueInt";
break;
case TypeCode.Byte:
case TypeCode.UInt16:
case TypeCode.UInt32:
sRes = "GetValueInt";
sRes = "GetValueUInt";
break;
case TypeCode.Int64:
case TypeCode.UInt64:
@ -542,7 +553,7 @@ namespace codegen
string getNameWithPrefix(GenClassPivot oGenClass, GenMemberPivot oGenMember, string sRootNamespace, out string sTodo)
{
sTodo = "";
return "w:" + oGenMember.sName;
return toXmlNaspace + oGenMember.sName;
//string sShortNamespace = "";
//if (true == oGenMember.bQualified)

View File

@ -55,7 +55,7 @@
<xsd:restriction base="xsd:unsignedLong"/>
</xsd:simpleType>
<xsd:simpleType name="ST_TwipsMeasure">
<xsd:union memberTypes="ST_UnsignedDecimalNumber ST_PositiveUniversalMeasure"/>
<xsd:union memberTypes="xsd:unsignedLong ST_PositiveUniversalMeasure"/>
</xsd:simpleType>
<xsd:simpleType name="ST_VerticalAlignRun">
<xsd:restriction base="xsd:string">

View File

@ -3749,7 +3749,7 @@
<xsd:attribute name="val" type="ST_FontFamily" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_FontFamily">
<xsd:restriction base="xsd:integer">
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="14"/>
</xsd:restriction>

View File

@ -47,14 +47,11 @@
<xsd:simpleType name="ST_DecimalNumberOrPercent">
<xsd:union memberTypes="s:ST_Percentage"/>
</xsd:simpleType>
<xsd:simpleType name="ST_DecimalNumber">
<xsd:restriction base="xsd:integer"/>
</xsd:simpleType>
<xsd:complexType name="CT_DecimalNumber">
<xsd:attribute name="val" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="val" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_UnsignedDecimalNumber">
<xsd:attribute name="val" type="s:ST_UnsignedDecimalNumber" use="required"/>
<xsd:attribute name="val" type="xsd:unsignedLong" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_DecimalNumberOrPrecent">
<xsd:attribute name="val" type="ST_DecimalNumberOrPercent" use="required"/>
@ -63,25 +60,25 @@
<xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_SignedTwipsMeasure">
<xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/>
<xsd:union memberTypes="xsd:int s:ST_UniversalMeasure"/>
</xsd:simpleType>
<xsd:complexType name="CT_SignedTwipsMeasure">
<xsd:attribute name="val" type="ST_SignedTwipsMeasure" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_PixelsMeasure">
<xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
<xsd:restriction base="xsd:unsignedLong"/>
</xsd:simpleType>
<xsd:complexType name="CT_PixelsMeasure">
<xsd:attribute name="val" type="ST_PixelsMeasure" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_HpsMeasure">
<xsd:union memberTypes="s:ST_UnsignedDecimalNumber s:ST_PositiveUniversalMeasure"/>
<xsd:union memberTypes="xsd:unsignedLong s:ST_PositiveUniversalMeasure"/>
</xsd:simpleType>
<xsd:complexType name="CT_HpsMeasure">
<xsd:attribute name="val" type="ST_HpsMeasure" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_SignedHpsMeasure">
<xsd:union memberTypes="xsd:integer s:ST_UniversalMeasure"/>
<xsd:union memberTypes="xsd:int s:ST_UniversalMeasure"/>
</xsd:simpleType>
<xsd:complexType name="CT_SignedHpsMeasure">
<xsd:attribute name="val" type="ST_SignedHpsMeasure" use="required"/>
@ -98,10 +95,10 @@
<xsd:attribute name="val" use="required" type="ST_MacroName"/>
</xsd:complexType>
<xsd:simpleType name="ST_EighthPointMeasure">
<xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
<xsd:restriction base="xsd:unsignedLong"/>
</xsd:simpleType>
<xsd:simpleType name="ST_PointMeasure">
<xsd:restriction base="s:ST_UnsignedDecimalNumber"/>
<xsd:restriction base="xsd:unsignedLong"/>
</xsd:simpleType>
<xsd:complexType name="CT_String">
<xsd:attribute name="val" type="s:ST_String" use="required"/>
@ -470,7 +467,7 @@
</xsd:complexType>
<xsd:complexType name="CT_FitText">
<xsd:attribute name="val" type="s:ST_TwipsMeasure" use="required"/>
<xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="id" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_Em">
<xsd:restriction base="xsd:string">
@ -499,7 +496,7 @@
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_EastAsianLayout">
<xsd:attribute name="id" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="id" type="xsd:int" use="optional"/>
<xsd:attribute name="combine" type="s:ST_OnOff" use="optional"/>
<xsd:attribute name="combineBrackets" type="ST_CombineBrackets" use="optional"/>
<xsd:attribute name="vert" type="s:ST_OnOff" use="optional"/>
@ -545,7 +542,7 @@
</xsd:simpleType>
<xsd:complexType name="CT_FramePr">
<xsd:attribute name="dropCap" type="ST_DropCap" use="optional"/>
<xsd:attribute name="lines" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="lines" type="xsd:int" use="optional"/>
<xsd:attribute name="w" type="s:ST_TwipsMeasure" use="optional"/>
<xsd:attribute name="h" type="s:ST_TwipsMeasure" use="optional"/>
<xsd:attribute name="vSpace" type="s:ST_TwipsMeasure" use="optional"/>
@ -595,23 +592,23 @@
</xsd:simpleType>
<xsd:complexType name="CT_Spacing">
<xsd:attribute name="before" type="s:ST_TwipsMeasure" use="optional" default="0"/>
<xsd:attribute name="beforeLines" type="ST_DecimalNumber" use="optional" default="0"/>
<xsd:attribute name="beforeLines" type="xsd:int" use="optional" default="0"/>
<xsd:attribute name="beforeAutospacing" type="s:ST_OnOff" use="optional" default="off"/>
<xsd:attribute name="after" type="s:ST_TwipsMeasure" use="optional" default="0"/>
<xsd:attribute name="afterLines" type="ST_DecimalNumber" use="optional" default="0"/>
<xsd:attribute name="afterLines" type="xsd:int" use="optional" default="0"/>
<xsd:attribute name="afterAutospacing" type="s:ST_OnOff" use="optional" default="off"/>
<xsd:attribute name="line" type="ST_SignedTwipsMeasure" use="optional" default="0"/>
<xsd:attribute name="lineRule" type="ST_LineSpacingRule" use="optional" default="auto"/>
</xsd:complexType>
<xsd:complexType name="CT_Ind">
<xsd:attribute name="start" type="ST_SignedTwipsMeasure" use="optional"/>
<xsd:attribute name="startChars" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="startChars" type="xsd:int" use="optional"/>
<xsd:attribute name="end" type="ST_SignedTwipsMeasure" use="optional"/>
<xsd:attribute name="endChars" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="endChars" type="xsd:int" use="optional"/>
<xsd:attribute name="hanging" type="s:ST_TwipsMeasure" use="optional"/>
<xsd:attribute name="hangingChars" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="hangingChars" type="xsd:int" use="optional"/>
<xsd:attribute name="firstLine" type="s:ST_TwipsMeasure" use="optional"/>
<xsd:attribute name="firstLineChars" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="firstLineChars" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_Jc">
<xsd:restriction base="xsd:string">
@ -702,7 +699,7 @@
<xsd:attribute name="algorithmName" type="s:ST_String" use="optional"/>
<xsd:attribute name="hashValue" type="xsd:base64Binary" use="optional"/>
<xsd:attribute name="saltValue" type="xsd:base64Binary" use="optional"/>
<xsd:attribute name="spinCount" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="spinCount" type="xsd:int" use="optional"/>
</xsd:attributeGroup>
<xsd:complexType name="CT_DocProtect">
<xsd:attribute name="edit" type="ST_DocProtect" use="optional"/>
@ -798,44 +795,44 @@
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_Markup">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_TrackChange">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_CellMergeTrackChange">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
<xsd:attribute name="vMerge" type="ST_AnnotationVMerge" use="optional"/>
<xsd:attribute name="vMergeOrig" type="ST_AnnotationVMerge" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_TrackChangeRange">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
<xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_MarkupRange">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_BookmarkRange">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
<xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colFirst" type="xsd:int" use="optional"/>
<xsd:attribute name="colLast" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_Bookmark">
<xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colFirst" type="xsd:int" use="optional"/>
<xsd:attribute name="colLast" type="xsd:int" use="optional"/>
<xsd:attribute name="name" type="s:ST_String" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_MoveBookmark">
<xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colFirst" type="xsd:int" use="optional"/>
<xsd:attribute name="colLast" type="xsd:int" use="optional"/>
<xsd:attribute name="name" type="s:ST_String" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="required"/>
@ -844,7 +841,7 @@
<xsd:sequence>
<xsd:element name="todo_EG_BlockLevelElts" type="CT_String" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
<xsd:attribute name="initials" type="s:ST_String" use="optional"/>
@ -853,7 +850,7 @@
<xsd:sequence>
<xsd:element name="tblPrEx" type="CT_TblPrExBase" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -861,7 +858,7 @@
<xsd:sequence>
<xsd:element name="tcPr" type="CT_TcPrInner" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -869,7 +866,7 @@
<xsd:sequence>
<xsd:element name="trPr" type="CT_TrPrBase" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -877,13 +874,13 @@
<xsd:sequence>
<xsd:element name="tblGrid" type="CT_TblGridBase"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_TblPrChange">
<xsd:sequence>
<xsd:element name="tblPr" type="CT_TblPrBase"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -891,7 +888,7 @@
<xsd:sequence>
<xsd:element name="sectPr" type="CT_SectPrBase" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -899,7 +896,7 @@
<xsd:sequence>
<xsd:element name="pPr" type="CT_PPrBase" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -907,7 +904,7 @@
<xsd:sequence>
<xsd:element name="rPr" type="CT_RPrOriginal" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -915,7 +912,7 @@
<xsd:sequence>
<xsd:element name="rPr" type="CT_ParaRPrOriginal" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -924,7 +921,7 @@
<xsd:element name="todo_EG_ContentRunContent" type="CT_String" minOccurs="0"/>
<xsd:group ref="m:EG_OMathMathElements"/>
</xsd:choice>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -1323,8 +1320,8 @@
<xsd:attribute name="val" type="ST_SectionMark"/>
</xsd:complexType>
<xsd:complexType name="CT_PaperSource">
<xsd:attribute name="first" type="ST_DecimalNumber"/>
<xsd:attribute name="other" type="ST_DecimalNumber"/>
<xsd:attribute name="first" type="xsd:int"/>
<xsd:attribute name="other" type="xsd:int"/>
</xsd:complexType>
<xsd:simpleType name="ST_NumberFormat">
<xsd:restriction base="xsd:string">
@ -1403,7 +1400,7 @@
<xsd:attribute name="w" type="s:ST_TwipsMeasure"/>
<xsd:attribute name="h" type="s:ST_TwipsMeasure"/>
<xsd:attribute name="orient" type="ST_PageOrientation" use="optional"/>
<xsd:attribute name="code" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="code" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_PageMar">
<xsd:attribute name="top" type="ST_SignedTwipsMeasure" use="required"/>
@ -1500,15 +1497,15 @@
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="CT_LineNumber">
<xsd:attribute name="countBy" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="start" type="ST_DecimalNumber" use="optional" default="1"/>
<xsd:attribute name="countBy" type="xsd:int" use="optional"/>
<xsd:attribute name="start" type="xsd:int" use="optional" default="1"/>
<xsd:attribute name="distance" type="s:ST_TwipsMeasure" use="optional"/>
<xsd:attribute name="restart" type="ST_LineNumberRestart" use="optional" default="newPage"/>
</xsd:complexType>
<xsd:complexType name="CT_PageNumber">
<xsd:attribute name="fmt" type="ST_NumberFormat" use="optional" default="decimal"/>
<xsd:attribute name="start" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="chapStyle" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="start" type="xsd:int" use="optional"/>
<xsd:attribute name="chapStyle" type="xsd:int" use="optional"/>
<xsd:attribute name="chapSep" type="ST_ChapterSep" use="optional" default="hyphen"/>
</xsd:complexType>
<xsd:complexType name="CT_Column">
@ -1521,7 +1518,7 @@
</xsd:sequence>
<xsd:attribute name="equalWidth" type="s:ST_OnOff" use="optional"/>
<xsd:attribute name="space" type="s:ST_TwipsMeasure" use="optional" default="720"/>
<xsd:attribute name="num" type="ST_DecimalNumber" use="optional" default="1"/>
<xsd:attribute name="num" type="xsd:int" use="optional" default="1"/>
<xsd:attribute name="sep" type="s:ST_OnOff" use="optional"/>
</xsd:complexType>
<xsd:simpleType name="ST_VerticalJc">
@ -1545,8 +1542,8 @@
</xsd:simpleType>
<xsd:complexType name="CT_DocGrid">
<xsd:attribute name="type" type="ST_DocGrid"/>
<xsd:attribute name="linePitch" type="ST_DecimalNumber"/>
<xsd:attribute name="charSpace" type="ST_DecimalNumber" use="optional" default="0"/>
<xsd:attribute name="linePitch" type="xsd:int"/>
<xsd:attribute name="charSpace" type="xsd:int" use="optional" default="0"/>
</xsd:complexType>
<xsd:simpleType name="ST_HdrFtr">
<xsd:restriction base="xsd:string">
@ -1702,8 +1699,8 @@
<xsd:attribute name="displacedByCustomXml" type="ST_DisplacedByCustomXml" use="optional"/>
<xsd:attribute name="edGrp" type="ST_EdGrp" use="optional"/>
<xsd:attribute name="ed" type="s:ST_String" use="optional"/>
<xsd:attribute name="colFirst" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colLast" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="colFirst" type="xsd:int" use="optional"/>
<xsd:attribute name="colLast" type="xsd:int" use="optional"/>
</xsd:complexType>
<xsd:complexType name="CT_Text">
<xsd:attribute ref="xml:space" use="optional"/>
@ -1853,7 +1850,7 @@
<xsd:element name="del" type="CT_RPrChange" minOccurs="1"/>
<xsd:element name="rPr" type="CT_RPr" minOccurs="1"/>
</xsd:choice>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -1861,7 +1858,7 @@
<xsd:sequence>
<xsd:element name="rPr" type="CT_RPr" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
<xsd:attribute name="author" type="s:ST_String" use="required"/>
<xsd:attribute name="date" type="ST_DateTime" use="optional"/>
</xsd:complexType>
@ -2581,17 +2578,17 @@
</xsd:complexType>
<xsd:complexType name="CT_FtnEdnRef">
<xsd:attribute name="customMarkFollows" type="s:ST_OnOff" use="optional"/>
<xsd:attribute name="id" use="required" type="ST_DecimalNumber"/>
<xsd:attribute name="id" use="required" type="xsd:int"/>
</xsd:complexType>
<xsd:complexType name="CT_FtnEdnSepRef">
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_FtnEdn">
<xsd:sequence>
<xsd:element name="todo_EG_BlockLevelElts" type="CT_String" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="type" type="ST_FtnEdn" use="optional"/>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:group name="EG_FtnEdnNumProps">
<xsd:sequence>
@ -3035,7 +3032,7 @@
<xsd:choice>
<xsd:element name="drawing" type="CT_Drawing"/>
</xsd:choice>
<xsd:attribute name="numPicBulletId" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="numPicBulletId" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:simpleType name="ST_LevelSuffix">
<xsd:restriction base="xsd:string">
@ -3065,7 +3062,7 @@
<xsd:element name="pPr" type="CT_PPrGeneral" minOccurs="0"/>
<xsd:element name="rPr" type="CT_RPr" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="ilvl" type="xsd:int" use="required"/>
<xsd:attribute name="tplc" type="ST_LongHexNumber" use="optional"/>
<xsd:attribute name="tentative" type="s:ST_OnOff" use="optional"/>
</xsd:complexType>
@ -3089,21 +3086,21 @@
<xsd:element name="numStyleLink" type="CT_String" minOccurs="0"/>
<xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="9"/>
</xsd:sequence>
<xsd:attribute name="abstractNumId" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="abstractNumId" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_NumLvl">
<xsd:sequence>
<xsd:element name="startOverride" type="CT_DecimalNumber" minOccurs="0"/>
<xsd:element name="lvl" type="CT_Lvl" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="ilvl" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="ilvl" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Num">
<xsd:sequence>
<xsd:element name="abstractNumId" type="CT_DecimalNumber" minOccurs="1"/>
<xsd:element name="lvlOverride" type="CT_NumLvl" minOccurs="0" maxOccurs="9"/>
</xsd:sequence>
<xsd:attribute name="numId" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="numId" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Numbering">
<xsd:sequence>
@ -3181,7 +3178,7 @@
<xsd:complexType name="CT_LsdException">
<xsd:attribute name="name" type="s:ST_String" use="required"/>
<xsd:attribute name="locked" type="s:ST_OnOff"/>
<xsd:attribute name="uiPriority" type="ST_DecimalNumber"/>
<xsd:attribute name="uiPriority" type="xsd:int"/>
<xsd:attribute name="semiHidden" type="s:ST_OnOff"/>
<xsd:attribute name="unhideWhenUsed" type="s:ST_OnOff"/>
<xsd:attribute name="qFormat" type="s:ST_OnOff"/>
@ -3191,11 +3188,11 @@
<xsd:element name="lsdException" type="CT_LsdException" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="defLockedState" type="s:ST_OnOff"/>
<xsd:attribute name="defUIPriority" type="ST_DecimalNumber"/>
<xsd:attribute name="defUIPriority" type="xsd:int"/>
<xsd:attribute name="defSemiHidden" type="s:ST_OnOff"/>
<xsd:attribute name="defUnhideWhenUsed" type="s:ST_OnOff"/>
<xsd:attribute name="defQFormat" type="s:ST_OnOff"/>
<xsd:attribute name="count" type="ST_DecimalNumber"/>
<xsd:attribute name="count" type="xsd:int"/>
</xsd:complexType>
<xsd:complexType name="CT_Styles">
<xsd:sequence>
@ -3283,7 +3280,7 @@
<xsd:element name="divBdr" type="CT_DivBdr" minOccurs="0"/>
<xsd:element name="divsChild" type="CT_Divs" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="ST_DecimalNumber" use="required"/>
<xsd:attribute name="id" type="xsd:int" use="required"/>
</xsd:complexType>
<xsd:complexType name="CT_Divs">
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
@ -3501,7 +3498,7 @@
<xsd:attribute name="name" type="s:ST_String" use="required"/>
<xsd:attribute name="pos" type="ST_CaptionPos" use="optional"/>
<xsd:attribute name="chapNum" type="s:ST_OnOff" use="optional"/>
<xsd:attribute name="heading" type="ST_DecimalNumber" use="optional"/>
<xsd:attribute name="heading" type="xsd:int" use="optional"/>
<xsd:attribute name="noLabel" type="s:ST_OnOff" use="optional"/>
<xsd:attribute name="numFmt" type="ST_NumberFormat" use="optional"/>
<xsd:attribute name="sep" type="ST_ChapterSep" use="optional"/>