unioffice/unioffice.go

123 lines
58 KiB
Go
Raw Normal View History

2020-08-23 14:15:53 +00:00
//
// Copyright 2020 FoxyUtils ehf. All rights reserved.
//
// This is a commercial product and requires a license to operate.
// A trial license can be obtained at https://unidoc.io
//
// DO NOT EDIT: generated by unitwist Go source code obfuscator.
//
// Use of this source code is governed by the UniDoc End User License Agreement
// terms that can be accessed at https://unidoc.io/eula/
/*
Package unioffice provides creation, reading, and writing of ECMA 376 Office Open
XML documents, spreadsheets and presentations. It is still early in
development, but is progressing quickly. This library takes a slightly
different approach from others, in that it starts by trying to support all of
the ECMA-376 standard when marshaling/unmarshaling XML documents. From there it
adds wrappers around the ECMA-376 derived types that provide a more convenient
interface.
The raw XML based types reside in the `schema/`` directory. These types are
always accessible from the wrapper types via a `X() method that returns the
raw type. Except for the base documents (document.Document,
spreadsheet.Workbook and presentation.Presentation), the other wrapper types are
value types with non-pointer methods. They exist solely to modify and return
data from one or more XML types.
The packages of interest are github.com/unidoc/unioffice/document,
unidoc/unioffice/spreadsheet and github.com/unidoc/unioffice/presentation.
*/
2021-11-10 11:45:21 +00:00
package unioffice ;import (_d "encoding/xml";_ad "errors";_b "fmt";_fc "github.com/unidoc/unioffice/algo";_ff "github.com/unidoc/unioffice/common/logger";_e "log";_ee "reflect";_eg "strings";_a "unicode";);var Log =_e .Printf ;
2021-08-23 20:44:48 +00:00
2021-09-22 16:41:01 +00:00
// AbsoluteFilename returns the full path to a file from the root of the zip
// container. Index is used in some cases for files which there may be more than
// one of (e.g. worksheets/drawings/charts)
2021-11-10 11:45:21 +00:00
func AbsoluteFilename (dt DocType ,typ string ,index int )string {switch typ {case CorePropertiesType :return "\u0064\u006f\u0063\u0050\u0072\u006f\u0070\u0073\u002f\u0063\u006f\u0072e\u002e\u0078\u006d\u006c";case CustomPropertiesType :return "\u0064\u006f\u0063\u0050ro\u0070\u0073\u002f\u0063\u0075\u0073\u0074\u006f\u006d\u002e\u0078\u006d\u006c";case ExtendedPropertiesType ,ExtendedPropertiesTypeStrict :return "\u0064\u006fc\u0050\u0072\u006fp\u0073\u002f\u0061\u0070\u0070\u002e\u0078\u006d\u006c";case ThumbnailType ,ThumbnailTypeStrict :return "\u0064\u006f\u0063Pr\u006f\u0070\u0073\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c\u002e\u006a\u0070\u0065\u0067";case CustomXMLType :return _b .Sprintf ("c\u0075s\u0074\u006f\u006d\u0058\u006d\u006c\u002f\u0069t\u0065\u006d\u0025\u0064.x\u006d\u006c",index );case PresentationPropertiesType :return "\u0070\u0070\u0074\u002f\u0070\u0072\u0065\u0073\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c";case ViewPropertiesType :switch dt {case DocTypePresentation :return "\u0070\u0070\u0074\u002f\u0076\u0069\u0065\u0077\u0050\u0072\u006f\u0070s\u002e\u0078\u006d\u006c";case DocTypeSpreadsheet :return "\u0078\u006c/\u0076\u0069\u0065w\u0050\u0072\u006f\u0070\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077o\u0072d\u002f\u0076\u0069\u0065\u0077P\u0072\u006fp\u0073\u002e\u0078\u006d\u006c";};case TableStylesType :switch dt {case DocTypePresentation :return "\u0070\u0070\u0074\u002fta\u0062\u006c\u0065\u0053\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypeSpreadsheet :return "\u0078l\u002ft\u0061\u0062\u006c\u0065\u0053t\u0079\u006ce\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "w\u006fr\u0064\u002f\u0074\u0061\u0062\u006c\u0065\u0053t\u0079\u006c\u0065\u0073.x\u006d\u006c";};case HyperLinkType :return "";case OfficeDocumentType ,OfficeDocumentTypeStrict :switch dt {case DocTypeSpreadsheet :return "\u0078l\u002fw\u006f\u0072\u006b\u0062\u006f\u006f\u006b\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077\u006f\u0072\u0064\u002f\u0064\u006f\u0063\u0075\u006d\u0065\u006et\u002e\u0078\u006d\u006c";case DocTypePresentation :return "p\u0070t\u002f\u0070\u0072\u0065\u0073\u0065\u006e\u0074a\u0074\u0069\u006f\u006e.x\u006d\u006c";default:_ff .Log .Debug ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case ThemeType ,ThemeTypeStrict ,ThemeContentType :switch dt {case DocTypeSpreadsheet :return _b .Sprintf ("x\u006c/\u0074\u0068\u0065\u006d\u0065\u002f\u0074\u0068e\u006d\u0065\u0025\u0064.x\u006d\u006c",index );case DocTypeDocument :return _b .Sprintf ("\u0077\u006f\u0072\u0064/t\u0068\u0065\u006d\u0065\u002f\u0074\u0068\u0065\u006d\u0065\u0025\u0064\u002e\u0078m\u006c",index );case DocTypePresentation :return _b .Sprintf ("p\u0070\u0074\u002f\u0074he\u006de\u002f\u0074\u0068\u0065\u006de\u0025\u0064\u002e\u0078\u006d\u006c",index );default:_ff .Log .Debug ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case StylesType ,StylesTypeStrict :switch dt {case DocTypeSpreadsheet :return "\u0078\u006c\u002f\u0073\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypeDocument :return "\u0077o\u0072d\u002f\u0073\u0074\u0079\u006c\u0065\u0073\u002e\u0078\u006d\u006c";case DocTypePresentation :return "\u0070\u0070\u0074\u002f\u0073\u0074\u0079\u006c\u0065s\u002e\u0078\u006d\u006c";default:_ff .Log .Debug ("\u0075\u006e\u0073u\u0070\u0070\u006f\u0072t\u0065\u0064\u0020\u0074\u0079\u0070\u0065 \u0025\u0073\u0020\u0070\u0061\u0069\u0072\u0020\u0061\u006e\u0064\u0020\u0025\u0076",typ ,dt );};case ChartType ,ChartTypeStrict ,ChartContentType :switch dt {case DocTypeSpreadsheet :return _b .Sprintf ("x\u006c\u002f\u0063\u0068ar\u0074s\u002f\u0063\u0068\u0061\u0072t\u0025\u0064\u002e\u0078\u006d\u006c",index );case DocTypeDocument :return _b .Sprintf
2021-06-16 07:10:52 +00:00
2021-11-10 11:45:21 +00:00
// Bool returns a copy of v as a pointer.
func Bool (v bool )*bool {_dab :=v ;return &_dab };func (_gae *nsSet )getPrefix (_be string )string {if _efa ,_ecc :=_ea [_be ];_ecc {if _ ,_dgba :=_gae ._gc [_efa ];!_dgba {_gae ._gc [_efa ]=_be ;_gae ._fa [_be ]=_efa ;_gae ._fgd =append (_gae ._fgd ,_efa );};return _efa ;};_be =_eg .TrimFunc (_be ,func (_bf rune )bool {return !_a .IsLetter (_bf )});if _df ,_aae :=_gae ._fa [_be ];_aae {return _df ;};_ae :=_eg .Split (_be ,"\u002f");_ae =_eg .Split (_ae [len (_ae )-1],"\u003a");_acg :=_ae [len (_ae )-1];_cc :=0;_gbbg :=[]byte {};for {if _cc < len (_acg ){_gbbg =append (_gbbg ,_acg [_cc ]);}else {_gbbg =append (_gbbg ,'_');};_cc ++;if _ ,_bfd :=_gae ._gc [string (_gbbg )];!_bfd {_gae ._gc [string (_gbbg )]=_be ;_gae ._fa [_be ]=string (_gbbg );_gae ._fgd =append (_gae ._fgd ,string (_gbbg ));return string (_gbbg );};};};const MinGoVersion =_gfg ;
2021-03-16 20:51:18 +00:00
2021-11-10 11:45:21 +00:00
// Float32 returns a copy of v as a pointer.
func Float32 (v float32 )*float32 {_cf :=v ;return &_cf };
2021-01-04 16:11:39 +00:00
2021-11-10 11:45:21 +00:00
// Uint8 returns a copy of v as a pointer.
func Uint8 (v uint8 )*uint8 {_edd :=v ;return &_edd };
2021-01-04 16:11:39 +00:00
2021-09-22 16:41:01 +00:00
// String returns a copy of v as a pointer.
2021-11-10 11:45:21 +00:00
func String (v string )*string {_cg :=v ;return &_cg };
2021-01-04 16:11:39 +00:00
2021-11-10 11:45:21 +00:00
// Int64 returns a copy of v as a pointer.
func Int64 (v int64 )*int64 {_gbg :=v ;return &_gbg };
2021-06-16 07:10:52 +00:00
2021-11-10 11:45:21 +00:00
// DisableLogging sets the Log function to a no-op so that any log messages are
// silently discarded.
func DisableLogging (){Log =func (string ,...interface{}){}};
2021-09-22 16:41:01 +00:00
2021-11-10 11:45:21 +00:00
// NeedsSpacePreserve returns true if the string has leading or trailing space.
func NeedsSpacePreserve (s string )bool {if len (s )==0{return false ;};switch s [0]{case '\t','\n','\v','\f','\r',' ',0x85,0xA0:return true ;};switch s [len (s )-1]{case '\t','\n','\v','\f','\r',' ',0x85,0xA0:return true ;};return false ;};
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// Uint32 returns a copy of v as a pointer.
func Uint32 (v uint32 )*uint32 {_dgb :=v ;return &_dgb };
2021-03-16 20:51:18 +00:00
2021-09-22 16:41:01 +00:00
// Float64 returns a copy of v as a pointer.
2021-11-10 11:45:21 +00:00
func Float64 (v float64 )*float64 {_af :=v ;return &_af };
2021-05-31 16:22:30 +00:00
2021-11-10 11:45:21 +00:00
// Uint16 returns a copy of v as a pointer.
func Uint16 (v uint16 )*uint16 {_edb :=v ;return &_edb };
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// AbsoluteImageFilename returns the full path to an image from the root of the
// zip container.
func AbsoluteImageFilename (dt DocType ,index int ,fileExtension string )string {_ba :=AbsoluteFilename (dt ,ImageType ,index );return _ba [0:len (_ba )-3]+fileExtension ;};var _eeb =map[string ]interface{}{};
// UnmarshalXML implements the xml.Unmarshaler interface.
func (_eeg *XSDAny )UnmarshalXML (d *_d .Decoder ,start _d .StartElement )error {_dad :=any {};if _fd :=d .DecodeElement (&_dad ,&start );_fd !=nil {return _fd ;};_aca (&_dad );_eeg .XMLName =_dad .XMLName ;_eeg .Attrs =_dad .Attrs ;_eeg .Data =_dad .Data ;_eeg .Nodes =_aff (_dad .Nodes );return nil ;};var _ea =func ()map[string ]string {_cd :=map[string ]string {};for _gd ,_bcd :=range _gbgb {_cd [_bcd ]=_gd ;};return _cd ;}();const (Unknown DocType =iota ;DocTypeSpreadsheet ;DocTypeDocument ;DocTypePresentation ;);
// MarshalXML implements the xml.Marshaler interface.
func (_edbd *XSDAny )MarshalXML (e *_d .Encoder ,start _d .StartElement )error {start .Name =_edbd .XMLName ;start .Attr =_edbd .Attrs ;_db :=any {};_db .XMLName =_edbd .XMLName ;_db .Attrs =_edbd .Attrs ;_db .Data =_edbd .Data ;_db .Nodes =_ge (_edbd .Nodes );_dba :=[]string {};_dbc :=false ;_adfb :=nsSet {_fa :map[string ]string {},_gc :map[string ]string {}};_edbd .collectNS (&_adfb );_adfb .applyToNode (&_db );for _ ,_gg :=range _adfb ._fgd {if _ ,_aee :=_bac [_gg ];_aee {_dba =append (_dba ,_gg );};_bab :=_adfb ._gc [_gg ];_db .Attrs =append (_db .Attrs ,_d .Attr {Name :_d .Name {Local :"\u0078\u006d\u006c\u006e\u0073\u003a"+_gg },Value :_bab });if _gg =="\u006d\u0063"{_dbc =true ;};};for _ ,_cdd :=range _db .Attrs {if _cdd .Name .Local =="\u006d\u0063\u003aI\u0067\u006e\u006f\u0072\u0061\u0062\u006c\u0065"{_dbc =false ;break ;};};if _dbc &&len (_dba )> 0{_db .Attrs =append (_db .Attrs ,_d .Attr {Name :_d .Name {Local :"\u006d\u0063\u003aI\u0067\u006e\u006f\u0072\u0061\u0062\u006c\u0065"},Value :_eg .Join (_dba ,"\u0020")});};return e .Encode (&_db );};
2021-07-30 17:03:26 +00:00
2021-09-22 16:41:01 +00:00
// RelativeImageFilename returns an image filename relative to the source file referenced
// from a relationships file. It is identical to RelativeFilename but is used particularly for images
// in order to handle different image formats.
2021-11-10 11:45:21 +00:00
func RelativeImageFilename (dt DocType ,relToTyp ,typ string ,index int ,fileExtension string )string {_ec :=RelativeFilename (dt ,relToTyp ,typ ,index );return _ec [0:len (_ec )-3]+fileExtension ;};const (ContentTypesFilename ="\u005b\u0043\u006f\u006ete\u006e\u0074\u005f\u0054\u0079\u0070\u0065\u0073\u005d\u002e\u0078\u006d\u006c";BaseRelsFilename ="_\u0072\u0065\u006c\u0073\u002f\u002e\u0072\u0065\u006c\u0073";);
2021-09-22 16:41:01 +00:00
2021-11-10 11:45:21 +00:00
// Stringf formats according to a format specifier and returns a pointer to the
// resulting string.
func Stringf (f string ,args ...interface{})*string {_afa :=_b .Sprintf (f ,args ...);return &_afa };type nsSet struct{_fa map[string ]string ;_gc map[string ]string ;_fgd []string ;};func _aca (_gbb *any ){for _ ,_ege :=range _gbb .Nodes {_aca (_ege );};};
2021-09-22 16:41:01 +00:00
2021-11-10 11:45:21 +00:00
// Any is the interface used for marshaling/unmarshaling xsd:any
type Any interface{MarshalXML (_g *_d .Encoder ,_bc _d .StartElement )error ;UnmarshalXML (_ag *_d .Decoder ,_c _d .StartElement )error ;};
2021-09-22 16:41:01 +00:00
2021-11-10 11:45:21 +00:00
// CreateElement creates an element with the given namespace and name. It is
// used to unmarshal some xsd:any elements to the appropriate concrete type.
func CreateElement (start _d .StartElement )(Any ,error ){_ac ,_dg :=_eeb [start .Name .Space +"\u002f"+start .Name .Local ];if !_dg {_dgg :=&XSDAny {};return _dgg ,nil ;};_aa :=_ee .ValueOf (_ac );_fcb :=_aa .Call (nil );if len (_fcb )!=1{return nil ,_b .Errorf ("\u0063\u006fn\u0073\u0074\u0072\u0075\u0063t\u006f\u0072\u0020\u0066\u0075n\u0063\u0074\u0069\u006f\u006e\u0020\u0073\u0068\u006f\u0075\u006c\u0064\u0020\u0072\u0065\u0074\u0075\u0072\u006e\u0020\u006f\u006e\u0065\u0020\u0076\u0061\u006c\u0075\u0065\u002c\u0020\u0067\u006f\u0074\u0020\u0025\u0064",len (_fcb ));};_ega ,_dg :=_fcb [0].Interface ().(Any );if !_dg {return nil ,_ad .New ("\u0063o\u006e\u0073t\u0072\u0075\u0063\u0074o\u0072\u0020\u0066u\u006e\u0063\u0074\u0069\u006f\u006e\u0020\u0073\u0068ou\u006c\u0064\u0020r\u0065\u0074u\u0072\u006e\u0020\u0061\u006e\u0079 \u0027\u0041n\u0079\u0027");};return _ega ,nil ;};const _gfg =true ;func _ge (_def []*XSDAny )[]*any {_gea :=[]*any {};for _ ,_gcf :=range _def {_bcbc :=&any {};_bcbc .XMLName =_gcf .XMLName ;_gfgb :=[]_d .Attr {};for _ ,_fag :=range _gcf .Attrs {if _fag .Name .Local !="\u0078\u006d\u006cn\u0073"{_gfgb =append (_gfgb ,_fag );};};_bcbc .Attrs =_gfgb ;_bcbc .Data =_gcf .Data ;_bcbc .Nodes =_ge (_gcf .Nodes );_gea =append (_gea ,_bcbc );};return _gea ;};
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// XSDAny is used to marshal/unmarshal xsd:any types in the OOXML schema.
type XSDAny struct{XMLName _d .Name ;Attrs []_d .Attr ;Data []byte ;Nodes []*XSDAny ;};
2021-05-31 16:22:30 +00:00
2021-09-22 16:41:01 +00:00
// Int32 returns a copy of v as a pointer.
2021-11-10 11:45:21 +00:00
func Int32 (v int32 )*int32 {_de :=v ;return &_de };
2021-08-23 20:44:48 +00:00
2021-11-10 11:45:21 +00:00
// RelativeFilename returns a filename relative to the source file referenced
// from a relationships file. Index is used in some cases for files which there
// may be more than one of (e.g. worksheets/drawings/charts)
func RelativeFilename (dt DocType ,relToTyp ,typ string ,index int )string {_adf :=AbsoluteFilename (dt ,typ ,index );if relToTyp ==""{return _adf ;};_fg :=AbsoluteFilename (dt ,relToTyp ,index );_da :=_eg .Split (_fg ,"\u002f");_ef :=_eg .Split (_adf ,"\u002f");_gb :=0;for _agc :=0;_agc < len (_da );_agc ++{if _da [_agc ]==_ef [_agc ]{_gb ++;};if _agc +1==len (_ef ){break ;};};_da =_da [_gb :];_ef =_ef [_gb :];_gf :=len (_da )-1;if _gf > 0{return _fc .RepeatString ("\u002e\u002e\u002f",_gf )+_eg .Join (_ef ,"\u002f");};return _eg .Join (_ef ,"\u002f");};
2021-05-31 16:22:30 +00:00
2021-09-22 16:41:01 +00:00
// AddPreserveSpaceAttr adds an xml:space="preserve" attribute to a start
// element if it is required for the string s.
2021-11-10 11:45:21 +00:00
func AddPreserveSpaceAttr (se *_d .StartElement ,s string ){if NeedsSpacePreserve (s ){se .Attr =append (se .Attr ,_d .Attr {Name :_d .Name {Local :"\u0078m\u006c\u003a\u0073\u0070\u0061\u0063e"},Value :"\u0070\u0072\u0065\u0073\u0065\u0072\u0076\u0065"});};};var _gbgb =map[string ]string {"\u0061":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065m\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006cf\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072\u0061\u0077\u0069\u006e\u0067m\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u006d\u0061\u0069\u006e","\u0064\u0063":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0072\u0067/\u0064c\u002f\u0065\u006c\u0065\u006d\u0065\u006e\u0074\u0073\u002f\u0031\u002e\u0031\u002f","\u0064c\u0074\u0065\u0072\u006d\u0073":"\u0068t\u0074\u0070\u003a\u002f/\u0070\u0075\u0072\u006c\u002eo\u0072g\u002fd\u0063\u002f\u0074\u0065\u0072\u006d\u0073/","\u006d\u0063":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006e\u0078m\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u006d\u0061\u0072\u006b\u0075\u0070\u002d\u0063\u006f\u006d\u0070\u0061\u0074\u0069\u0062\u0069\u006ci\u0074\u0079\u002f\u0032\u00300\u0036","\u006d\u006f":"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068e\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002ec\u006f\u006d\u002f\u006f\u0066fi\u0063\u0065\u002f\u006d\u0061\u0063\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0032\u0030\u0030\u0038\u002f\u006d\u0061\u0069\u006e","\u0077":"ht\u0074\u0070:\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073.\u006f\u0070\u0065\u006e\u0078\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063\u0065s\u0073i\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u00306\u002fm\u0061\u0069n","\u0077\u0031\u0030":"\u0075\u0072n\u003a\u0073\u0063\u0068e\u006d\u0061s\u002d\u006d\u0069\u0063\u0072\u006f\u0073\u006ff\u0074\u002d\u0063\u006f\u006d\u003a\u006f\u0066\u0066\u0069\u0063\u0065:\u0077\u006f\u0072\u0064","\u0077\u0031\u0034":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0031\u0030\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u0031\u0035":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0031\u0032\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u006e\u0065":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073c\u0068\u0065\u006d\u0061\u0073.\u006d\u0069\u0063\u0072\u006f\u0073\u006f\u0066\u0074\u002e\u0063\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006f\u0072\u0064\u002f\u0032\u0030\u0030\u0036\u002f\u0077\u006f\u0072\u0064\u006d\u006c","\u0077\u0070":"\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006f\u0070\u0065\u006ex\u006d\u006c\u0066\u006f\u0072\u006d\u0061\u0074\u0073\u002e\u006f\u0072\u0067\u002f\u0064\u0072a\u0077\u0069\u006e\u0067\u006d\u006c\u002f\u0032\u0030\u0030\u0036\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063\u0065\u0073\u0073\u0069n\u0067\u0044\u0072\u0061\u0077i\u006e\u0067","\u0077\u0070\u0031\u0034":"\u0068\u0074\u0074\u0070\u003a\u002f/\u0073\u0063\u0068\u0065\u006da\u0073\u002e\u006d\u0069\u0063\u0072o\u0073\u006f\u0066\u0074\u002ec\u006f\u006d\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u002f\u0077\u006fr\u0064\u002f\u0032\u0030\u0031\u0030\u002f\u0077\u006f\u0072\u0064\u0070\u0072\u006f\u0063e\u0073\u0073\u0069\u006e\u0067\u0044\u0072\u0061w\u0069\u006e\u0067","\u0077\u0070\u0063":"\u0068\u0074t\u0070\u003a\u002f\u002f\u0073\u0063\u0068\u0065\u006d\u0061\u0073\u002e\u006d\u0069\u006
2021-07-30 17:03:26 +00:00
2021-09-22 16:41:01 +00:00
// RegisterConstructor registers a constructor function used for unmarshaling
// xsd:any elements.
2021-11-10 11:45:21 +00:00
func RegisterConstructor (ns ,name string ,fn interface{}){_eeb [ns +"\u002f"+name ]=fn };
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// Int8 returns a copy of v as a pointer.
func Int8 (v int8 )*int8 {_ffe :=v ;return &_ffe };const (OfficeDocumentTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072g\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u006f\u0066\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006de\u006e\u0074";StylesTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006frg\u002fo\u006f\u0078\u006d\u006c\u002f\u006f\u0066\u0066\u0069\u0063\u0065\u0044o\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068i\u0070\u0073\u002f\u0073\u0074\u0079\u006c\u0065\u0073";ThemeTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0074\u0068\u0065\u006d\u0065";ControlTypeStrict ="\u0068t\u0074\u0070\u003a\u002f\u002f\u0070\u0075rl\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006dl\u002f\u006ff\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068ip\u0073\u002f\u0063o\u006e\u0074\u0072\u006f\u006c";SettingsTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002eo\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006ff\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u0073e\u0074\u0074i\u006eg\u0073";ImageTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0069\u006d\u0061\u0067\u0065";CommentsTypeStrict ="\u0068\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002eo\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002f\u006ff\u0066\u0069\u0063\u0065\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074i\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u0063o\u006d\u006de\u006et\u0073";ThumbnailTypeStrict ="\u0068\u0074\u0074\u0070\u003a/\u002f\u0070\u0075\u0072\u006c\u002eo\u0063\u006c\u0063\u002e\u006f\u0072\u0067/\u006f\u006f\u0078m\u006c\u002f\u006f\u0066f\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070s\u002f\u006d\u0065\u0074\u0061\u0064\u0061\u0074\u0061\u002f\u0074\u0068\u0075\u006d\u0062\u006e\u0061\u0069\u006c";DrawingTypeStrict ="\u0068t\u0074\u0070\u003a\u002f\u002f\u0070\u0075rl\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006dl\u002f\u006ff\u0066\u0069\u0063e\u0044\u006f\u0063\u0075\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006fn\u0073\u0068ip\u0073\u002f\u0064r\u0061\u0077\u0069\u006e\u0067";ChartTypeStrict ="h\u0074\u0074\u0070\u003a\u002f\u002f\u0070\u0075\u0072\u006c\u002e\u006f\u0063\u006c\u0063\u002e\u006f\u0072\u0067\u002f\u006f\u006f\u0078\u006d\u006c\u002fo\u0066f\u0069\u0063\u0065\u0044o\u0063\u0075m\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0074\u0069\u006f\u006e\u0073\u0068\u0069\u0070\u0073\u002f\u0063\u0068\u0061\u0072\u0074";ExtendedPropertiesTypeStrict ="\u0068\u0074\u0074\u0070\u003a/\u002f\u0070\u0075\u0072\u006c\u002eo\u0063\u006c\u0063\u002e\u006f\u0072\u0067/\u006f\u006f\u0078m\u006c\u002f\u006f\u0066f\u0069\u0063\u0065\u0044\u006f\u0063u\u006d\u0065\u006e\u0074\u002f\u0072\u0065\u006c\u0061\u0
2021-07-30 17:03:26 +00:00
2021-11-10 11:45:21 +00:00
// DocType represents one of the three document types supported (docx/xlsx/pptx)
type DocType byte ;func _aff (_eac []*any )[]*XSDAny {_dd :=[]*XSDAny {};for _ ,_ded :=range _eac {_bg :=&XSDAny {};_bg .XMLName =_ded .XMLName ;_bg .Attrs =_ded .Attrs ;_bg .Data =_ded .Data ;_bg .Nodes =_aff (_ded .Nodes );_dd =append (_dd ,_bg );};return _dd ;};func (_bcb nsSet )applyToNode (_ffc *any ){if _ffc .XMLName .Space ==""{return ;};_fad :=_bcb .getPrefix (_ffc .XMLName .Space );_ffc .XMLName .Space ="";_ffc .XMLName .Local =_fad +"\u003a"+_ffc .XMLName .Local ;_fe :=_ffc .Attrs ;_ffc .Attrs =nil ;for _ ,_acc :=range _fe {if _acc .Name .Space =="\u0078\u006d\u006cn\u0073"{continue ;};if _acc .Name .Space !=""{_fb :=_bcb .getPrefix (_acc .Name .Space );_acc .Name .Space ="";_acc .Name .Local =_fb +"\u003a"+_acc .Name .Local ;};_ffc .Attrs =append (_ffc .Attrs ,_acc );};for _ ,_fdg :=range _ffc .Nodes {_bcb .applyToNode (_fdg );};};func (_fde *XSDAny )collectNS (_egg *nsSet ){if _fde .XMLName .Space !=""{_egg .getPrefix (_fde .XMLName .Space );};for _ ,_gaa :=range _fde .Attrs {if _gaa .Name .Space !=""&&_gaa .Name .Space !="\u0078\u006d\u006cn\u0073"{_egg .getPrefix (_gaa .Name .Space );};};for _ ,_dgc :=range _fde .Nodes {_dgc .collectNS (_egg );};};
// Uint64 returns a copy of v as a pointer.
func Uint64 (v uint64 )*uint64 {_ed :=v ;return &_ed };