all repos — h3rald @ b3442cd80d633f1412303de98a8301e8b8fd86c0

The sources of https://h3rald.com

contents/glyph/book/text_editing/xml_fallback.html

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
-----
title: "Glyph - XML Fallback"
content-type: page
-----
<nav class="navigation"><a href="/glyph/book/text_editing/raw_html.html">← Textile or Markdown</a> | <a
		href="/glyph/book/index.html">Contents</a> | <a href="/glyph/book/text_editing/stylesheets.html">Adding
		Stylesheets →</a></nav>
<p>Sure Textile and Markdown are great, but sometimes you may want to just use HTML, without the extra verbosity, of
	course. Take tables for example: Textile offers an easy way to create them, but things may get dirty when you need
	to have multiple paragraphs or lists within cells.</p>
<p>Very early versions of Glyph used to offered some simple <code>table</code>, <code>tr</code>, <code>tr</code>,
	<code>td</code> macros just for that. Of course the problem was that thy didn't offer any way to customize the
	markup by adding, for example, CSS classes.</p>
<p>Instead, by default, Glyph can convert any unrecognized macro to the corresponding XML element and macro attributes
	to XML attributes.</p>
<aside class="box">
	<div class="box-title">Example</div>
	<p>
		The following Glyph code:
	</p>
	<div class="CodeRay">
		<div class="code">
			<pre><span class="line-numbers"> <a href="#n1" name="n1">1</a></span>table[@class[features]
<span class="line-numbers"> <a href="#n2" name="n2">2</a></span>  tr[
<span class="line-numbers"> <a href="#n3" name="n3">3</a></span>    th[ID]
<span class="line-numbers"> <a href="#n4" name="n4">4</a></span>    th[Priority]
<span class="line-numbers"> <a href="#n5" name="n5">5</a></span>    th[Description]
<span class="line-numbers"> <a href="#n6" name="n6">6</a></span>  ]
<span class="line-numbers"> <a href="#n7" name="n7">7</a></span>  tr[
<span class="line-numbers"> <a href="#n8" name="n8">8</a></span>    td[27]
<span class="line-numbers"> <a href="#n9" name="n9">9</a></span>    td[span[@style[color:red;font-weight:bold;] HIGH]]
<span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>    td[HTML output]
<span class="line-numbers"><a href="#n11" name="n11">11</a></span>  ]
<span class="line-numbers"><a href="#n12" name="n12">12</a></span>  tr[
<span class="line-numbers"><a href="#n13" name="n13">13</a></span>    td[42]
<span class="line-numbers"><a href="#n14" name="n14">14</a></span>    td[span[@style[color:green;font-weight:bols;] LOW]]
<span class="line-numbers"><a href="#n15" name="n15">15</a></span>    td[
<span class="line-numbers"><a href="#n16" name="n16">16</a></span>      p[Support for less-used tags:]
<span class="line-numbers"><a href="#n17" name="n17">17</a></span>      ul[
<span class="line-numbers"><a href="#n18" name="n18">18</a></span>        li[cite]
<span class="line-numbers"><a href="#n19" name="n19">19</a></span>        li[sup]
<span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span>        li[...]
<span class="line-numbers"><a href="#n21" name="n21">21</a></span>      ]
<span class="line-numbers"><a href="#n22" name="n22">22</a></span>    ]
<span class="line-numbers"><a href="#n23" name="n23">23</a></span>  ]
<span class="line-numbers"><a href="#n24" name="n24">24</a></span>]</pre>
		</div>
	</div>

	<p>
		Is translated into the following HTML code:
	</p>
	<div class="CodeRay">
		<div class="code">
			<pre><span class="line-numbers"> <a href="#n1" name="n1">1</a></span><span class="tag">&lt;table</span> <span class="attribute-name">class</span>=<span class="string"><span class="delimiter">&quot;</span><span class="content">features</span><span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>
