Compare commits

...

88 Commits

Author SHA1 Message Date
e4075febd5 [Test] For 'aaa' format 2023-10-18 19:24:22 +03:00
98d2afb11d Clear file 2022-01-28 16:10:04 +03:00
246a96574b Add Gannen for Locales 2022-01-28 16:08:40 +03:00
a1da0bb2e0 Add check for Gannen calendar 2022-01-27 14:11:38 +03:00
53186e12d2 [Test] Update tests 2022-01-25 20:24:18 +03:00
7066a55813 [Test] Update tests 2022-01-21 17:49:22 +03:00
53f53200df Merge pull request #828 from ONLYOFFICE/feature/add-onProgress-downloader
Feature/add on progress downloader
2022-01-18 17:46:27 +03:00
916a84b041 [Network] add fix callBack onProgress for windows 2022-01-18 16:40:01 +03:00
1f0f8ae1b4 [Network] add fix callBack onProgress for curl linux (comment for mobile) 2022-01-18 16:16:23 +03:00
db67132ce2 Merge pull request #829 from ONLYOFFICE/release/v7.1.0
Fix typo
2022-01-18 15:35:05 +03:00
fb2b4b2797 [Network] add save call onProcess on windows 2022-01-18 15:08:00 +03:00
539f1cab81 Merge pull request #827 from ONLYOFFICE/release/v7.1.0
Remove using graphics.pri in release mode
2022-01-18 15:05:56 +03:00
2194dd5899 [Network] add callBack onProcess for curl (both variant) 2022-01-18 15:00:27 +03:00
2799b63869 Merge pull request #826 from ONLYOFFICE/release/v7.1.0
Add missed files
2022-01-18 12:06:15 +03:00
8fa09793eb Merge pull request #825 from ONLYOFFICE/release/v7.1.0
Fix build
2022-01-18 10:55:17 +03:00
0a577290ba Merge pull request #824 from ONLYOFFICE/release/v7.1.0
Release/v7.1.0
2022-01-17 20:56:33 +03:00
23dd433b20 [Test] Update tests 2022-01-17 20:00:20 +03:00
194faf5eff Merge pull request #823 from ONLYOFFICE/feature/add-onProgress-downloader
[Test] add TestDownloader
2022-01-17 19:30:09 +03:00
8f9d36085b [Test] add TestDownloader 2022-01-17 19:26:47 +03:00
2342956bb1 Merge pull request #822 from ONLYOFFICE/feature/add-onProgress-downloader
[Network][FileDownloader] add callBack onProgress for windows
2022-01-17 19:05:03 +03:00
892c415382 [Network][FileDownloader] add callBack onProgress for windows 2022-01-17 19:02:56 +03:00
9ca2b70ee3 Merge branch release/v7.0.0 into develop 2022-01-17 14:19:06 +00:00
79e57e8965 Merge pull request #818 from ONLYOFFICE/release/v7.1.0
Release/v7.1.0
2022-01-17 16:20:26 +03:00
6af132ab18 Merge branch 'feature/odf_2' into develop 2022-01-14 16:51:04 +03:00
01a4770af4 [test] Fix test scripts 2022-01-11 19:07:32 +03:00
874129f41c Merge branch 'feature/number-format-locale' into develop 2022-01-11 17:45:57 +03:00
f2c9aec380 Merge remote-tracking branch 'origin/release/v7.1.0' into develop 2022-01-11 11:22:20 +03:00
8ebcbe8636 Merge pull request #811 from ONLYOFFICE/release/v7.1.0
Release/v7.1.0
2022-01-10 18:22:12 +03:00
44c5e23bc1 Merge pull request #810 from ONLYOFFICE/release/v7.1.0
Release/v7.1.0
2022-01-10 14:30:56 +03:00
9484e549b4 Merge pull request #654 from ONLYOFFICE/feature/network/callback
[Common][Network] change typedef style func to c++11 std::function
2022-01-10 13:07:14 +03:00
2dadace9e0 [Common][Network] change typedef style func to c++11 std::function 2021-07-09 14:01:14 +03:00
8f6a51a4f8 [test] Update test file 2020-12-25 13:48:52 +03:00
467360bc3e [test] Add test file 2020-11-17 22:42:11 +03:00
11bbb0880d [se] dates is updated proof resolved 2020-11-11 15:06:20 +03:00
e69514a338 [se] macros-locale-data.xlsm chanes date 2020-11-10 17:06:28 +03:00
66eac90262 [se]the dates's been changed 2020-10-28 16:49:08 +03:00
2ddefee334 Merge branch 'feature/number-format-locale' of https://github.com/ONLYOFFICE/core into feature/number-format-locale 2020-10-27 13:09:39 +03:00
456f25d9e1 [se]fix 2020-10-27 13:09:17 +03:00
e447a428d0 [se] fix 2020-10-27 13:08:50 +03:00
c52c2306c3 [se] 2020-10-27 09:02:29 +03:00
68c07a11d4 updated 2020-10-27 08:58:59 +03:00
b4b8c74fd7 updated 2020-10-27 08:58:29 +03:00
908524ff2e [se] builders 2020-10-27 08:57:43 +03:00
bfd8f52e5e [se]ParseLocalFormatSymbol 2020-10-23 17:32:18 +03:00
40ef42f18d [se] view 2020-10-23 13:43:20 +03:00
057514398c [se] renamed 2020-10-23 13:40:51 +03:00
2f1975eca7 [se] renamed 2020-10-23 13:37:40 +03:00
199325b458 [se] chanhed Readme.md 2020-10-23 13:34:18 +03:00
7bb737e4ab [se]fix 2020-10-23 13:18:53 +03:00
4a381a013c [se]fix 2020-10-23 12:34:23 +03:00
795601e243 [se]fix 2020-10-23 12:29:21 +03:00
e0f902ef50 [se] moved 2020-10-23 12:28:57 +03:00
a8c605da58 [se] changed output 2020-10-23 12:18:58 +03:00
1330c28758 [se]rename 2020-10-23 12:17:32 +03:00
06cbaa82f2 [se] 2020-10-23 12:14:36 +03:00
bdd3cd0795 [se]alghoritm 2020-10-23 12:13:43 +03:00
bb6fc86e0a [se]renamed 2020-10-23 12:01:00 +03:00
900d28e002 [se] update 2020-10-22 15:34:43 +03:00
d41904eab0 [se]fix 2020-10-22 15:13:49 +03:00
22063acc38 [se] fxi 2020-10-22 14:52:45 +03:00
b61ecc11ae [se]algoiscommented 2020-10-22 14:41:22 +03:00
ded9f2cc6a [se] changeofdata 2020-10-22 14:38:00 +03:00
a7c136cdeb [se]changenamess2 2020-10-22 13:52:55 +03:00
d1e75447a0 [se] changenames s1 2020-10-22 13:25:53 +03:00
5263677365 [se]fix 2020-10-22 13:20:07 +03:00
de6d5de360 [se] alghoritm 2020-10-22 13:04:26 +03:00
66478ba28e [se] the comented algorithm 2020-10-22 09:56:11 +03:00
c6ed595019 Merge branch 'feature/number-format-locale' of https://github.com/ONLYOFFICE/core into feature/number-format-locale
# Conflicts:
#	Test/Applications/ParseExcelNumberFormatLocales/test/proof/test.js
2020-10-22 09:51:01 +03:00
7dd98a564c [se] fix 2020-10-22 09:27:01 +03:00
19d2417ffe Readme.md's been filled. 2020-10-22 09:26:25 +03:00
da2d9f6ed3 _ 2020-10-21 13:05:03 +03:00
6b0256ae4c _ 2020-10-21 13:00:07 +03:00
5ca14e42a6 _ 2020-10-21 12:59:51 +03:00
d150c439d4 _ 2020-10-21 12:01:36 +03:00
9952900ca8 _ 2020-10-21 11:57:39 +03:00
bc2f1a2c82 _ 2020-10-21 08:51:56 +03:00
ec1c5b278c fix 2020-10-20 17:15:40 +03:00
207cb4e6dd _ 2020-10-20 15:31:37 +03:00
f01770ba3c _ 2020-10-20 15:27:23 +03:00
dc2236c664 _ 2020-10-20 14:59:56 +03:00
112e2a866a fix 2020-10-20 14:55:39 +03:00
8add25ef19 _ 2020-10-20 14:51:27 +03:00
4863b89e62 Merge branch 'feature/number-format-locale' of https://github.com/ONLYOFFICE/core into feature/number-format-locale
# Conflicts:
#	Test/Applications/ParseExcelNumberFormatLocales/test/macros-locale (1).xlsm
#	Test/Applications/ParseExcelNumberFormatLocales/test/run2.vbs
#	Test/Applications/ParseExcelNumberFormatLocales/test/test2.ps1
2020-10-20 14:48:32 +03:00
f63dcd82f4 added dates 2020-10-19 15:45:06 +03:00
25b35c542a -replace "," to "." and " " to "!". the 2 bugs's been found. The first is webstorm cant replace "\u00A0" to "\u0020", the second is bad data, str2[297][1] = "\", strofdec[297] = "," 2020-10-19 15:41:00 +03:00
fc3060d2d0 [test] Move to relative path 2020-10-12 13:24:03 +03:00
8f4cbc5a5c [test] testing of the functional for changing symbols 2020-10-12 11:44:37 +03:00
34cd2d3e77 [test] Add new test project 2020-10-08 12:57:44 +03:00
3421 changed files with 18193 additions and 171 deletions

