123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /**
- * Copyright (C) 2016-2019 Michael Kourlas
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- import { IStringOptions } from "../options";
- import XmlComment, { IXmlCommentOptions } from "./XmlComment";
- import XmlDecl, { IXmlDeclOptions } from "./XmlDecl";
- import XmlDtd, { IXmlDtdOptions } from "./XmlDtd";
- import XmlElement, { IXmlElementOptions } from "./XmlElement";
- import XmlProcInst, { IXmlProcInstOptions } from "./XmlProcInst";
- /**
- * The options used to create a new document.
- */
- export interface IXmlDocumentOptions {
- /**
- * Whether to throw an exception if basic XML validation fails while
- * building the document.
- */
- validation?: boolean;
- }
- /**
- * Represents a document.
- *
- * A sample document is structured as follows:
- *
- * ```xml
- * <?xml version="1.0" encoding="UTF-8"?>
- * <DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- * "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- * <html>
- * <head>
- * <title>My page title</title>
- * </head>
- * <body>
- * <h1>Welcome!</h1>
- * <p>I hope you enjoy visiting my website.</p>
- * <img src="picture.png"/>
- * </body>
- * </html>
- * ```
- *
- * Each component of the document, such as the declaration, document type
- * definition, and root element, are children of this node.
- *
- * Documents must have exactly one element, which is the document's root
- * element.
- *
- * Documents can have exactly one declaration and one document type definition
- * in that order, so long as they precede the element.
- *
- * Documents can have an unlimited number of comments or processing
- * instructions, so long as they follow the declaration, if one exists.
- */
- export default class XmlDocument {
- private readonly _children;
- private readonly _validation;
- constructor(options: IXmlDocumentOptions);
- /**
- * Adds a comment to this document and returns the new comment.
- */
- comment(options: IXmlCommentOptions): XmlComment<this>;
- /**
- * Adds a declaration to this document and returns the new declaration.
- */
- decl(options?: IXmlDeclOptions): XmlDecl<this>;
- /**
- * Adds a document type definition to this document and returns the new
- * document type definition.
- */
- dtd(options: IXmlDtdOptions): XmlDtd<this>;
- /**
- * Adds the root element to this document and returns the element.
- */
- element(options: IXmlElementOptions): XmlElement<this>;
- /**
- * Adds a processing instruction to this document and returns the new
- * processing instruction.
- */
- procInst(options: IXmlProcInstOptions): XmlProcInst<this>;
- /**
- * Returns an XML string representation of this document using the
- * specified options.
- */
- toString(options?: IStringOptions): string;
- }
|