<span class="line-numbers"> <a href="#n2" name="n2">2</a></span>  <span class="tag">&lt;tr&gt;</span>
<span class="line-numbers"> <a href="#n3" name="n3">3</a></span>    <span class="tag">&lt;th&gt;</span>ID<span class="tag">&lt;/th&gt;</span>
<span class="line-numbers"> <a href="#n4" name="n4">4</a></span>    <span class="tag">&lt;th&gt;</span>Priority<span class="tag">&lt;/th&gt;</span>
<span class="line-numbers"> <a href="#n5" name="n5">5</a></span>    <span class="tag">&lt;th&gt;</span>Description<span class="tag">&lt;/th&gt;</span>
<span class="line-numbers"> <a href="#n6" name="n6">6</a></span>  <span class="tag">&lt;/tr&gt;</span>
<span class="line-numbers"> <a href="#n7" name="n7">7</a></span>  <span class="tag">&lt;tr&gt;</span>
<span class="line-numbers"> <a href="#n8" name="n8">8</a></span>    <span class="tag">&lt;td&gt;</span>27<span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"> <a href="#n9" name="n9">9</a></span>    <span class="tag">&lt;td&gt;</span><span class="tag">&lt;span</span> <span class="attribute-name">style</span>=<span class="string"><span class="delimiter">&quot;</span><span class="key">color</span>:<span class="value">red</span>;<span class="key">font-weight</span>:<span class="value">bold</span>;<span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>HIGH<span class="tag">&lt;/span&gt;</span><span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"><strong><a href="#n10" name="n10">10</a></strong></span>    <span class="tag">&lt;td&gt;</span>HTML output<span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"><a href="#n11" name="n11">11</a></span>  <span class="tag">&lt;/tr&gt;</span>
<span class="line-numbers"><a href="#n12" name="n12">12</a></span>  <span class="tag">&lt;tr&gt;</span>
<span class="line-numbers"><a href="#n13" name="n13">13</a></span>    <span class="tag">&lt;td&gt;</span>42<span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"><a href="#n14" name="n14">14</a></span>    <span class="tag">&lt;td&gt;</span><span class="tag">&lt;span</span> <span class="attribute-name">style</span>=<span class="string"><span class="delimiter">&quot;</span><span class="key">color</span>:<span class="value">green</span>;<span class="key">font-weight</span>:<span class="value">bold</span>;<span class="delimiter">&quot;</span></span><span class="tag">&gt;</span>LOW<span class="tag">&lt;/span&gt;</span><span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"><a href="#n15" name="n15">15</a></span>    <span class="tag">&lt;td&gt;</span>
<span class="line-numbers"><a href="#n16" name="n16">16</a></span>      <span class="tag">&lt;p&gt;</span>Support for less-used tags:<span class="tag">&lt;/p&gt;</span>
<span class="line-numbers"><a href="#n17" name="n17">17</a></span>      <span class="tag">&lt;ul&gt;</span>
<span class="line-numbers"><a href="#n18" name="n18">18</a></span>        <span class="tag">&lt;li&gt;</span>cite<span class="tag">&lt;/li&gt;</span>
<span class="line-numbers"><a href="#n19" name="n19">19</a></span>        <span class="tag">&lt;li&gt;</span>sup<span class="tag">&lt;/li&gt;</span>
<span class="line-numbers"><strong><a href="#n20" name="n20">20</a></strong></span>        <span class="tag">&lt;li&gt;</span>...<span class="tag">&lt;/li&gt;</span>
<span class="line-numbers"><a href="#n21" name="n21">21</a></span>      <span class="tag">&lt;/ul&gt;</span>
<span class="line-numbers"><a href="#n22" name="n22">22</a></span>    <span class="tag">&lt;/td&gt;</span>
<span class="line-numbers"><a href="#n23" name="n23">23</a></span>  <span class="tag">&lt;/tr&gt;</span>
<span class="line-numbers"><a href="#n24" name="n24">24</a></span><span class="tag">&lt;/table&gt;</span></pre>
		</div>
	</div>

</aside>
<p>Basically, if the <a
		href="/glyph/book/config/options.html#s_options_xml_fallback"><code>options.xml_fallback</code></a> setting is
	set to <code>true</code>, any macro unknown to Glyph with at most one parameter will be converted to an XML tag with
	the same name and any attribute will be converted to the corresponding XML attribute.</p>
<aside class="important">
	<span class="note-title">Important</span>While macro names and attributes are validated so that an error is returned
	if they contain illegal character, no check is performed against any particular XML schema.

</aside>
<p>Additionally, it is possible to force macro-to-<span class="caps">XML</span> conversion by composing the name of a
	tag with the <a href="/glyph/book/macros/macros_core.html#m_xml"><code>xml</code></a> macro, so for example
	<code>xml/snippet[test]</code> will be converted into <code>&lt;snippet&gt;test&lt;/snippet&gt;</code>.</p>
<section class="section">
	<header>
		<h1 id="xml_blacklist" class="toc">Blacklisted XML tags</h1>
	</header>
	<p>By default, the following tags are blacklisted and will be ignored:</p>
	<ul>
		<li><code>applet</code></li>
		<li><code>base</code></li>
		<li><code>basefont</code></li>
		<li><code>embed</code></li>
		<li><code>frame</code></li>
		<li><code>frameset</code></li>
		<li><code>iframe</code></li>
		<li><code>isindex</code></li>
		<li><code>meta</code></li>
		<li><code>noframes</code></li>
		<li><code>noscript</code></li>
		<li><code>object</code></li>
		<li><code>param</code></li>
		<li><code>title</code></li>
	</ul>
	<aside class="tip">
		<p><span class="note-title">Tip</span>You can change this list by modifying the <a
				href="/glyph/book/config/options.html#s_options_xml_blacklist"><code>options.xml_blacklist</code></a>
			setting.</p>
	</aside>

</section>
<nav class="navigation"><a href="/glyph/book/text_editing/raw_html.html">← Textile or Markdown</a> | <a
		href="/glyph/book/index.html">Contents</a> | <a href="/glyph/book/text_editing/stylesheets.html">Adding
		Stylesheets →</a></nav>