XML-literals.xhtml 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:pls="http://www.w3.org/2005/01/pronunciation-lexicon" xmlns:ssml="http://www.w3.org/2001/10/synthesis" xmlns:svg="http://www.w3.org/2000/svg">
  3. <head>
  4. <title>XML literals</title>
  5. <link rel="stylesheet" type="text/css" href="docbook-epub.css"/>
  6. <link rel="stylesheet" type="text/css" href="kawa.css"/>
  7. <script src="kawa-ebook.js" type="text/javascript"/>
  8. <meta name="generator" content="DocBook XSL-NS Stylesheets V1.79.1"/>
  9. <link rel="prev" href="Creating-XML-nodes.xhtml" title="Creating XML nodes"/>
  10. <link rel="next" href="Server-side-scripts.xhtml" title="Web page scripts"/>
  11. </head>
  12. <body>
  13. <header/>
  14. <section class="sect1" title="XML literals" epub:type="subchapter" id="XML-literals">
  15. <div class="titlepage">
  16. <div>
  17. <div>
  18. <h2 class="title" style="clear: both">XML literals</h2>
  19. </div>
  20. </div>
  21. </div>
  22. <p>You can write XML literals directly in Scheme code,
  23. following a <code class="literal">#</code>.
  24. Notice that the outermost element needs to be prefixed
  25. by <code class="literal">#</code>, but nested elements do not (and must not).
  26. </p>
  27. <pre class="screen">#&lt;p&gt;The result is &lt;b&gt;final&lt;/b&gt;!&lt;/p&gt;
  28. </pre>
  29. <p>Actually, these are not really literals since they can contain
  30. enclosed expressions:
  31. </p>
  32. <pre class="screen">#&lt;em&gt;The result is &amp;{result}.&lt;/em&gt;
  33. </pre>
  34. <p>The value of <em class="replaceable"><code>result</code></em> is substituted into the output,
  35. in a similar way to quasi-quotation.
  36. (If you try to quote one of these “XML literals”,
  37. what you get is unspecified and is subject to change.)
  38. </p>
  39. <p>An <em class="replaceable"><code>xml-literal</code></em> is usually an element constructor,
  40. but there some rarely used forms (processing-instructions,
  41. comments, and CDATA section) we’ll cover later.
  42. </p>
  43. <div class="literallayout">
  44. <p><a id="idm139667870612672" class="indexterm"/><span id="meta-xml-literal"/><em class="replaceable"><code>xml-literal</code></em> <code class="literal">::=</code> <code class="literal"><span class="bold"><strong>#</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-constructor"><em class="replaceable"><code>xml-constructor</code></em></a><br/>
  45. <a id="idm139667870609216" class="indexterm"/><span id="meta-xml-constructor"/><em class="replaceable"><code>xml-constructor</code></em> <code class="literal">::=</code> <a class="link" href="XML-literals.xhtml#meta-xml-element-constructor"><em class="replaceable"><code>xml-element-constructor</code></em></a><br/>
  46.   | <a class="link" href="XML-literals.xhtml#meta-xml-PI-constructor"><em class="replaceable"><code>xml-PI-constructor</code></em></a><br/>
  47.   | <a class="link" href="XML-literals.xhtml#meta-xml-comment-constructor"><em class="replaceable"><code>xml-comment-constructor</code></em></a><br/>
  48.   | <a class="link" href="XML-literals.xhtml#meta-xml-CDATA-constructor"><em class="replaceable"><code>xml-CDATA-constructor</code></em></a><br/>
  49. </p>
  50. </div>
  51. <section class="sect2" title="Element constructors" epub:type="division" id="idm139667870603696">
  52. <div class="titlepage">
  53. <div>
  54. <div>
  55. <h3 class="title">Element constructors</h3>
  56. </div>
  57. </div>
  58. </div>
  59. <div class="literallayout">
  60. <p><a id="idm139667870602624" class="indexterm"/><span id="meta-xml-element-constructor"/><em class="replaceable"><code>xml-element-constructor</code></em> <code class="literal">::=</code><br/>
  61.     <code class="literal"><span class="bold"><strong>&lt;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-QName"><em class="replaceable"><code>QName</code></em></a> <a class="link" href="XML-literals.xhtml#meta-xml-attribute"><em class="replaceable"><code>xml-attribute</code></em></a>*<code class="literal"><span class="bold"><strong>&gt;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-element-datum"><em class="replaceable"><code>xml-element-datum</code></em></a>...<code class="literal"><span class="bold"><strong>&lt;/</strong></span></code><a class="link" href="XML-literals.xhtml#meta-QName"><em class="replaceable"><code>QName</code></em></a> <code class="literal"><span class="bold"><strong>&gt;</strong></span></code><br/>
  62.   | <code class="literal"><span class="bold"><strong>&lt;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-name-form"><em class="replaceable"><code>xml-name-form</code></em></a> <a class="link" href="XML-literals.xhtml#meta-xml-attribute"><em class="replaceable"><code>xml-attribute</code></em></a>*<code class="literal"><span class="bold"><strong>&gt;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-element-datum"><em class="replaceable"><code>xml-element-datum</code></em></a>...<code class="literal"><span class="bold"><strong>&lt;/&gt;</strong></span></code><br/>
  63.   | <code class="literal"><span class="bold"><strong>&lt;</strong></span></code><em class="replaceable"><code>xml-name-form</code></em> <a class="link" href="XML-literals.xhtml#meta-xml-attribute"><em class="replaceable"><code>xml-attribute</code></em></a>*<code class="literal"><span class="bold"><strong>/&gt;</strong></span></code><br/>
  64. <a id="idm139667870587040" class="indexterm"/><span id="meta-xml-name-form"/><em class="replaceable"><code>xml-name-form</code></em> <code class="literal">::=</code> <a class="link" href="XML-literals.xhtml#meta-QName"><em class="replaceable"><code>QName</code></em></a><br/>
  65.   | <a class="link" href="XML-literals.xhtml#meta-xml-enclosed-expression"><em class="replaceable"><code>xml-enclosed-expression</code></em></a><br/>
  66. <a id="idm139667870583376" class="indexterm"/><span id="meta-xml-enclosed-expression"/><em class="replaceable"><code>xml-enclosed-expression</code></em> <code class="literal">::=</code><br/>
  67.     <code class="literal"><span class="bold"><strong>{</strong></span></code><a class="link" href="Primitive-expression-syntax.xhtml#meta-expression"><em class="replaceable"><code>expression</code></em></a><code class="literal"><span class="bold"><strong>}</strong></span></code><br/>
  68.   | <code class="literal"><span class="bold"><strong>(</strong></span></code><a class="link" href="Primitive-expression-syntax.xhtml#meta-expression"><em class="replaceable"><code>expression</code></em></a>...<code class="literal"><span class="bold"><strong>)</strong></span></code><br/>
  69. </p>
  70. </div>
  71. <p>The first <em class="replaceable"><code>xml-element-constructor</code></em> variant uses a literal <em class="replaceable"><code>QName</code></em>,
  72. and looks like standard non-empty XML element, where the starting <em class="replaceable"><code>QName</code></em>
  73. and the ending <em class="replaceable"><code>QName</code></em> must match exactly:
  74. </p>
  75. <pre class="screen">#&lt;a href="next.html"&gt;Next&lt;/a&gt;
  76. </pre>
  77. <p>As a convenience, you can leave out the ending tag(s):
  78. </p>
  79. <pre class="screen">This is a paragraph in &lt;emphasis&gt;DocBook&lt;/&gt; syntax.&lt;/&gt;
  80. </pre>
  81. <p>You can use an expression to compute the element tag at runtime -
  82. in that case you <span class="emphasis"><em>must</em></span> leave out the ending tag:
  83. </p>
  84. <pre class="screen">#&lt;p&gt;This is &lt;(if be-bold 'strong 'em)&gt;important&lt;/&gt;!&lt;/p&gt;
  85. </pre>
  86. <p>You can use arbitrary <em class="replaceable"><code>expression</code></em> inside curly braces,
  87. as long as it evaluates to a symbol.
  88. You can leave out the curly braces
  89. if the <em class="replaceable"><code>expression</code></em> is a simple parenthesised compound expression.
  90. The previous example is equivalent to:
  91. </p>
  92. <pre class="screen">#&lt;p&gt;This is &lt;{(if be-bold 'strong 'em)}&gt;important&lt;/&gt;!&lt;/p&gt;
  93. </pre>
  94. <p>The third <em class="replaceable"><code>xml-element-constructor</code></em> variant above is an XML
  95. “empty element”; it is equivalent to the second variant
  96. when there are no <em class="replaceable"><code>xml-element-datum</code></em> items.
  97. </p>
  98. <p>(Note that every well-formed XML element, as defined in the XML specifications,
  99. is a valid <em class="replaceable"><code>xml-element-constructor</code></em>, but not vice versa.)
  100. </p>
  101. </section>
  102. <section class="sect2" title="Elements contents (children)" epub:type="division" id="idm139667870567456">
  103. <div class="titlepage">
  104. <div>
  105. <div>
  106. <h3 class="title">Elements contents (children)</h3>
  107. </div>
  108. </div>
  109. </div>
  110. <p>The “contents” (children) of an element
  111. are a sequence of character (text) data, and nested nodes.
  112. The characters <code class="literal">&amp;</code>, <code class="literal">&lt;</code>, and <code class="literal">&gt;</code> are special,
  113. and need to be escaped.
  114. </p>
  115. <div class="literallayout">
  116. <p><a id="idm139667870564368" class="indexterm"/><span id="meta-xml-element-datum"/><em class="replaceable"><code>xml-element-datum</code></em> <code class="literal">::=</code><br/>
  117.     any character except <code class="literal">&amp;</code>, or <code class="literal">&lt;</code>.<br/>
  118.   | <a class="link" href="XML-literals.xhtml#meta-xml-constructor"><em class="replaceable"><code>xml-constructor</code></em></a><br/>
  119.   | <a class="link" href="XML-literals.xhtml#meta-xml-escaped"><em class="replaceable"><code>xml-escaped</code></em></a><br/>
  120. <a id="idm139667870559776" class="indexterm"/><span id="meta-xml-escaped"/><em class="replaceable"><code>xml-escaped</code></em> <code class="literal">::=</code><br/>
  121.     <code class="literal"><span class="bold"><strong>&amp;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-enclosed-expression"><em class="replaceable"><code>xml-enclosed-expression</code></em></a><br/>
  122.   | <code class="literal"><span class="bold"><strong>&amp;</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-entity-name"><em class="replaceable"><code>xml-entity-name</code></em></a><code class="literal"><span class="bold"><strong>;</strong></span></code><br/>
  123.   | <a class="link" href="XML-literals.xhtml#meta-xml-character-reference"><em class="replaceable"><code>xml-character-reference</code></em></a><br/>
  124. <a id="idm139667870553216" class="indexterm"/><span id="meta-xml-character-reference"/><em class="replaceable"><code>xml-character-reference</code></em> <code class="literal">::=</code><br/>
  125.     <code class="literal"><span class="bold"><strong>&amp;#</strong></span></code><a class="link" href="Lexical-syntax.xhtml#meta-digit"><em class="replaceable"><code>digit</code></em></a>+<code class="literal"><span class="bold"><strong>;</strong></span></code><br/>
  126.   | <code class="literal"><span class="bold"><strong>&amp;#x</strong></span></code><a class="link" href="Lexical-syntax.xhtml#meta-hex-digit"><em class="replaceable"><code>hex-digit</code></em></a>+<code class="literal"><span class="bold"><strong>;</strong></span></code><br/>
  127. </p>
  128. </div>
  129. <p>Here is an example shows both hex and decimal character references:
  130. </p>
  131. <pre class="screen">#&lt;p&gt;A&amp;#66;C&amp;#x44;E&lt;/p&gt; ⇒ &lt;p&gt;ABCDE&lt;/p&gt;
  132. </pre>
  133. <div class="literallayout">
  134. <p><a id="idm139667870545536" class="indexterm"/><span id="meta-xml-entity-name"/><em class="replaceable"><code>xml-entity-name</code></em> <code class="literal">::=</code> <a class="link" href="Lexical-syntax.xhtml#meta-identifier"><em class="replaceable"><code>identifier</code></em></a><br/>
  135. </p>
  136. </div>
  137. <p>Currently, the only supported values for <em class="replaceable"><code>xml-entity-name</code></em>
  138. are the builtin XML names <code class="literal">lt</code>, <code class="literal">gt</code>, <code class="literal">amp</code>,
  139. <code class="literal">quot</code>, and <code class="literal">apos</code>, which stand for the characters
  140. <code class="literal">&lt;</code>, <code class="literal">&gt;</code>, <code class="literal">&amp;</code>, <code class="literal">"</code>, and <code class="literal">'</code>, respectively.
  141. The following two expressions are equivalent:
  142. </p>
  143. <pre class="screen">#&lt;p&gt;&amp;lt; &amp;gt; &amp;amp; &amp;quot; &amp;apos;&lt;/p&gt;
  144. #&lt;p&gt;&amp;{"&lt; &gt; &amp; \" '"}&lt;/p&gt;
  145. </pre>
  146. </section>
  147. <section class="sect2" title="Attributes" epub:type="division" id="idm139667870537104">
  148. <div class="titlepage">
  149. <div>
  150. <div>
  151. <h3 class="title">Attributes</h3>
  152. </div>
  153. </div>
  154. </div>
  155. <div class="literallayout">
  156. <p><a id="idm139667870536032" class="indexterm"/><span id="meta-xml-attribute"/><em class="replaceable"><code>xml-attribute</code></em> <code class="literal">::=</code><br/>
  157.     <a class="link" href="XML-literals.xhtml#meta-xml-name-form"><em class="replaceable"><code>xml-name-form</code></em></a><code class="literal"><span class="bold"><strong>=</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-attribute-value"><em class="replaceable"><code>xml-attribute-value</code></em></a><br/>
  158. <a id="idm139667870531872" class="indexterm"/><span id="meta-xml-attribute-value"/><em class="replaceable"><code>xml-attribute-value</code></em> <code class="literal">::=</code><br/>
  159.     <code class="literal"><span class="bold"><strong>"</strong></span></code><a class="link" href="XML-literals.xhtml#meta-quot-attribute-datum"><em class="replaceable"><code>quot-attribute-datum</code></em></a>*<code class="literal"><span class="bold"><strong>"</strong></span></code><br/>
  160.   | <code class="literal"><span class="bold"><strong>’</strong></span></code><a class="link" href="XML-literals.xhtml#meta-apos-attribute-datum"><em class="replaceable"><code>apos-attribute-datum</code></em></a>*<code class="literal"><span class="bold"><strong>’</strong></span></code><br/>
  161. <a id="idm139667870525168" class="indexterm"/><span id="meta-quot-attribute-datum"/><em class="replaceable"><code>quot-attribute-datum</code></em> <code class="literal">::=</code><br/>
  162.     any character except <code class="literal">"</code>, <code class="literal">&amp;</code>, or <code class="literal">&lt;</code>.<br/>
  163.   | <a class="link" href="XML-literals.xhtml#meta-xml-escaped"><em class="replaceable"><code>xml-escaped</code></em></a><br/>
  164. <a id="idm139667870520992" class="indexterm"/><span id="meta-apos-attribute-datum"/><em class="replaceable"><code>apos-attribute-datum</code></em> <code class="literal">::=</code><br/>
  165.     any character except <code class="literal">'</code>, <code class="literal">&amp;</code>, or <code class="literal">&lt;</code>.<br/>
  166.   | <a class="link" href="XML-literals.xhtml#meta-xml-escaped"><em class="replaceable"><code>xml-escaped</code></em></a><br/>
  167. </p>
  168. </div>
  169. <p>If the <em class="replaceable"><code>xml-name-form</code></em> is either <code class="literal">xmlns</code> or
  170. a compound named with the prefix <code class="literal">xmlns</code>, then
  171. technically we have a namespace declaration, rather than
  172. an attribute.
  173. </p>
  174. </section>
  175. <section class="sect2" title="QNames and namespaces" epub:type="division" id="idm139667870514752">
  176. <div class="titlepage">
  177. <div>
  178. <div>
  179. <h3 class="title">QNames and namespaces</h3>
  180. </div>
  181. </div>
  182. </div>
  183. <p>The names of elements and attributes are <em class="firstterm">qualified names</em>
  184. (QNames), which are represented using compound symbols (see <a class="link" href="Namespaces.xhtml" title="Namespaces and compound symbols">Namespaces</a>).
  185. The lexical syntax for a QName is either a simple identifier,
  186. or a (prefix,local-name) pair:
  187. </p>
  188. <div class="literallayout">
  189. <p><a id="idm139667870511936" class="indexterm"/><span id="meta-QName"/><em class="replaceable"><code>QName</code></em> <code class="literal">::=</code> <a class="link" href="XML-literals.xhtml#meta-xml-local-part"><em class="replaceable"><code>xml-local-part</code></em></a><br/>
  190.    | <a class="link" href="XML-literals.xhtml#meta-xml-prefix"><em class="replaceable"><code>xml-prefix</code></em></a><code class="literal"><span class="bold"><strong>:</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-local-part"><em class="replaceable"><code>xml-local-part</code></em></a><br/>
  191. <a id="idm139667870506944" class="indexterm"/><span id="meta-xml-local-part"/><em class="replaceable"><code>xml-local-part</code></em> <code class="literal">::=</code> <a class="link" href="Lexical-syntax.xhtml#meta-identifier"><em class="replaceable"><code>identifier</code></em></a><br/>
  192. <a id="idm139667870504144" class="indexterm"/><span id="meta-xml-prefix"/><em class="replaceable"><code>xml-prefix</code></em> <code class="literal">::=</code> <a class="link" href="Lexical-syntax.xhtml#meta-identifier"><em class="replaceable"><code>identifier</code></em></a><br/>
  193. </p>
  194. </div>
  195. <p>An <em class="replaceable"><code>xml-prefix</code></em> is an alias for a namespace-uri,
  196. and the mapping between them is defined by a namespace-declaration.
  197. You can either use a <code class="literal">define-namespace</code> form, or you
  198. can use a <em class="firstterm">namespace declaration attribute</em>:
  199. </p>
  200. <div class="literallayout">
  201. <p><a id="idm139667870499248" class="indexterm"/><span id="meta-xml-namespace-declaration-attribute"/><em class="replaceable"><code>xml-namespace-declaration-attribute</code></em> <code class="literal">::=</code><br/>
  202.     <code class="literal"><span class="bold"><strong>xmlns:</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-prefix"><em class="replaceable"><code>xml-prefix</code></em></a><code class="literal"><span class="bold"><strong>=</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-attribute-value"><em class="replaceable"><code>xml-attribute-value</code></em></a><br/>
  203.   | <code class="literal"><span class="bold"><strong>xmlns=</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-attribute-value"><em class="replaceable"><code>xml-attribute-value</code></em></a><br/>
  204. </p>
  205. </div>
  206. <p>The former declares <em class="replaceable"><code>xml-prefix</code></em> as a namespace alias for
  207. the namespace-uri specified by <em class="replaceable"><code>xml-attribute-value</code></em>
  208. (which must be a compile-time constant).
  209. The second declares that <em class="replaceable"><code>xml-attribute-value</code></em> is the default
  210. namespace for simple (unprefixed) element tags.
  211. (A default namespace declaration is ignored for attribute names.)
  212. </p>
  213. <pre class="screen">(let ((qn (element-name #&lt;gnu:b xmlns:gnu="http://gnu.org/"/&gt;)))
  214. (list (symbol-local-name qn)
  215. (symbol-prefix qn)
  216. (symbol-namespace-uri qn)))
  217. ⇒ ("b" "gnu" "http://gnu.org/")
  218. </pre>
  219. </section>
  220. <section class="sect2" title="Other XML types" epub:type="division" id="idm139667870489696">
  221. <div class="titlepage">
  222. <div>
  223. <div>
  224. <h3 class="title">Other XML types</h3>
  225. </div>
  226. </div>
  227. </div>
  228. <section class="sect3" title="Processing instructions" epub:type="division" id="idm139667870488752">
  229. <div class="titlepage">
  230. <div>
  231. <div>
  232. <h4 class="title">Processing instructions</h4>
  233. </div>
  234. </div>
  235. </div>
  236. <p>An <em class="replaceable"><code>xml-PI-constructor</code></em> can be used to create an XML
  237. <em class="firstterm">processing instruction</em>, which can be used to pass
  238. instructions or annotations to an XML processor (or tool).
  239. (Alternatively, you can use the <code class="literal">processing-instruction</code>
  240. type constructor.)
  241. </p>
  242. <div class="literallayout">
  243. <p><a id="idm139667870485840" class="indexterm"/><span id="meta-xml-PI-constructor"/><em class="replaceable"><code>xml-PI-constructor</code></em> <code class="literal">::=</code> <code class="literal"><span class="bold"><strong>&lt;?</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-PI-target"><em class="replaceable"><code>xml-PI-target</code></em></a> <a class="link" href="XML-literals.xhtml#meta-xml-PI-content"><em class="replaceable"><code>xml-PI-content</code></em></a><code class="literal"><span class="bold"><strong>?&gt;</strong></span></code><br/>
  244. <a id="idm139667870480848" class="indexterm"/><span id="meta-xml-PI-target"/><em class="replaceable"><code>xml-PI-target</code></em> <code class="literal">::=</code> <em class="replaceable"><code>NCname</code></em> (i.e. a simple (non-compound) identifier)<br/>
  245. <a id="idm139667870478384" class="indexterm"/><span id="meta-xml-PI-content"/><em class="replaceable"><code>xml-PI-content</code></em> <code class="literal">::=</code> any characters, not containing <code class="literal">?&gt;</code>.<br/>
  246. </p>
  247. </div>
  248. <p>For example, the DocBook XSLT stylesheets can use the <code class="literal">dbhtml</code>
  249. instructions to specify that a specific chapter should be
  250. written to a named HTML file:
  251. </p>
  252. <pre class="screen">#&lt;chapter&gt;&lt;?dbhtml filename="intro.html" ?&gt;
  253. &lt;title&gt;Introduction&lt;/title&gt;
  254. ...
  255. &lt;/chapter&gt;
  256. </pre>
  257. </section>
  258. <section class="sect3" title="XML comments" epub:type="division" id="idm139667870474256">
  259. <div class="titlepage">
  260. <div>
  261. <div>
  262. <h4 class="title">XML comments</h4>
  263. </div>
  264. </div>
  265. </div>
  266. <p>You can cause XML comments to be emitted in the XML output document.
  267. Such comments can be useful for humans reading the XML document,
  268. but are usually ignored by programs.
  269. (Alternatively, you can use the <code class="literal">comment</code> type constructor.)
  270. </p>
  271. <div class="literallayout">
  272. <p><a id="idm139667870472128" class="indexterm"/><span id="meta-xml-comment-constructor"/><em class="replaceable"><code>xml-comment-constructor</code></em> <code class="literal">::=</code> <code class="literal"><span class="bold"><strong>&lt;!–</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-comment-content"><em class="replaceable"><code>xml-comment-content</code></em></a><code class="literal"><span class="bold"><strong>–&gt;</strong></span></code><br/>
  273. <a id="idm139667870467920" class="indexterm"/><span id="meta-xml-comment-content"/><em class="replaceable"><code>xml-comment-content</code></em> <code class="literal">::=</code> any characters, not containing <code class="literal">--</code>.<br/>
  274. </p>
  275. </div>
  276. </section>
  277. <section class="sect3" title="CDATA sections" epub:type="division" id="idm139667870465232">
  278. <div class="titlepage">
  279. <div>
  280. <div>
  281. <h4 class="title">CDATA sections</h4>
  282. </div>
  283. </div>
  284. </div>
  285. <p>A <code class="literal">CDATA</code> section can be used to avoid excessive use of
  286. <em class="replaceable"><code>xml-entity-ref</code></em> such as <code class="literal">&amp;amp;</code> in element content.
  287. </p>
  288. <div class="literallayout">
  289. <p><a id="idm139667870462400" class="indexterm"/><span id="meta-xml-CDATA-constructor"/><em class="replaceable"><code>xml-CDATA-constructor</code></em> <code class="literal">::=</code> <code class="literal"><span class="bold"><strong>&lt;![CDATA[</strong></span></code><a class="link" href="XML-literals.xhtml#meta-xml-CDATA-content"><em class="replaceable"><code>xml-CDATA-content</code></em></a><code class="literal"><span class="bold"><strong>]]&gt;</strong></span></code><br/>
  290. <a id="idm139667870458208" class="indexterm"/><span id="meta-xml-CDATA-content"/><em class="replaceable"><code>xml-CDATA-content</code></em> <code class="literal">::=</code> any characters, not containing <code class="literal">]]&gt;</code>.<br/>
  291. </p>
  292. </div>
  293. <p>The following are equivalent:
  294. </p>
  295. <pre class="screen">#&lt;p&gt;Specal characters &lt;![CDATA[&lt; &gt; &amp; ' "]]&gt; here.&lt;/p&gt;
  296. #&lt;p&gt;Specal characters &amp;lt; &amp;gt; &amp;amp; &amp;quot; &amp;apos; here.&lt;/p&gt;
  297. </pre>
  298. <p>Kawa remembers that you used a <code class="literal">CDATA</code> section in
  299. the <em class="replaceable"><code>xml-element-constructor</code></em> and will write it out
  300. using a <code class="literal">CDATA</code> constructor.
  301. </p>
  302. </section>
  303. </section>
  304. </section>
  305. <footer>
  306. <div class="navfooter">
  307. <ul>
  308. <li>
  309. <b class="toc">
  310. <a href="XML-literals.xhtml#idm139667870603696">Element constructors</a>
  311. </b>
  312. </li>
  313. <li>
  314. <b class="toc">
  315. <a href="XML-literals.xhtml#idm139667870567456">Elements contents (children)</a>
  316. </b>
  317. </li>
  318. <li>
  319. <b class="toc">
  320. <a href="XML-literals.xhtml#idm139667870537104">Attributes</a>
  321. </b>
  322. </li>
  323. <li>
  324. <b class="toc">
  325. <a href="XML-literals.xhtml#idm139667870514752">QNames and namespaces</a>
  326. </b>
  327. </li>
  328. <li>
  329. <b class="toc">
  330. <a href="XML-literals.xhtml#idm139667870489696">Other XML types</a>
  331. </b>
  332. </li>
  333. </ul>
  334. <p>
  335. Up: <a accesskey="u" href="XML-tools.xhtml">Working with XML and HTML</a></p>
  336. <p>
  337. Previous: <a accesskey="p" href="Creating-XML-nodes.xhtml">Creating XML nodes</a></p>
  338. <p>
  339. Next: <a accesskey="n" href="Server-side-scripts.xhtml">Web page scripts</a></p>
  340. </div>
  341. </footer>
  342. </body>
  343. </html>