View File

@ -32,15 +32,16 @@
#pragma once
#include <string>
#include <functional>
#include "../../../kernel_config.h"
namespace NSNetwork
{
namespace NSFileTransport
{
typedef void (*CFileTransporter_OnComplete)(int error);
//typedef void (*CFileTransporter_OnComplete)(int error);
// <return> cancel: 1, else 0
typedef int (*CFileTransporter_OnProgress)(int percent);
//typedef int (*CFileTransporter_OnProgress)(int percent);
class KERNEL_DECL IFileTransporter
{
@ -58,8 +59,8 @@ namespace NSNetwork
virtual int IsRunned() = 0;
//events
virtual void SetEvent_OnProgress(CFileTransporter_OnProgress) = 0;
virtual void SetEvent_OnComplete(CFileTransporter_OnComplete) = 0;
virtual void SetEvent_OnProgress(std::function<void(int)>) = 0;
virtual void SetEvent_OnComplete(std::function<void(int)>) = 0;
};
#ifdef _MAC
@ -92,8 +93,8 @@ namespace NSNetwork
virtual void Resume();
virtual void Stop();
virtual int IsRunned();
virtual void SetEvent_OnProgress(CFileTransporter_OnProgress);
virtual void SetEvent_OnComplete(CFileTransporter_OnComplete);
virtual void SetEvent_OnProgress(std::function<void(int)>);
virtual void SetEvent_OnComplete(std::function<void(int)>);
private:
CFileTransporter_private* m_pInternal;
@ -122,8 +123,8 @@ namespace NSNetwork
virtual void Resume();
virtual void Stop();
virtual int IsRunned();
virtual void SetEvent_OnProgress(CFileTransporter_OnProgress);
virtual void SetEvent_OnComplete(CFileTransporter_OnComplete);
virtual void SetEvent_OnProgress(std::function<void(int)>);
virtual void SetEvent_OnComplete(std::function<void(int)>);
private:
CFileTransporter_private* m_pInternal;

View File

@ -103,11 +103,11 @@ namespace NSNetwork
void CFileDownloader::Stop() { m_pInternal->Stop(); }
int CFileDownloader::IsRunned() { return m_pInternal->IsRunned(); }
void CFileDownloader::SetEvent_OnProgress(CFileTransporter_OnProgress func)
void CFileDownloader::SetEvent_OnProgress(std::function<void(int)> func)
{
m_pInternal->GetInternal()->m_func_onProgress = func;
}
void CFileDownloader::SetEvent_OnComplete(CFileTransporter_OnComplete func)
void CFileDownloader::SetEvent_OnComplete(std::function<void(int)> func)
{
m_pInternal->GetInternal()->m_func_onComplete = func;
}
@ -166,11 +166,11 @@ namespace NSNetwork
void CFileUploader::Stop() { m_pInternal->Stop(); }
int CFileUploader::IsRunned() { return m_pInternal->IsRunned(); }
void CFileUploader::SetEvent_OnProgress(CFileTransporter_OnProgress func)
void CFileUploader::SetEvent_OnProgress(std::function<void(int)> func)
{
m_pInternal->GetInternal()->m_func_onProgress = func;
}
void CFileUploader::SetEvent_OnComplete(CFileTransporter_OnComplete func)
void CFileUploader::SetEvent_OnComplete(std::function<void(int)> func)
{
m_pInternal->GetInternal()->m_func_onComplete = func;
}

View File

@ -84,6 +84,18 @@ namespace NSNetwork
return written;
}
/*int progress_func(void* ptr, double TotalToDownload, double NowDownloaded, double TotalToUpload, double NowUploaded)
{
// It's here you will write the code for the progress message or bar
int percent = static_cast<int>((100.0 * NowDownloaded) / TotalToDownload);
if(CFileTransporterBase::m_func_onProgress)
CFileTransporterBase::m_func_onProgress(percent);
return 0;
}
*/
static size_t write_data_to_string(char *contents, size_t size, size_t nmemb, void *userp)
{
((std::string*)userp)->append((char*)contents, size * nmemb);
@ -105,6 +117,9 @@ namespace NSNetwork
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
//curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
// Install the callback function
//curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_func);
#if defined(__linux__)
//в linux нет встроенных в систему корневых сертификатов, поэтому отключаем проверку
//http://curl.haxx.se/docs/sslcerts.html
@ -226,7 +241,7 @@ namespace NSNetwork
if (NSFile::CFileBinary::Exists(m_sDownloadFilePath))
NSFile::CFileBinary::Remove(m_sDownloadFilePath);
}
return download_external(m_sDownloadFileUrl, m_sDownloadFilePath);
return download_external(m_sDownloadFileUrl, m_sDownloadFilePath, m_func_onProgress);
}
virtual int UploadData() override
{

View File

@ -141,8 +141,8 @@ namespace NSNetwork
std::wstring m_sResponse; // Ответ сервера
CFileTransporter_OnComplete m_func_onComplete;
CFileTransporter_OnProgress m_func_onProgress;
std::function<void(int)> m_func_onComplete;
std::function<void(int)> m_func_onProgress;
};
class CFileTransporter_private : public NSThreads::CBaseThread

