@openxmldev/linq-to-xml
Version:
LINQ to XML for TypeScript
80 lines • 2.4 kB
JavaScript
/**
* @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