UNPKG

@openxmldev/linq-to-xml

Version:
80 lines 2.4 kB
/** * @author Thomas Barnekow * @license MIT */ import { XName } from './internal.js'; /** * Represents XML namespaces. */ export class XNamespace { constructor(namespaceName) { this.namespaceName = namespaceName; this.names = new Map(); } /** * Gets the empty namespace. */ static get none() { return XNamespace._none; } /** * Gets the namespace for the `xml` prefix. */ static get xml() { return XNamespace._xml; } /** * Gets the namespace for the `xmlns` prefix. */ static get xmlns() { return XNamespace._xmlns; } /** * Gets the `XNamespace` for the given namespace name. * * @param namespaceName The namespace name, e.g., 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'. * @returns The `XNamespace`. */ static get(namespaceName) { let namespace = XNamespace.namespaces.get(namespaceName); if (!namespace) { namespace = new XNamespace(namespaceName); XNamespace.namespaces.set(namespaceName, namespace); } return namespace; } /** * Gets the `XName` for the given local name, e.g., `body`, `id`. * * @param localName The local name, e.g., `body`. */ getName(localName) { let name = this.names.get(localName); if (!name) { name = new XName(this, localName); this.names.set(localName, name); } return name; } /** * Gets the string representation of this `XNamespace`. * * @returns The string representation of this `XNamespace`. */ toString() { return this.namespaceName; } } /** @internal */ XNamespace.xmlPrefixNamespaceName = 'http://www.w3.org/XML/1998/namespace'; /** @internal */ XNamespace.xmlnsPrefixNamespaceName = 'http://www.w3.org/2000/xmlns/'; XNamespace._none = new XNamespace(''); XNamespace._xml = new XNamespace(XNamespace.xmlPrefixNamespaceName); XNamespace._xmlns = new XNamespace(XNamespace.xmlnsPrefixNamespaceName); XNamespace.namespaces = new Map([ ['', XNamespace._none], [XNamespace.xmlPrefixNamespaceName, XNamespace._xml], [XNamespace.xmlnsPrefixNamespaceName, XNamespace._xmlns], ]); //# sourceMappingURL=XNamespace.js.map