View File

@ -368,9 +368,64 @@ namespace NSNetwork
::fclose( m_pFile );
m_pFile = NULL;
}
// Скачиваем файл
return URLDownloadToFileW (NULL, sFileURL.c_str(), strFileOutput.c_str(), NULL, NULL);
}
if(m_func_onProgress)
{
DownloadProgress progress;
progress.func_onProgress = m_func_onProgress;
// Скачиваем файл с возвратом процентов состояния
return URLDownloadToFileW (NULL, sFileURL.c_str(), strFileOutput.c_str(), NULL, static_cast<IBindStatusCallback*>(&progress));
}
else
return URLDownloadToFileW (NULL, sFileURL.c_str(), strFileOutput.c_str(), NULL, NULL);
}
class DownloadProgress : public IBindStatusCallback {
public:
HRESULT __stdcall QueryInterface(const IID &,void **) {
return E_NOINTERFACE;
}
ULONG STDMETHODCALLTYPE AddRef(void) {
return 1;
}
ULONG STDMETHODCALLTYPE Release(void) {
return 1;
}
HRESULT STDMETHODCALLTYPE OnStartBinding(DWORD dwReserved, IBinding *pib) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE GetPriority(LONG *pnPriority) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnLowResource(DWORD reserved) {
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE OnStopBinding(HRESULT hresult, LPCWSTR szError) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE GetBindInfo(DWORD *grfBINDF, BINDINFO *pbindinfo) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnDataAvailable(DWORD grfBSCF, DWORD dwSize, FORMATETC *pformatetc, STGMEDIUM *pstgmed) {
return E_NOTIMPL;
}
virtual HRESULT STDMETHODCALLTYPE OnObjectAvailable(REFIID riid, IUnknown *punk) {
return E_NOTIMPL;
}
virtual HRESULT __stdcall OnProgress(ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
{
if(ulProgressMax != 0)
{
int percent = static_cast<int>((100.0 * ulProgress) / ulProgressMax);
if(func_onProgress)
func_onProgress(percent);
}
return S_OK;
}
std::function<void(int)> func_onProgress;
};
bool DownloadFilePS(const std::wstring& sFileURL, const std::wstring& strFileOutput)
{

View File

@ -38,6 +38,9 @@
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <regex>
namespace NSNetwork
{
@ -55,10 +58,9 @@ namespace NSNetwork
return url.substr(pos);
}
int download_external(const std::wstring& sUrl, const std::wstring& sOutput)
int download_external(const std::wstring& sUrl, const std::wstring& sOutput, std::function<void(int)> func_onProgress)
{
int nReturnCode = -1;
std::string sUrlA = U_TO_UTF8(sUrl);
//sUrlA =("\"" + sUrlA + "\"");
std::string sOutputA = U_TO_UTF8(sOutput);
@ -66,6 +68,10 @@ namespace NSNetwork
if (0 != nReturnCode && NSFile::CFileBinary::Exists(L"/usr/bin/curl"))
{
int pipefd[2];
if(func_onProgress)
pipe(pipefd);
pid_t pid = fork(); // create child process
int status;
@ -82,7 +88,7 @@ namespace NSNetwork
nargs[2] = sUrlA.c_str();
nargs[3] = "--output";
nargs[4] = sOutputA.c_str();
nargs[5] = "--silent";
func_onProgress == NULL ? nargs[5] = "--silent" : nargs[5] = "--progress-bar";
nargs[6] = "-L";
nargs[7] = "--connect-timeout";
nargs[8] = "10";
@ -93,11 +99,56 @@ namespace NSNetwork
nenv[1] = "LD_LIBRARY_PATH=";
nenv[2] = NULL;
if(func_onProgress)
{
close(pipefd[0]); // close reading end in the child
dup2(pipefd[1], 1); // send stdout to the pipe
dup2(pipefd[1], 2); // send stderr to the pipe
close(pipefd[1]); // this descriptor is no longer needed
}
execve("/usr/bin/curl", (char * const *)nargs, (char * const *)nenv);
exit(EXIT_SUCCESS);
break;
}
default: // parent process, pid now contains the child pid
if(func_onProgress)
{
size_t size = 81;
char buffer[size];
std::string str;
close(pipefd[1]); // close the write end of the pipe in the parent
ssize_t res = 1;
while (1)
{
str.clear();
res = read(pipefd[0], buffer, sizeof(buffer));
if(res == 0)
break;
str.append(buffer);
std::regex r(R"(\d+(?:\.\d+)?%)");
std::smatch sm;
std::string percentFull;
std::string percent;
if(regex_search(str, sm, r))
{
percentFull = sm.str();
percent = percentFull.substr(0, percentFull.find("."));
int percentInt = std::stoi(percent);
if(percentInt >= 0 && percentInt <= 100)
func_onProgress(percentInt);
}
if(str.find("100.0%") != std::string::npos)
break;
}
}
while (-1 == waitpid(pid, &status, 0)); // wait for child to complete
if (WIFEXITED(status))
{

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,13 @@ namespace codegen
}
#endregion
#region JS
string getClassMemberName(string sName)
{
////for word
//TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
//return textInfo.ToTitleCase(sName);
return sName.Substring(0, 1).ToUpper() + sName.Substring(1);
}
string GetEnumClassName(string sEnumName)
{
return sEnumName;
@ -148,7 +157,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,26 +173,26 @@ 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)
{
sb.AppendFormat("case {0}.{1}: return \"{2}\";\n", GetEnumClassName(oGenClass.sName), GetEnumElemName(oGenClass.aMembers[j].sName), oGenClass.aMembers[j].sName);
}
sb.AppendFormat("}}\n");
sb.AppendFormat("return \"\";\n");
sb.AppendFormat("return null;\n");
sb.AppendFormat("}}\n");
}
public void ProcessEnumsJS(StringBuilder sb, List<GenClassPivot> aGenClasses)
@ -242,11 +251,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 +269,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));
}
}
}
@ -282,45 +291,47 @@ namespace codegen
sb.AppendFormat("{0}.prototype.toXml = function (writer, name) {{\n", oGenClass.sName);
sb.AppendFormat("writer.WriteXmlNodeStart(name);\n");
if(aMembers.Count > 0)
for (int i = 0; i < aAttributes.Count; ++i)
{
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)
{
sb.AppendFormat("writer.WriteXmlAttributesEnd();\n");
for (int i = 0; i < aMembers.Count; ++i)
{
GenMemberPivot oGenMember = aMembers[i];
string sTodo;
string sElemXmlName = getNameWithPrefix(oGenClass, oGenMember, sRootNamespace, out sTodo);
if (oGenMember.isArray())
{
GenMemberPivot oGenMemberTmp = oGenMember.getArrayTypeIfSimple();
string sTodo;
string sElemXmlName = getNameWithPrefix(oGenClass, oGenMember, sRootNamespace, out sTodo);
if (sTodo.Length > 0)
{
sb.AppendFormat("//todo {0}\n", sTodo);
}
if (null != oGenMemberTmp)
{
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, oGenMember.sName, oGenMemberTmp.sName);
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, oGenMember.sName);
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}, \"{0}\");\n", oGenMember.sName);
sb.AppendFormat("writer.WriteXmlNullable(this.{0}, \"{1}\");\n", getClassMemberName(oGenMember.sName), sElemXmlName);
}
}
sb.AppendFormat("writer.WriteXmlNodeEnd(name);\n");
@ -331,13 +342,21 @@ 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)
{
bool bTodo = true;
string sElemName = getClassMemberName(oGenMember.sName);
string sTodo = sElemName;
string sRootNamespace = "";
string sElemXmlName = getNameWithPrefix(oGenClass, oGenMember, sRootNamespace, out sTodo);
if (null != oGenMember.oSystemType)
{
bTodo = false;
sb.AppendFormat("writer.{0}(\"{1}\", this.{1});\n", ProcessJSTypeToXml(Type.GetTypeCode(oGenMember.oSystemType), TypeCode.String == Type.GetTypeCode(oGenMember.oSystemType), out bTodo), sElemName);
sTodo = "";
bool bTodo;
sb.AppendFormat("writer.{0}(\"{1}\", this.{2});\n", ProcessJSTypeToXml(Type.GetTypeCode(oGenMember.oSystemType), TypeCode.String == Type.GetTypeCode(oGenMember.oSystemType), out bTodo), sElemXmlName, sElemName);
if(bTodo)
{
sTodo = sElemName;
}
}
else if (null != oGenMember.sType)
{
@ -347,14 +366,14 @@ namespace codegen
{
if (oGenClassMember.bIsEnum)
{
bTodo = false;
sb.AppendFormat("writer.WriteXmlAttributeString(\"{0}\", ToXml_{1}(this.{2}));\n", sElemName, GetEnumClassName(oGenMember.sName), sElemName);
sTodo = "";
sb.AppendFormat("writer.WriteXmlNullableAttributeString(\"{0}\", toXml_{1}(this.{2}));\n", sElemXmlName, GetEnumClassName(oGenClassMember.sName), sElemName);
}
}
}
if (bTodo)
if (sTodo.Length > 0)
{
sb.AppendFormat("//todo {0}\n", sElemName);
sb.AppendFormat("//todo {0}\n", sTodo);
}
}
string ProcessJSTypeToXml(TypeCode oTypeCode, bool bEncode, out bool bTodo)
@ -367,23 +386,33 @@ namespace codegen
sRes = "WriteXmlNullableAttributeBool";
break;
case TypeCode.Byte:
sRes = "WriteXmlNullableAttributeByte";
break;
case TypeCode.SByte:
sRes = "WriteXmlNullableAttributeSByte";
break;
case TypeCode.Int16:
case TypeCode.Int32:
sRes = "WriteXmlNullableAttributeInt";
break;
case TypeCode.UInt16:
case TypeCode.UInt32:
sRes = "WriteXmlNullableAttributeNumber";
sRes = "WriteXmlNullableAttributeUInt";
break;
case TypeCode.Int64:
bTodo = true;
sRes = "WriteXmlNullableAttributeNumber";
sRes = "WriteXmlNullableAttributeInt64";
break;
case TypeCode.UInt64:
bTodo = true;
sRes = "WriteXmlNullableAttributeUInt64";
break;
case TypeCode.Single:
case TypeCode.Double:
sRes = "WriteXmlNullableAttributeNumber";
sRes = "WriteXmlNullableAttributeDouble";
break;
default:
sRes = bEncode ? "WriteXmlNullableAttributeString" : "WriteXmlNullableAttributeStringEncode";
sRes = bEncode ? "WriteXmlNullableAttributeStringEncode" : "WriteXmlNullableAttributeString";
break;
}
return sRes;
@ -399,14 +428,11 @@ namespace codegen
sb.AppendFormat("switch (reader.GetNameNoNS()) {{\n");
for (int i = 0; i < aAttributes.Count; ++i)
{
sb.AppendFormat("case \"{0}\" : {{\n", aAttributes[i].sName);
sb.AppendFormat("break;");
sb.AppendFormat("}}\n");
ProcessAttributeJSFromXml(sb, oGenClass, aAttributes[i], i, aAttributes[i].sName);
ProcessAttributeJSFromXml(sb, oGenClass, aAttributes[i], i);
}
sb.AppendFormat("}}\n");
sb.AppendFormat("}}\n");
sb.AppendFormat("}}\n");
sb.AppendFormat("}};\n");
}
sb.AppendFormat("{0}.prototype.fromXml = function(reader) {{\n", oGenClass.sName);
if (aAttributes.Count > 0)
@ -416,16 +442,15 @@ namespace codegen
}
if (aMembers.Count > 0)
{
sb.AppendFormat("var depth = reader.GetDepth();\n");
sb.AppendFormat("var elem, depth = reader.GetDepth();\n");
sb.AppendFormat("while (reader.ReadNextSiblingNode(depth)) {{\n");
sb.AppendFormat("var name = reader.GetNameNoNS();\n");
sb.AppendFormat("switch (reader.GetNameNoNS()) {{\n");
for (int i = 0; i < aMembers.Count; ++i)
{
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())
{
@ -435,19 +460,19 @@ namespace codegen
string sRead;
if (true == aMembers[i].bIsArrayTypesHidden)
{
sb.AppendFormat("var elem = new {0}();\n", oGenMemberTmp.sType);
sb.AppendFormat("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 = 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");
@ -455,13 +480,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");
@ -473,15 +498,15 @@ namespace codegen
{
sb.AppendFormat("reader.ReadTillEnd();\n");
}
sb.AppendFormat("}}\n");
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)
{
@ -492,13 +517,13 @@ namespace codegen
if (oGenClassMember.bIsEnum)
{
bTodo = false;
sb.AppendFormat("case \"{0}\": {{\nthis.{1} = FromXml_{1}(reader.GetValue());\n break;\n }}\n", sElemName, sElemName, GetEnumClassName(oGenMember.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)
@ -511,17 +536,26 @@ namespace codegen
sRes = "GetValueBool";
break;
case TypeCode.Byte:
sRes = "GetValueByte";
break;
case TypeCode.SByte:
sRes = "GetValueSByte";
break;
case TypeCode.Int16:
case TypeCode.Int32:
case TypeCode.UInt16:
case TypeCode.UInt32:
sRes = "GetValueInt";
break;
case TypeCode.UInt16:
case TypeCode.UInt32:
sRes = "GetValueUInt";
break;
case TypeCode.Int64:
bTodo = true;
sRes = "GetValueInt64";
break;
case TypeCode.UInt64:
bTodo = true;
sRes = "GetValueInt";
sRes = "GetValueUInt64";
break;
case TypeCode.Single:
case TypeCode.Double:
@ -536,24 +570,26 @@ namespace codegen
string getNameWithPrefix(GenClassPivot oGenClass, GenMemberPivot oGenMember, string sRootNamespace, out string sTodo)
{
sTodo = "";
string sShortNamespace = "";
if (true == oGenMember.bQualified)
{
string sMemberNamespace = null;
GenClassPivot oGenClassMember = null;
if (null != oGenMember.sNamespace)
sMemberNamespace = oGenMember.sNamespace;
else if (null != oGenMember.sType && m_mapProcessedClasses.TryGetValue(oGenMember.sType, out oGenClassMember))
sMemberNamespace = oGenClassMember.sNamespace;
else
sMemberNamespace = oGenClass.sNamespace;
if (null != sMemberNamespace && sRootNamespace != sMemberNamespace)
{
m_mapNamespaceToPrefix.TryGetValue(sMemberNamespace, out sShortNamespace);
sTodo = String.Format("xml namespace {0}", sShortNamespace);
}
}
return sShortNamespace + oGenMember.sName;
return toXmlNaspace + oGenMember.sName;
//string sShortNamespace = "";
//if (true == oGenMember.bQualified)
//{
// string sMemberNamespace = null;
// GenClassPivot oGenClassMember = null;
// if (null != oGenMember.sNamespace)
// sMemberNamespace = oGenMember.sNamespace;
// else if (null != oGenMember.sType && m_mapProcessedClasses.TryGetValue(oGenMember.sType, out oGenClassMember))
// sMemberNamespace = oGenClassMember.sNamespace;
// else
// sMemberNamespace = oGenClass.sNamespace;
// if (null != sMemberNamespace && sRootNamespace != sMemberNamespace)
// {
// m_mapNamespaceToPrefix.TryGetValue(sMemberNamespace, out sShortNamespace);
// sTodo = String.Format("xml namespace {0}", sShortNamespace);
// }
//}
//return sShortNamespace + oGenMember.sName;
}
#endregion
#endregion

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"/>

Some files were not shown because too many files have changed in this diff Show More