<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://nick-black.com/dankwiki/index.php?action=history&amp;feed=atom&amp;title=Xmlstarlet</id>
	<title>Xmlstarlet - revision history</title>
	<link rel="self" type="application/atom+xml" href="https://nick-black.com/dankwiki/index.php?action=history&amp;feed=atom&amp;title=Xmlstarlet"/>
	<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;action=history"/>
	<updated>2026-07-11T11:50:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=11345&amp;oldid=prev</id>
		<title>Dank: /* Counting */</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=11345&amp;oldid=prev"/>
		<updated>2024-11-27T03:22:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Counting&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:22, 27 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l146&quot;&gt;Line 146:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 146:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Counting===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Counting===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//node())&quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//node())&quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//somenode)&quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/ins&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//somenode)&quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==See Also==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==See Also==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://xmlstar.sourceforge.net/doc/UG/index.html XmlStarlet reference]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://xmlstar.sourceforge.net/doc/UG/index.html XmlStarlet reference]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=11344&amp;oldid=prev</id>
		<title>Dank: /* Counting */</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=11344&amp;oldid=prev"/>
		<updated>2024-11-27T03:21:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Counting&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 03:21, 27 November 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l146&quot;&gt;Line 146:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 146:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Counting===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Counting===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//node())&quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//node())&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//somenode)&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//somenode)&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==See Also==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==See Also==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://xmlstar.sourceforge.net/doc/UG/index.html XmlStarlet reference]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [http://xmlstar.sourceforge.net/doc/UG/index.html XmlStarlet reference]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=5536&amp;oldid=prev</id>
		<title>Dank at 16:11, 4 August 2013</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=5536&amp;oldid=prev"/>
		<updated>2013-08-04T16:11:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:11, 4 August 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; and is available from the Ports Collection in &amp;lt;tt&amp;gt;textproc/xmlstarlet&amp;lt;/tt&amp;gt;; on Linux, it is generally invoked as &amp;lt;tt&amp;gt;xmlstarlet&amp;lt;/tt&amp;gt; (throughout the rest of this article, I will use &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt;). XMLstarlet invocations take the form: &amp;lt;tt&amp;gt;xml command [command options] [filename]&amp;lt;/tt&amp;gt;. It is intended for use within pipelines; any diagnostic output generated will be placed on stderr. To get help on a command, run &amp;lt;tt&amp;gt;xml command --help&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;XMLStarlet is a command line tool for manipulation of &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;XML&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; and is available from the Ports Collection in &amp;lt;tt&amp;gt;textproc/xmlstarlet&amp;lt;/tt&amp;gt;; on Linux, it is generally invoked as &amp;lt;tt&amp;gt;xmlstarlet&amp;lt;/tt&amp;gt; (throughout the rest of this article, I will use &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt;). XMLstarlet invocations take the form: &amp;lt;tt&amp;gt;xml command [command options] [filename]&amp;lt;/tt&amp;gt;. It is intended for use within pipelines; any diagnostic output generated will be placed on stderr. To get help on a command, run &amp;lt;tt&amp;gt;xml command --help&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As more and more tools generate XML-based output ([[subversion]], [http://insecure.org/nmap nmap], etc), xmlstarlet becomes a useful and flexible tool for working with XML in a stream-editing context.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As more and more tools generate XML-based output ([[subversion]], [http://insecure.org/nmap nmap], etc), xmlstarlet becomes a useful and flexible tool for working with XML in a stream-editing context.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=3190&amp;oldid=prev</id>
		<title>Dank: /* Subversion */</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=3190&amp;oldid=prev"/>
		<updated>2010-05-27T20:59:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Subversion&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 20:59, 27 May 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l99&quot;&gt;Line 99:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 99:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Subversion===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;Subversion&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;tt&amp;gt;svn log&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;svn status&amp;lt;/tt&amp;gt; both accept the --xml command line option.&amp;lt;pre&amp;gt;[diaconicon](0) $ svn status --xml&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;tt&amp;gt;svn log&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;svn status&amp;lt;/tt&amp;gt; both accept the --xml command line option&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. See the [[subversion]] page for some recipes&lt;/ins&gt;.&amp;lt;pre&amp;gt;[diaconicon](0) $ svn status --xml&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;status&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;amp;lt;status&amp;amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-1085:rev-3190:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1085&amp;oldid=prev</id>
		<title>Dank at 07:02, 2 October 2009</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1085&amp;oldid=prev"/>
		<updated>2009-10-02T07:02:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:02, 2 October 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l148&quot;&gt;Line 148:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 148:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//node())&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//node())&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//somenode)&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &amp;quot;count(//somenode)&amp;quot;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==See Also==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* [http://xmlstar.sourceforge.net/doc/UG/index.html XmlStarlet reference]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-1084:rev-1085:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1084&amp;oldid=prev</id>
		<title>Dank at 07:01, 2 October 2009</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1084&amp;oldid=prev"/>
		<updated>2009-10-02T07:01:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:01, 2 October 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; and is available from the Ports Collection in &amp;lt;tt&amp;gt;textproc/xmlstarlet&amp;lt;/tt&amp;gt;; on Linux, it is generally invoked as &amp;lt;tt&amp;gt;xmlstarlet&amp;lt;/tt&amp;gt; (throughout the rest of this article, I &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;shall &lt;/del&gt;use &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt;). XMLstarlet invocations take the form: &amp;lt;tt&amp;gt;xml command [command options] [filename]&amp;lt;/tt&amp;gt;. It is intended for use within pipelines; any diagnostic output generated will be placed on stderr. To get help on a command, run &amp;lt;tt&amp;gt;xml command --help&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; and is available from the Ports Collection in &amp;lt;tt&amp;gt;textproc/xmlstarlet&amp;lt;/tt&amp;gt;; on Linux, it is generally invoked as &amp;lt;tt&amp;gt;xmlstarlet&amp;lt;/tt&amp;gt; (throughout the rest of this article, I &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;will &lt;/ins&gt;use &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt;). XMLstarlet invocations take the form: &amp;lt;tt&amp;gt;xml command [command options] [filename]&amp;lt;/tt&amp;gt;. It is intended for use within pipelines; any diagnostic output generated will be placed on stderr. To get help on a command, run &amp;lt;tt&amp;gt;xml command --help&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As more and more tools generate XML-based output ([[subversion]], [http://insecure.org/nmap nmap], etc), xmlstarlet becomes a useful and flexible tool for working with XML in a stream-editing context.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As more and more tools generate XML-based output ([[subversion]], [http://insecure.org/nmap nmap], etc), xmlstarlet becomes a useful and flexible tool for working with XML in a stream-editing context.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l141&quot;&gt;Line 141:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 141:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Delimited by spaces:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Delimited by spaces:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;xml sel -t -m //\*\[not\(\*\)\] -v . -o &amp;#039; &amp;#039;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;code&amp;gt;xml sel -t -m //\*\[not\(\*\)\] -v . -o &amp;#039; &amp;#039;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;==Querying==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[XPath]] can be used to programmatically explore XML.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===Counting===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Count all nodes in a document:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//node())&quot;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Count all occurrences of &amp;lt;tt&amp;gt;somenode&amp;lt;/tt&amp;gt; nodes:&amp;lt;code&amp;gt;xml sel -t -v &quot;count(//somenode)&quot;&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff:1.41:old-1083:rev-1084:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
	<entry>
		<id>https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1083&amp;oldid=prev</id>
		<title>Dank: Created page with &#039;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &lt;tt&gt;xml&lt;/t...&#039;</title>
		<link rel="alternate" type="text/html" href="https://nick-black.com/dankwiki/index.php?title=Xmlstarlet&amp;diff=1083&amp;oldid=prev"/>
		<updated>2009-10-02T06:55:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/t...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;XMLStarlet is a command line tool for manipulation of XML. It exposes XPath, XSLT, and validation among many other capabilities. On FreeBSD, it is generally invoked as &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt; and is available from the Ports Collection in &amp;lt;tt&amp;gt;textproc/xmlstarlet&amp;lt;/tt&amp;gt;; on Linux, it is generally invoked as &amp;lt;tt&amp;gt;xmlstarlet&amp;lt;/tt&amp;gt; (throughout the rest of this article, I shall use &amp;lt;tt&amp;gt;xml&amp;lt;/tt&amp;gt;). XMLstarlet invocations take the form: &amp;lt;tt&amp;gt;xml command [command options] [filename]&amp;lt;/tt&amp;gt;. It is intended for use within pipelines; any diagnostic output generated will be placed on stderr. To get help on a command, run &amp;lt;tt&amp;gt;xml command --help&amp;lt;/tt&amp;gt;.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As more and more tools generate XML-based output ([[subversion]], [http://insecure.org/nmap nmap], etc), xmlstarlet becomes a useful and flexible tool for working with XML in a stream-editing context.&lt;br /&gt;
&lt;br /&gt;
==Escaping and Unescaping==&lt;br /&gt;
Due to [http://en.wikipedia.org/wiki/SGML_entity entity references], text must be processed prior to being embedded within an element as data. Conversion to and from entity references is managed with &amp;lt;tt&amp;gt;xml esc&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;xml unesc&amp;lt;/tt&amp;gt;. Neither of these commands take any options. The input has no well-formedness requirements.&amp;lt;pre&amp;gt;[diaconicon](0) $ xmlstarlet esc \&amp;lt;\&amp;gt;\&amp;amp; &amp;amp;&amp;amp; echo \&amp;lt;\&amp;gt;\&amp;amp; | xmlstarlet esc&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;gt;&amp;amp;amp;amp;&lt;br /&gt;
&amp;amp;amp;lt;&amp;amp;amp;gt;&amp;amp;amp;amp;&lt;br /&gt;
[diaconicon](0) $ xmlstarlet esc \&amp;lt;\&amp;gt;\&amp;amp; | xmlstarlet unesc &amp;amp;&amp;amp; echo \&amp;lt;\&amp;gt;\&amp;amp; | xmlstarlet esc | xargs xmlstarlet unesc&lt;br /&gt;
&amp;lt;&amp;gt;&amp;amp;&lt;br /&gt;
&amp;lt;&amp;gt;&amp;amp;&lt;br /&gt;
[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Document Presentation==&lt;br /&gt;
===Canonical Representation===&lt;br /&gt;
&amp;lt;tt&amp;gt;xml c14n&amp;lt;/tt&amp;gt; can be used to canonicalize XML (this primarily consists of removing whitespace leading or trailing the root node, and expanding empty nodes which use the &amp;amp;lt;foo/&amp;amp;gt; notation). The input must be well-formed. Comments can either be preserved or stripped via the &amp;lt;tt&amp;gt;with-comments&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;without-comments&amp;lt;/tt&amp;gt; command-line options.&amp;lt;pre&amp;gt;[diaconicon](0) $ echo -e &amp;quot;\n&amp;amp;lt;foo&amp;amp;gt;  &amp;amp;lt;bar  /&amp;amp;gt;\n&amp;amp;lt;qux&amp;amp;gt; crap\tcrap &amp;amp;lt;/qux&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;&amp;quot; | xmlstarlet c14n&lt;br /&gt;
&amp;amp;lt;foo&amp;amp;gt;  &amp;amp;lt;bar&amp;amp;gt;&amp;amp;lt;/bar&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;qux&amp;amp;gt; crap      crap &amp;amp;lt;/qux&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Element Structure===&lt;br /&gt;
&amp;lt;tt&amp;gt;xml el&amp;lt;/tt&amp;gt; will display the element structure of well-formed XML. Attributes and their values can also be displayed; use the &amp;lt;tt&amp;gt;-a&amp;lt;/tt&amp;gt; option to enable attribute output, and the &amp;lt;tt&amp;gt;-v&amp;lt;/tt&amp;gt; option to enable attribute + value output. Each element and its complete ancestry will appear on its own line, with generations demarcated with foreslashes. Attributes and their values, if enabled, follow the element path in square brackets.&amp;lt;pre&amp;gt;[diaconicon](0) $ echo &amp;#039;&amp;amp;lt;foo&amp;amp;gt;&amp;amp;lt;bar qux=&amp;quot;quux&amp;quot; fux=&amp;quot;fuux&amp;quot;&amp;amp;gt;quuux&amp;amp;lt;/bar&amp;amp;gt;&amp;amp;lt;baz/&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;&amp;#039; | xmlstarlet el -v&lt;br /&gt;
foo&lt;br /&gt;
foo/bar[@qux=&amp;#039;quux&amp;#039; and @fux=&amp;#039;fuux&amp;#039;]&lt;br /&gt;
foo/baz&lt;br /&gt;
[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Line-oriented (PyX)===&lt;br /&gt;
The [http://www.xml.com/pub/a/2000/03/15/feature/index.html PyX] (PostScript + Python + TeX) notation can be used to prepare XML data for processing by line-oriented tools such as &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;wc&amp;lt;/tt&amp;gt;. Each (preserved) syntactic element in the XML source results in a single line of text prefaced with a PyX classifier; this mapping is bijective:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! XML Syntax&lt;br /&gt;
! PyX Classifier&lt;br /&gt;
! XML Example&lt;br /&gt;
! PyX Equivalent&lt;br /&gt;
|-&lt;br /&gt;
| start-tag&lt;br /&gt;
| &amp;#039;(&amp;#039;&lt;br /&gt;
| &amp;amp;lt;foo&amp;amp;gt;, &amp;amp;lt;foo/&amp;amp;gt;&lt;br /&gt;
| (foo&lt;br /&gt;
|-&lt;br /&gt;
| end-tag&lt;br /&gt;
| &amp;#039;)&amp;#039;&lt;br /&gt;
| &amp;amp;lt;/foo&amp;amp;gt;, &amp;amp;lt;foo/&amp;amp;gt;&lt;br /&gt;
| )foo&lt;br /&gt;
|-&lt;br /&gt;
| attribute&lt;br /&gt;
| &amp;#039;A&amp;#039;&lt;br /&gt;
| foo=&amp;quot;bar&amp;quot;&lt;br /&gt;
| Afoo bar&lt;br /&gt;
|-&lt;br /&gt;
| character data&lt;br /&gt;
| &amp;#039;-&amp;#039;&lt;br /&gt;
| &amp;amp;lt;foo&amp;amp;gt;bar&amp;amp;lt;/foo&amp;amp;gt;&lt;br /&gt;
| -bar&lt;br /&gt;
|-&lt;br /&gt;
| processing instruction&lt;br /&gt;
| &amp;#039;?&amp;#039;&lt;br /&gt;
| &amp;amp;lt;?A4TypeSetter PageBreak?&amp;amp;gt;&lt;br /&gt;
| ?A4TypeSetter PageBreak&lt;br /&gt;
|}&lt;br /&gt;
Use &amp;lt;tt&amp;gt;xml pyx&amp;lt;/tt&amp;gt; to convert from XML to PyX and &amp;lt;tt&amp;gt;xml p2x&amp;lt;/tt&amp;gt; to convert from PyX to XML. The input must be well-formed in either case.&amp;lt;pre&amp;gt;[diaconicon](0) $ echo &amp;#039;&amp;amp;lt;foo&amp;amp;gt;&amp;amp;lt;?xml-stylesheet href=&amp;quot;headlines.css&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;amp;gt;&amp;amp;lt;bar qux=&amp;quot;quux&amp;quot;&amp;amp;gt;quuux&amp;amp;lt;/bar&amp;amp;gt;&amp;amp;lt;baz/&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;&amp;#039; | xmlstarlet pyx&lt;br /&gt;
(foo&lt;br /&gt;
?xml-stylesheet href=&amp;quot;headlines.css&amp;quot; type=&amp;quot;text/css&amp;quot;&lt;br /&gt;
(bar&lt;br /&gt;
Aqux quux&lt;br /&gt;
-quuux&lt;br /&gt;
)bar&lt;br /&gt;
(baz&lt;br /&gt;
)baz&lt;br /&gt;
)foo&lt;br /&gt;
[diaconicon](0) $ echo &amp;#039;&amp;amp;lt;foo&amp;amp;gt;&amp;amp;lt;?xml-stylesheet href=&amp;quot;headlines.css&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;amp;gt;&amp;amp;lt;bar qux=&amp;quot;quux&amp;quot;&amp;amp;gt;quuux&amp;amp;lt;/bar&amp;amp;gt;&amp;amp;lt;baz/&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;&amp;#039; | xmlstarlet pyx | xmlstarlet p2x&lt;br /&gt;
&amp;amp;lt;foo&amp;amp;gt;&amp;amp;lt;?xml-stylesheet href=&amp;quot;headlines.css&amp;quot; type=&amp;quot;text/css&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;bar qux=&amp;quot;quux&amp;quot;&amp;amp;gt;quuux&amp;amp;lt;/bar&amp;amp;gt;&amp;amp;lt;baz&amp;amp;gt;&amp;amp;lt;/baz&amp;amp;gt;&amp;amp;lt;/foo&amp;amp;gt;&lt;br /&gt;
[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Pretty Printing===&lt;br /&gt;
&amp;lt;tt&amp;gt;xml fo&amp;lt;/tt&amp;gt; can pretty-print well-formed input using either spaces or tabs. Consult &amp;lt;tt&amp;gt;xml fo --help&amp;lt;/tt&amp;gt;; it&amp;#039;s pretty self-explanatory.&lt;br /&gt;
&lt;br /&gt;
==XML Input==&lt;br /&gt;
===Directory Listings===&lt;br /&gt;
&amp;lt;tt&amp;gt;xml ls&amp;lt;/tt&amp;gt; will output a verbose listing of the current directory&amp;#039;s contents, displaying all times in ISO 8601 format. It takes no options. The return value is, for reasons unfathomable, the number of files listed as opposed to a success/error indicator -- don&amp;#039;t get caught unawares.&amp;lt;pre&amp;gt;[diaconicon](0) $ xmlstarlet ls&lt;br /&gt;
&amp;amp;lt;dir&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;d p=&amp;quot;rwxr-xr-x&amp;quot; a=&amp;quot;20070421T065820Z&amp;quot; m=&amp;quot;20070415T190332Z&amp;quot; s=&amp;quot;4096&amp;quot; n=&amp;quot;trunk&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;d p=&amp;quot;rwxr-xr-x&amp;quot; a=&amp;quot;20070421T044013Z&amp;quot; m=&amp;quot;20070419T181636Z&amp;quot; s=&amp;quot;4096&amp;quot; n=&amp;quot;.svn&amp;quot;/&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/dir&amp;amp;gt;&lt;br /&gt;
[diaconicon](2) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Recovering Documents===&lt;br /&gt;
&amp;lt;tt&amp;gt;xml fo -R&amp;lt;/tt&amp;gt; attempts to magically fix up malformed XML. It&amp;#039;s pretty badass.&amp;lt;pre&amp;gt;[diaconicon](0) $ echo &amp;quot;&amp;amp;lt;fucked&amp;amp;gt; this is all &amp;amp;lt;fubar&amp;amp;gt; &amp;amp;lt;/fukked&amp;amp;gt;&amp;quot; | xmlstarlet fo -R&lt;br /&gt;
-:1: parser error : Opening and ending tag mismatch: fubar line 1 and fukked&lt;br /&gt;
&amp;amp;lt;fucked&amp;amp;gt; this is all &amp;amp;lt;fubar&amp;amp;gt; &amp;amp;lt;/fukked&amp;amp;gt;&lt;br /&gt;
                                      ^&lt;br /&gt;
-:2: parser error : Premature end of data in tag fucked line 1&lt;br /&gt;
&lt;br /&gt;
^&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;fucked&amp;amp;gt; this is all &amp;amp;lt;fubar&amp;amp;gt; &amp;amp;lt;/fubar&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/fucked&amp;amp;gt;&lt;br /&gt;
[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Subversion===&lt;br /&gt;
&amp;lt;tt&amp;gt;svn log&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;svn status&amp;lt;/tt&amp;gt; both accept the --xml command line option.&amp;lt;pre&amp;gt;[diaconicon](0) $ svn status --xml&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;status&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;target&lt;br /&gt;
   path=&amp;quot;.&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;entry&lt;br /&gt;
   path=&amp;quot;trunk/clients/log.xml&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;wc-status&lt;br /&gt;
   props=&amp;quot;none&amp;quot;&lt;br /&gt;
   item=&amp;quot;unversioned&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/wc-status&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/entry&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/target&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/status&amp;amp;gt;&lt;br /&gt;
[diaconicon](0) $ svn log -r299 --xml&lt;br /&gt;
&amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;log&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;logentry&lt;br /&gt;
   revision=&amp;quot;299&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;author&amp;amp;gt;dank&amp;amp;lt;/author&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;date&amp;amp;gt;2007-04-19T16:47:10.226838Z&amp;amp;lt;/date&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;msg&amp;amp;gt;reenable the exitcode etc buildreport handlers&amp;amp;lt;/msg&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/logentry&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/log&amp;amp;gt;&lt;br /&gt;
[diaconicon](0) $&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validation==&lt;br /&gt;
All forms of the &amp;lt;tt&amp;gt;xml val&amp;lt;/tt&amp;gt; command as used below can be provided the -e command line option to verbosely print the causes of validation failures on stderr.&lt;br /&gt;
&lt;br /&gt;
===Well-formedness===&lt;br /&gt;
Well-formedness of an XML document can be verified with &amp;lt;tt&amp;gt;xml val&amp;lt;/tt&amp;gt;. Well-formedness mandates a single root node, balancing of all element start- and end-tags, proper syntax, proper use of character entities where necessary, etc.&lt;br /&gt;
&lt;br /&gt;
===RELAX-NG===&lt;br /&gt;
If a RELAX-NG schema has been provided, validation can be performed against it using &amp;lt;tt&amp;gt;xml val -r schema&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Transformation==&lt;br /&gt;
[[XSLT]] is awesomely powerful.&lt;br /&gt;
&lt;br /&gt;
===Dump all content===&lt;br /&gt;
Delimited by spaces:&lt;br /&gt;
&amp;lt;code&amp;gt;xml sel -t -m //\*\[not\(\*\)\] -v . -o &amp;#039; &amp;#039;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dank</name></author>
	</entry>
</feed>