Skip to content

Instantly share code, notes, and snippets.

@13xforever
Last active April 18, 2018 08:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 13xforever/cb24b9e2f3335c296eb2 to your computer and use it in GitHub Desktop.
Save 13xforever/cb24b9e2f3335c296eb2 to your computer and use it in GitHub Desktop.
TypeScript typings for IXMLDOMDocument and IXMLDOMSchemaCollection ActiveX objects
declare module ActiveX {
export interface IXMLDOMNode {
attributes: IXMLDOMNamedNodeMap;
baseName?: string;
childNodes: IXMLDOMNodeList;
dataType?: string;
definition?: IXMLDOMNode;
firstChild: IXMLDOMNode;
lastChild: IXMLDOMNode;
namespaceURI?: string;
nextSibling: IXMLDOMNode;
nodeName: string;
nodeType: IXMLDOMNodeType;
nodeTypedValue?: any;
nodeTypeString?: string;
nodeValue: any;
ownerDocument: IXMLDOMDocument;
parentNode: IXMLDOMNode;
parsed?: boolean;
prefix?: string;
previousSibling: IXMLDOMNode;
specified?: boolean;
text?: string;
xml?: string;
appendChild(newChild: IXMLDOMNode): IXMLDOMNode;
cloneNode(deep: boolean): IXMLDOMNode;
hasChildNodes(): boolean;
insertBefore(newChild: IXMLDOMNode, refChild: IXMLDOMNode): IXMLDOMNode; //todo: refChild supposed to be variant
removeChild(childNode: IXMLDOMNode): IXMLDOMNode;
replaceChild(newChild: IXMLDOMNode, oldChild: IXMLDOMNode): IXMLDOMNode;
selectNodes?(expression: string): IXMLDOMNodeList;
selectSingleNode?(query: string): IXMLDOMNode;
transformNode?(stylesheet: IXMLDOMNode): string;
transformNodeToObject?(stylesheet: IXMLDOMNode, outputObject: any): void;
}
export interface IXMLDOMDocument extends IXMLDOMNode {
async?: boolean;
doctype: IXMLDOMDocumentType;
documentElement: IXMLDOMElement;
implementation: IXMLDOMImplementation;
parseError?: IXMLDOMParseError;
preserveWhiteSpace?: boolean;
readyState?: XmlDocumentReadyState;
resolveExternals?: boolean;
url?: string;
validateOnParse?: boolean;
abort?(): void;
createAttribute(name: string): IXMLDOMAttribute;
createCDATASection(data: string): IXMLDOMCDATASection;
createComment(data: string): IXMLDOMComment;
createDocumentFragment(): IXMLDOMDocumentFragment;
createElement(tagName: string): IXMLDOMElement;
createEntityReference(name: string): IXMLDOMEntityReference;
createNode?(type: IXMLDOMNodeType|string, name: string, namespaceURI: string): IXMLDOMNode;
createProcessingInstruction(target: string, data: string): IXMLDOMProcessingInstruction;
createTextNode(data: string): IXMLDOMText;
getElementsByTagName(tagName: string): IXMLDOMNodeList;
load?(xmlSource: any): boolean;
loadXML?(bstrXML: string): boolean;
nodeFromID?(idString: string): IXMLDOMNode;
save?(destination: any): void;
ondataavailable?: () => void;
onreadystatechange?: () => void;
ontransformnode?: (nodeCode: IXMLDOMNode, nodeData: IXMLDOMNode) => boolean;
}
export interface IXMLDOMElement extends IXMLDOMNode {
tagName: string;
getAttribute(name: string): string;
getAttributeNode(name: string): IXMLDOMAttribute;
getElementsByTagName(tagName: string): IXMLDOMNodeList;
normalize(): void;
removeAttribute(name: string): void;
removeAttributeNode(attribute: IXMLDOMAttribute): IXMLDOMAttribute;
setAttribute(name: string, value: any): void;
setAttributeNode(attribute: IXMLDOMAttribute): IXMLDOMAttribute;
}
export interface IXMLDOMCharacterData extends IXMLDOMNode {
data: string;
length: number;
appendData(data: string): void;
deleteData(offset: number, count: number): void;
insertData(offset: number, data: string): void;
replaceData(offset: number, count: number, data: string): void;
substringData(offset: number, count: number): string;
}
export interface IXMLDOMDocumentType extends IXMLDOMNode {
entities: IXMLDOMNamedNodeMap;
name: string;
notations: IXMLDOMNamedNodeMap;
}
export interface IXMLDOMAttribute extends IXMLDOMNode {
name: string;
value: any;
}
export interface IXMLDOMProcessingInstruction extends IXMLDOMNode {
data: string;
target: string;
}
export interface IXMLDOMDocumentFragment extends IXMLDOMNode {
}
export interface IXMLDOMEntityReference extends IXMLDOMNode {
}
export interface IXMLDOMDocument2 extends IXMLDOMDocument {
namespaces: IXMLDOMSchemaCollection;
schemas: IXMLDOMSchemaCollection;
getProperty(name: string): any;
setProperty(name: string, value: any): void;
validate(): IXMLDOMParseError;
}
export interface IXMLDOMText extends IXMLDOMCharacterData {
splitText(offset: number): IXMLDOMText;
}
export interface IXMLDOMComment extends IXMLDOMCharacterData {
}
export interface IXMLDOMCDATASection extends IXMLDOMText {
}
export interface IXMLDOMNodeList {
length: number;
item(index: number): IXMLDOMNode;
nextNode?(): IXMLDOMNode;
reset?(): void;
}
export interface IXMLDOMNamedNodeMap {
length: number;
getNamedItem(name: string): IXMLDOMNode;
getQualifiedItem?(baseName: string, namespaceURI: string): IXMLDOMNode;
item(index: number): IXMLDOMNode;
nextNode?(): IXMLDOMNode;
removeNamedItem(name: string): IXMLDOMNode;
removeQualifiedItem(baseName: string, namespaceURI: string): IXMLDOMNode;
reset(): void;
setNamedItem(newItem: IXMLDOMNode): IXMLDOMNode;
}
export interface IXMLDOMImplementation {
hasFeature(feature: string, version: string): boolean;
}
export interface IXMLDOMParseError {
errorCode: number;
filepos: number;
line: number;
linepos: number;
reason: string;
srcText: string;
url: string;
}
export interface IXMLDOMSchemaCollection {
length: number;
namespaceURI(index: number): string;
validateOnLoad: boolean;
add(namespaceURI: string, schema: string|IXMLDOMNode): void;
addCollection(collection: IXMLDOMSchemaCollection): void;
get(namespaceURI: string): IXMLDOMNode;
getDeclaration(node: IXMLDOMNode): ISchemaItem;
getSchema(namespaceURI: string): ISchema;
remove(namespaceURI: string): void;
validate(): void;
}
export interface IXMLDOMSchemaCollection2 extends IXMLDOMSchemaCollection {
validate(): boolean;
}
export interface ISchema {
attributeGroups: ISchemaItemCollection;
attributes: ISchemaItemCollection;
elements: ISchemaItemCollection;
modelGroups: ISchemaItemCollection;
notations: ISchemaItemCollection;
schemaLocations: ISchemaStringCollection;
targetNamespace: string;
types: ISchemaItemCollection;
version: string;
}
export interface ISchemaItem {
id: string;
itemType: SOMItemType;
name: string;
namespaceURI: string;
schema: ISchema;
unhandledAttributes: ISAXAttributes;
writeAnnotation(...annotationSink: any[]): boolean;
}
export interface ISchemaItemCollection {
item(index: number): ISchemaItem;
length: number;
itemByName(name: string): ISchemaItem;
itemByQName(name: string, namespaceURI: string): ISchemaItem;
}
export interface ISchemaStringCollection {
item(index: number): string;
length: number;
}
export interface ISAXAttributes {
length: number;
getIndexFromName(uri: string, localName: string): number;
getIndexFromQName(qName: string): number;
getLength(): number;
getLocalName(index: number): string;
getName(index: number): any; //uri, localName, qName
getQName(index: number): string;
getType(index: number): string;
getTypeFromName(uri: string, localName: string): string;
getTypeFromQName(qName: string): string;
getURI(index: number): string;
getValue(index: number): string;
getValueFromName(uri: string, localName: string): string;
getValueFromQName(qName: string): string;
}
export interface IXSLProcessor {
input: any;
output: any;
readyState: XslProcessorReadyState;
startMode: string;
startModeURI: string;
stylesheet: IXMLDOMNode;
ownerTemplate: IXSLTemplate;
addObject(obj: any, namespaceURI: string): void;
addParameter(baseName: string, parameter: number|boolean|string|IXMLDOMNode|IXMLDOMNodeList, namespaceURI?: string): void;
reset(): void;
setStartMode(mode: string, namespaceURI?: string): void;
transform(): boolean;
}
export interface IXSLTemplate {
stylesheet: IXMLDOMNode;
createProcessor(): IXSLProcessor;
}
export const enum XmlDocumentReadyState {
Loading = 1,
Loaded = 2,
Interactive = 3,
Completed = 4,
}
export const enum IXMLDOMNodeType {
NODE_ELEMENT = 1, //element
NODE_ATTRIBUTE = 2, //attribute
NODE_TEXT = 3, //text
NODE_CDATA_SECTION = 4, //cdatasection
NODE_ENTITY_REFERENCE = 5, //entityreference
NODE_ENTITY = 6, //entity
NODE_PROCESSING_INSTRUCTION = 7, //processinginstruction
NODE_COMMENT = 8, //comment
NODE_DOCUMENT = 9, //document
NODE_DOCUMENT_TYPE = 10, //documenttype
NODE_DOCUMENT_FRAGMENT = 11, //documentfragment
NODE_NOTATION = 12, //notation
}
export const enum SOMItemType {
SOMITEM_SCHEMA = 0x1000,
SOMITEM_ATTRIBUTE = 0x1001,
SOMITEM_ATTRIBUTEGROUP = 0x1002,
SOMITEM_NOTATION = 0x1003,
//Identity Constraints
SOMITEM_IDENTITYCONSTRAINT = 0x1100,
SOMITEM_KEY = 0x1101,
SOMITEM_KEYREF = 0x1102,
SOMITEM_UNIQUE = 0x1103,
//Types
SOMITEM_ANYTYPE = 0x2000, // also type mask
SOMITEM_DATATYPE = 0x2100, // built-in type mask
SOMITEM_DATATYPE_ANYTYPE = 0x2101,
SOMITEM_DATATYPE_ANYURI = 0x2102,
SOMITEM_DATATYPE_BASE64BINARY = 0x2103,
SOMITEM_DATATYPE_BOOLEAN = 0x2104,
SOMITEM_DATATYPE_BYTE = 0x2105,
SOMITEM_DATATYPE_DATE = 0x2106,
SOMITEM_DATATYPE_DATETIME = 0x2107,
SOMITEM_DATATYPE_DAY = 0x2108,
SOMITEM_DATATYPE_DECIMAL = 0x2109,
SOMITEM_DATATYPE_DOUBLE = 0x210A,
SOMITEM_DATATYPE_DURATION = 0x210B,
SOMITEM_DATATYPE_ENTITIES = 0x210C,
SOMITEM_DATATYPE_ENTITY = 0x210D,
SOMITEM_DATATYPE_FLOAT = 0x210E,
SOMITEM_DATATYPE_HEXBINARY = 0x210F,
SOMITEM_DATATYPE_ID = 0x2110,
SOMITEM_DATATYPE_IDREF = 0x2111,
SOMITEM_DATATYPE_IDREFS = 0x2112,
SOMITEM_DATATYPE_INT = 0x2113,
SOMITEM_DATATYPE_INTEGER = 0x2114,
SOMITEM_DATATYPE_LANGUAGE = 0x2115,
SOMITEM_DATATYPE_LONG = 0x2116,
SOMITEM_DATATYPE_MONTH = 0x2117,
SOMITEM_DATATYPE_MONTHDAY = 0x2118,
SOMITEM_DATATYPE_NAME = 0x2119,
SOMITEM_DATATYPE_NCNAME = 0x211A,
SOMITEM_DATATYPE_NEGATIVEINTEGER = 0x211B,
SOMITEM_DATATYPE_NMTOKEN = 0x211C,
SOMITEM_DATATYPE_NMTOKENS = 0x211D,
SOMITEM_DATATYPE_NONNEGATIVEINTEGER = 0x211E,
SOMITEM_DATATYPE_NONPOSITIVEINTEGER = 0x211F,
SOMITEM_DATATYPE_NORMALIZEDSTRING = 0x2120,
SOMITEM_DATATYPE_NOTATION = 0x2121,
SOMITEM_DATATYPE_POSITIVEINTEGER = 0x2122,
SOMITEM_DATATYPE_QNAME = 0x2123,
SOMITEM_DATATYPE_SHORT = 0x2124,
SOMITEM_DATATYPE_STRING = 0x2125,
SOMITEM_DATATYPE_TIME = 0x2126,
SOMITEM_DATATYPE_TOKEN = 0x2127,
SOMITEM_DATATYPE_UNSIGNEDBYTE = 0x2128,
SOMITEM_DATATYPE_UNSIGNEDINT = 0x2129,
SOMITEM_DATATYPE_UNSIGNEDLONG = 0x212A,
SOMITEM_DATATYPE_UNSIGNEDSHORT = 0x212B,
SOMITEM_DATATYPE_YEAR = 0x212C,
SOMITEM_DATATYPE_YEARMONTH = 0x212D,
SOMITEM_SIMPLETYPE = 0x2200,
SOMITEM_COMPLEXTYPE = 0x2400,
SOMITEM_PARTICLE = 0x4000, // particle mask
SOMITEM_ANY = 0x4001,
SOMITEM_ANYATTRIBUTE = 0x4002,
SOMITEM_ELEMENT = 0x4003,
SOMITEM_GROUP = 0x4100, // group mask
SOMITEM_ALL = 0x4101,
SOMITEM_CHOICE = 0x4102,
SOMITEM_SEQUENCE = 0x4103,
SOMITEM_EMPTYPARTICLE = 0x4104,
SOMITEM_NULL = 0x0800, // null items
SOMITEM_NULL_TYPE = 0x2800,
SOMITEM_NULL_ANY = 0x4801,
SOMITEM_NULL_ANYATTRIBUTE = 0x4802,
SOMITEM_NULL_ELEMENT = 0x4803,
}
export const enum XslProcessorReadyState {
READYSTATE_UNINITIALIZED = 0,
READYSTATE_LOADING = 1,
READYSTATE_LOADED = 2,
READYSTATE_INTERACTIVE = 3,
READYSTATE_COMPLETE = 4,
}
}
@zspitz
Copy link

zspitz commented Jul 12, 2016

You may be interested to know that there is now a place for ActiveX Typescript definitions on DefinitelyTyped. I've also written a tool to generate Typescript definitions from type libraries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment