typesxml
Version:
Open source XML library written in TypeScript
129 lines (128 loc) • 5.31 kB
TypeScript
/*******************************************************************************
* Copyright (c) 2023-2026 Maxprograms.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse License 1.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-v10.html
*
* Contributors:
* Maxprograms - initial API and implementation
*******************************************************************************/
import { Readable } from "node:stream";
import { Catalog } from "./Catalog.js";
import { ContentHandler } from "./ContentHandler.js";
import { FileReader } from "./FileReader.js";
import { StreamReader } from "./StreamReader.js";
import { StringReader } from "./StringReader.js";
import { XMLAttribute } from "./XMLAttribute.js";
import { type AttributeDefault } from "./XMLSchemaParser.js";
export interface ParseSourceOptions {
basePath?: string;
pseudoFileName?: string;
virtualPath?: string;
}
export interface StreamParseOptions extends ParseSourceOptions {
encoding?: BufferEncoding;
}
export type ParserInputSource = FileReader | StringReader | StreamReader;
type SchemaAttributeDefault = AttributeDefault;
export declare class SAXParser {
private static readonly SUPPORTED_ENCODINGS;
private static readonly ENCODING_NAME_PATTERN;
contentHandler: ContentHandler | undefined;
reader: ParserInputSource | undefined;
pointer: number;
buffer: string;
elementStack: number;
elementNameStack: string[];
childrenNames: Array<string[]>;
characterRun: string;
rootParsed: boolean;
xmlVersion: string;
currentFile: string | undefined;
catalog: Catalog | undefined;
validating: boolean;
relaxNGDefaultAttributes: Map<string, Map<string, SchemaAttributeDefault>>;
schemaDefaultAttributes: Map<string, Map<string, SchemaAttributeDefault>>;
processedSchemaLocations: Set<string>;
failedSchemaLocations: Set<string>;
namespaceContextStack: Array<Map<string, string>>;
processedNamespaces: Set<string>;
failedNamespaces: Set<string>;
isRelaxNG: boolean;
static readonly DEFAULT_VIRTUAL_FILENAME: string;
streamingMode: boolean;
sourceEnded: boolean;
documentStarted: boolean;
documentEnded: boolean;
inCDATASection: boolean;
pendingCR: boolean;
readingFromFile: boolean;
internalSubsetApplied: boolean;
xmlDeclarationParsed: boolean;
leadingContentBeforeXmlDeclaration: boolean;
schemaLoadingEnabled: boolean;
constructor();
setContentHandler(contentHandler: ContentHandler): void;
setCatalog(catalog: Catalog): void;
setValidating(validating: boolean): void;
setSchemaLoadingEnabled(enabled: boolean): void;
parseFile(path: string, encoding?: BufferEncoding): void;
parseString(data: string, options?: ParseSourceOptions): void;
parseStream(stream: Readable, options?: StreamParseOptions): Promise<void>;
initializeParsing(reader: ParserInputSource, currentFilePath: string): void;
processSynchronous(): void;
processStreaming(finalizing: boolean): void;
resolveVirtualPath(options?: ParseSourceOptions): string;
tryReadMore(): boolean;
private appendToBuffer;
private flushPendingCR;
ensureDocumentClosed(): void;
ensureLookahead(minRemaining: number): void;
readDocument(): void;
parseEntityReference(): void;
startElement(): void;
endElement(): void;
validateElement(name: string, namespace: string): void;
getDefaultAttributes(elementName: string, attributes: Array<XMLAttribute>): Array<XMLAttribute>;
private appendSchemaDefaultsForElement;
private resolveSchemaAttributeQualifiedName;
private findNamespacePrefix;
private buildSchemaAttributeKey;
private buildNamespaceContext;
protected handleNamespaceDeclarations(attributes: Map<string, string>, namespaceContext: Map<string, string>, previousContext?: Map<string, string>): void;
private propagateNamespaceToGrammar;
private handleSchemaLocationAttributes;
protected tryLoadSchemaForNamespace(namespaceUri: string): void;
private processSchemaReference;
protected loadSchemaDefaults(resolvedPath: string, identifier: string): boolean;
private resolveSchemaLocation;
resolveHttp(url: string): string | undefined;
private mergeSchemaDefaults;
private splitQualifiedName;
protected getNamespaceUriForElement(elementName: string): string | undefined;
cleanCharacterRun(): void;
parseComment(): void;
parseProcessingInstruction(): void;
parseRelaxNG(href: string): void;
private processInternalSubset;
parseDoctype(): void;
private processExternalSubset;
private resolveExternalSubsetLocation;
parsePublicDeclaration(): string[];
parseSystemDeclaration(): string;
parseXMLDeclaration(): void;
lookingAt(text: string): boolean;
private parseAttributePairs;
parseAttributes(text: string): Map<string, string>;
private validateEncodingValue;
private normalizeDTDAttributes;
private normalizeAttributeValue;
private containsNumericCharReference;
private decodeAttributeEntities;
private expandEntityReplacement;
startCDATA(): void;
endCDATA(): void;
}
export {};