comparison xml/en/docs/njs/reference.xml @ 2934:41870b949ac9

Documented XML module in njs.
author Yaroslav Zhuravlev <yar@nginx.com>
date Thu, 02 Feb 2023 16:22:15 +0000
parents 386ba17fac23
children 918ec12be507
comparison
equal deleted inserted replaced
2933:386ba17fac23 2934:41870b949ac9
7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd"> 7 <!DOCTYPE article SYSTEM "../../../../dtd/article.dtd">
8 8
9 <article name="Reference" 9 <article name="Reference"
10 link="/en/docs/njs/reference.html" 10 link="/en/docs/njs/reference.html"
11 lang="en" 11 lang="en"
12 rev="97"> 12 rev="98">
13 13
14 <section id="summary"> 14 <section id="summary">
15 15
16 <para> 16 <para>
17 <link doc="index.xml">njs</link> provides objects, methods and properties 17 <link doc="index.xml">njs</link> provides objects, methods and properties
1879 is a <literal>CryptoKey</literal> 1879 is a <literal>CryptoKey</literal>
1880 that represents the input to the derivation algorithm 1880 that represents the input to the derivation algorithm
1881 - the initial key material for the derivation function: 1881 - the initial key material for the derivation function:
1882 for example, for <literal>PBKDF2</literal> it might be a password, 1882 for example, for <literal>PBKDF2</literal> it might be a password,
1883 imported as a <literal>CryptoKey</literal> using 1883 imported as a <literal>CryptoKey</literal> using
1884 <link id="crypto_sublte_import_key"><literal>сrypto.subtle.importKey()</literal></link>. 1884 <link id="crypto_subtle_import_key"><literal>сrypto.subtle.importKey()</literal></link>.
1885 </tag-desc> 1885 </tag-desc>
1886 1886
1887 <tag-name id="crypto_derive_key_derivedkeyalg"><literal>derivedKeyAlgorithm</literal></tag-name> 1887 <tag-name id="crypto_derive_key_derivedkeyalg"><literal>derivedKeyAlgorithm</literal></tag-name>
1888 <tag-desc> 1888 <tag-desc>
1889 is an object 1889 is an object
5108 </list> 5108 </list>
5109 </para> 5109 </para>
5110 5110
5111 </section> 5111 </section>
5112 5112
5113
5114 <section id="xml" name="XML">
5115
5116 <para>
5117 The XML module allows working with XML documents
5118 (<link doc="changes.xml" id="njs0.7.10">0.7.10</link>).
5119 The XML module object is returned by
5120 <literal>require('xml')</literal>.
5121 </para>
5122
5123 <para>
5124 Example:
5125 <example>
5126 const xml = require("xml");
5127 let data = `&lt;note&gt;&lt;to b="bar" a= "foo" &gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;&lt;/note&gt;`;
5128 let doc = xml.parse(data);
5129
5130 console.log(doc.note.to.$text) /* 'Tove' */
5131 console.log(doc.note.to.$attr$b) /* 'bar' */
5132 console.log(doc.note.$tags[1].$text) /* 'Jani' */
5133
5134 let dec = new TextDecoder();
5135 let c14n = dec.decode(xml.exclusiveC14n(doc.note));
5136 console.log(c14n) /* '&lt;note&gt;&lt;to a="foo" b="bar"&gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;&lt;/note&gt;' */
5137
5138 c14n = dec.decode(xml.exclusiveC14n(doc.note.to));
5139 console.log(c14n) /* '&lt;to a="foo" b="bar">Tove&lt;/to&gt;' */
5140
5141 c14n = dec.decode(xml.exclusiveC14n(doc.note, doc.note.to /* excluding 'to' */));
5142 console.log(c14n) /* '&lt;note&gt;&lt;from&gt;Jani&lt;/from&gt;&lt;/note&gt;' */
5143 </example>
5144 </para>
5145
5146 <para>
5147 <list type="tag">
5148
5149 <tag-name id="xml_parse"><literal>parse(<value>string</value> |
5150 <value>Buffer</value>)</literal></tag-name>
5151 <tag-desc>
5152 Parses a string or Buffer for an XML document,
5153 returns an
5154 <link id="xml_doc"><literal>XMLDoc</literal></link> wrapper object
5155 around XML structure.
5156 </tag-desc>
5157
5158 <tag-name id="xml_c14n"><literal>xml.c14n(<value>root_node</value>[,
5159 <value>excluding_node</value>]])</literal></tag-name>
5160 <tag-desc>
5161 Canonicalizes <literal>root_node</literal> and its children according to
5162 <link url="https://www.w3.org/TR/xml-c14n">Canonical XML Version 1.1</link>.
5163
5164 <para>
5165 <list type="tag">
5166
5167 <tag-name><literal>excluding_node</literal></tag-name>
5168 <tag-desc>
5169 allows omitting from the output a part of the document
5170 </tag-desc>
5171
5172 </list>
5173 </para>
5174
5175 </tag-desc>
5176
5177 <tag-name id="xml_exclusiveC14n"><literal>xml.exclusiveC14n(<value>root_node</value>[,
5178 <value>excluding_node</value>[,
5179 <value>withComments</value>
5180 [,<value>prefix_list</value>]]])</literal></tag-name>
5181 <tag-desc>
5182 Canonicalizes <literal>root_node</literal> and its children according to
5183 <link url="https://www.w3.org/TR/xml-exc-c14n/">Exclusive XML
5184 Canonicalization Version 1.0</link>.
5185
5186 <para>
5187 <list type="tag">
5188
5189 <tag-name><literal>excluding_node</literal></tag-name>
5190 <tag-desc>
5191 allows omitting from the output a part of the document
5192 corresponding to the node and its children
5193 </tag-desc>
5194
5195 <tag-name><literal>withComments</literal></tag-name>
5196 <tag-desc>
5197 a boolean value, <literal>false</literal> by default.
5198 If <literal>true</literal>, canonicalization corresponds to
5199 <link url="http://www.w3.org/2001/10/xml-exc-c14n#WithComments">Exclusive XML
5200 Canonicalization Version 1.0</link>.
5201 </tag-desc>
5202
5203 <tag-name><literal>prefix_list</literal></tag-name>
5204 <tag-desc>
5205 an optional string with a space separated namespace prefixes
5206 for namespaces that should also be included into the output
5207 </tag-desc>
5208
5209 </list>
5210 </para>
5211
5212 </tag-desc>
5213
5214 <tag-name id="xml_doc"><literal>XMLDoc</literal></tag-name>
5215 <tag-desc>
5216 An XMLDoc wrapper object around XML structure.
5217
5218 <para>
5219 <list type="tag">
5220
5221 <tag-name id="xml_doc_root"><literal>$root</literal></tag-name>
5222 <tag-desc>
5223 the root tag as
5224 <link id="xml_node"><literal>XMLNode</literal></link> wrapper object
5225 </tag-desc>
5226
5227 <tag-name id="xml_doc_xxx"><literal>doc.<value>xxx</value></literal></tag-name>
5228 <tag-desc>
5229 the first root tag named <value>xxx</value> as
5230 <link id="xml_node"><literal>XMLNode</literal></link> wrapper object
5231 </tag-desc>
5232
5233 </list>
5234 </para>
5235
5236 </tag-desc>
5237
5238 <tag-name id="xml_node"><literal>XMLNode</literal></tag-name>
5239 <tag-desc>
5240 An XMLNode wrapper object around XML tag node.
5241 <para>
5242 <list type="tag">
5243
5244 <tag-name id="xml_node_tag"><literal>node.$tag$<value>xxx</value></literal></tag-name>
5245 <tag-desc>
5246 the first child tag named <value>xxx</value> as
5247 <link id="xml_node"><literal>XMLNode</literal></link> wrapper object
5248 </tag-desc>
5249
5250 <tag-name><literal>node.<value>xxx</value></literal></tag-name>
5251 <tag-desc>
5252 a shorthand syntax for
5253 <link id="xml_node_tag"><literal>node.$tag$<value>xxx</value></literal></link>
5254 </tag-desc>
5255
5256 <tag-name><literal>node.$tags$<value>xxx</value></literal></tag-name>
5257 <tag-desc>
5258 an array of all children tags named <value>xxx</value>
5259 </tag-desc>
5260
5261 <tag-name><literal>node.$tags$</literal></tag-name>
5262 <tag-desc>
5263 an array of all children tags
5264 </tag-desc>
5265
5266 <tag-name><literal>node.$attr$<value>xxx</value></literal></tag-name>
5267 <tag-desc>
5268 an attribute value of <value>xxx</value>
5269 </tag-desc>
5270
5271 <tag-name><literal>node.$attrs</literal></tag-name>
5272 <tag-desc>
5273 an <link id="xml_xmlattr"><literal>XMLAttr</literal></link> wrapper object
5274 </tag-desc>
5275
5276 <tag-name><literal>node.$name</literal></tag-name>
5277 <tag-desc>
5278 the tag name of the node
5279 </tag-desc>
5280
5281 <tag-name><literal>node.$ns</literal></tag-name>
5282 <tag-desc>
5283 the namespace of the node
5284 </tag-desc>
5285
5286 <tag-name><literal>node.$parent</literal></tag-name>
5287 <tag-desc>
5288 the parent of the node
5289 </tag-desc>
5290
5291 <tag-name><literal>node.$text</literal></tag-name>
5292 <tag-desc>
5293 the node's content
5294 </tag-desc>
5295
5296 </list>
5297 </para>
5298
5299 </tag-desc>
5300
5301 <tag-name id="xml_xmlattr"><literal>XMLAttr</literal></tag-name>
5302 <tag-desc>
5303 An XMLAttrs wrapper object around XML node attributes.
5304
5305 <para>
5306 <list type="tag">
5307
5308 <tag-name id="xmlattr_x"><literal>attr.<value>xxx</value></literal></tag-name>
5309 <tag-desc>
5310 a value of the <value>xxx</value> attribute
5311 </tag-desc>
5312
5313 </list>
5314 </para>
5315
5316 </tag-desc>
5317
5318 </list>
5319 </para>
5320
5113 </section> 5321 </section>
5114 5322
5323 </section>
5324
5115 </article> 5325 </article>