<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="et">
	<id>http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Teadmiste_kursuse_naiteprogramm_1</id>
	<title>Teadmiste kursuse naiteprogramm 1 - Redigeerimiste ajalugu</title>
	<link rel="self" type="application/atom+xml" href="http://www.lambda.ee/w/index.php?action=history&amp;feed=atom&amp;title=Teadmiste_kursuse_naiteprogramm_1"/>
	<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;action=history"/>
	<updated>2026-11-08T19:20:10Z</updated>
	<subtitle>Selle lehekülje redigeerimiste ajalugu</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=7859&amp;oldid=prev</id>
		<title>Tammet – 8. veebruar 2006, kell 18:09</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=7859&amp;oldid=prev"/>
		<updated>2006-02-08T18:09:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&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;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 8. veebruar 2006, kell 20:09&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-l198&quot;&gt;198. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;198. rida:&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;#endif&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;#endif&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; &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;/pre&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;~&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;~&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;~&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;~&lt;/del&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-824:rev-7859:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=824&amp;oldid=prev</id>
		<title>Tammet – 8. veebruar 2006, kell 18:08</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=824&amp;oldid=prev"/>
		<updated>2006-02-08T18:08:56Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&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;et&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←Vanem redaktsioon&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Redaktsioon: 8. veebruar 2006, kell 20:08&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-l88&quot;&gt;88. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;88. rida:&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;     xmlXPathContextPtr xpathCtx;  &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;     xmlXPathContextPtr xpathCtx;  &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;     xmlXPathObjectPtr xpathObj;  &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;     xmlXPathObjectPtr xpathObj;  &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;    int tmp;&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;      &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;      &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;     assert(filename);&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;     assert(filename);&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-l107&quot;&gt;107. rida:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;108. rida:&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;         return(-1);&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;         return(-1);&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;     }&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;     }&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;      &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;     tmp=xmlXPathRegisterNs(xpathCtx,&quot;rdf&quot;, &quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&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;if (tmp!=0) {&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;       fprintf(stderr,&quot;Error: unable to register ns\n&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;       xmlFreeDoc(doc);&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;       return(-1);&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;/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;     /* Evaluate xpath expression */&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;     /* Evaluate xpath expression */&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;     xpathObj = xmlXPathEvalExpression(xpathExpr, xpathCtx);&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;     xpathObj = xmlXPathEvalExpression(xpathExpr, xpathCtx);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key lambdadb:diff:1.41:old-823:rev-824:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=823&amp;oldid=prev</id>
		<title>Tammet – 8. veebruar 2006, kell 18:08</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=823&amp;oldid=prev"/>
		<updated>2006-02-08T18:08:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;amp;diff=823&amp;amp;oldid=822&quot;&gt;Näita muudatusi&lt;/a&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
	<entry>
		<id>http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=822&amp;oldid=prev</id>
		<title>Tammet – 8. veebruar 2006, kell 18:03</title>
		<link rel="alternate" type="text/html" href="http://www.lambda.ee/w/index.php?title=Teadmiste_kursuse_naiteprogramm_1&amp;diff=822&amp;oldid=prev"/>
		<updated>2006-02-08T18:03:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Uus lehekülg&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;                           &lt;br /&gt;
/** &lt;br /&gt;
 * section:     XPath&lt;br /&gt;
 * synopsis:    Load a document, locate subelements with XPath, modify&lt;br /&gt;
 *              said elements and save the resulting document.&lt;br /&gt;
 * purpose:     Shows how to make a full round-trip from a load/edit/save&lt;br /&gt;
 * usage:       xpath2 &amp;lt;xml-file&amp;gt; &amp;lt;xpath-expr&amp;gt; &amp;lt;new-value&amp;gt;&lt;br /&gt;
 * test:        xpath2 test3.xml &amp;#039;//discarded&amp;#039; discarded &amp;gt; xpath2.tmp ; diff xpath2.tmp &lt;br /&gt;
xpath2.res ; rm xpath2.tmp&lt;br /&gt;
 * author:      Aleksey Sanin and Daniel Veillard&lt;br /&gt;
 * copy:        see Copyright for the status of this software.&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;assert.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;libxml/tree.h&amp;gt;&lt;br /&gt;
#include &amp;lt;libxml/parser.h&amp;gt;&lt;br /&gt;
#include &amp;lt;libxml/xpath.h&amp;gt;&lt;br /&gt;
#include &amp;lt;libxml/xpathInternals.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#if defined(LIBXML_XPATH_ENABLED) &amp;amp;&amp;amp; defined(LIBXML_SAX1_ENABLED) &amp;amp;&amp;amp; \&lt;br /&gt;
    defined(LIBXML_OUTPUT_ENABLED)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
static void usage(const char *name);&lt;br /&gt;
&lt;br /&gt;
    /* free the document */&lt;br /&gt;
    xmlFreeDoc(doc); &lt;br /&gt;
    &lt;br /&gt;
    return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * update_xpath_nodes:&lt;br /&gt;
 * @nodes:              the nodes set.&lt;br /&gt;
 * @value:              the new value for the node(s)&lt;br /&gt;
 *&lt;br /&gt;
 * Prints the @nodes content to @output.&lt;br /&gt;
 */&lt;br /&gt;
static void&lt;br /&gt;
update_xpath_nodes(xmlNodeSetPtr nodes, const xmlChar* value) {&lt;br /&gt;
    int size;&lt;br /&gt;
    int i;&lt;br /&gt;
    &lt;br /&gt;
    assert(value);&lt;br /&gt;
    size = (nodes) ? nodes-&amp;gt;nodeNr : 0;&lt;br /&gt;
    &lt;br /&gt;
    /*&lt;br /&gt;
     * NOTE: the nodes are processed in reverse order, i.e. reverse document&lt;br /&gt;
     *       order because xmlNodeSetContent can actually free up descendant&lt;br /&gt;
     *       of the node and such nodes may have been selected too ! Handling&lt;br /&gt;
     *       in reverse order ensure that descendant are accessed first, before&lt;br /&gt;
     *       they get removed. Mixing XPath and modifications on a tree must be&lt;br /&gt;
     *       done carefully !&lt;br /&gt;
     */&lt;br /&gt;
    for(i = size - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
        assert(nodes-&amp;gt;nodeTab[i]);&lt;br /&gt;
        &lt;br /&gt;
        xmlNodeSetContent(nodes-&amp;gt;nodeTab[i], value);&lt;br /&gt;
        /*&lt;br /&gt;
         * All the elements returned by an XPath query are pointers to&lt;br /&gt;
         * elements from the tree *except* namespace nodes where the XPath&lt;br /&gt;
         * semantic is different from the implementation in libxml2 tree.&lt;br /&gt;
         * As a result when a returned node set is freed when&lt;br /&gt;
         * xmlXPathFreeObject() is called, that routine must check the&lt;br /&gt;
         * element type. But node from the returned set may have been removed&lt;br /&gt;
         * by xmlNodeSetContent() resulting in access to freed data.&lt;br /&gt;
         * This can be exercised by running&lt;br /&gt;
         *       valgrind xpath2 test3.xml &amp;#039;//discarded&amp;#039; discarded&lt;br /&gt;
         * There is 2 ways around it:&lt;br /&gt;
         *   - make a copy of the pointers to the nodes from the result set &lt;br /&gt;
         *     then call xmlXPathFreeObject() and then modify the nodes&lt;br /&gt;
         * or&lt;br /&gt;
         *   - remove the reference to the modified nodes from the node set&lt;br /&gt;
         *     as they are processed, if they are not namespace nodes.&lt;br /&gt;
         */&lt;br /&gt;
        if (nodes-&amp;gt;nodeTab[i]-&amp;gt;type != XML_NAMESPACE_DECL)&lt;br /&gt;
            nodes-&amp;gt;nodeTab[i] = NULL;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#else&lt;br /&gt;
int main(void) {&lt;br /&gt;
    fprintf(stderr, &amp;quot;XPath support not compiled in\n&amp;quot;);&lt;br /&gt;
    exit(1);&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
    /* free the document */&lt;br /&gt;
    xmlFreeDoc(doc); &lt;br /&gt;
    &lt;br /&gt;
    return(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * update_xpath_nodes:&lt;br /&gt;
 * @nodes:              the nodes set.&lt;br /&gt;
 * @value:              the new value for the node(s)&lt;br /&gt;
 *&lt;br /&gt;
 * Prints the @nodes content to @output.&lt;br /&gt;
 */&lt;br /&gt;
static void&lt;br /&gt;
update_xpath_nodes(xmlNodeSetPtr nodes, const xmlChar* value) {&lt;br /&gt;
    int size;&lt;br /&gt;
    int i;&lt;br /&gt;
    &lt;br /&gt;
    assert(value);&lt;br /&gt;
    size = (nodes) ? nodes-&amp;gt;nodeNr : 0;&lt;br /&gt;
    &lt;br /&gt;
    /*&lt;br /&gt;
     * NOTE: the nodes are processed in reverse order, i.e. reverse document&lt;br /&gt;
     *       order because xmlNodeSetContent can actually free up descendant&lt;br /&gt;
     *       of the node and such nodes may have been selected too ! Handling&lt;br /&gt;
     *       in reverse order ensure that descendant are accessed first, before&lt;br /&gt;
     *       they get removed. Mixing XPath and modifications on a tree must be&lt;br /&gt;
     *       done carefully !&lt;br /&gt;
     */&lt;br /&gt;
    for(i = size - 1; i &amp;gt;= 0; i--) {&lt;br /&gt;
        assert(nodes-&amp;gt;nodeTab[i]);&lt;br /&gt;
        &lt;br /&gt;
        xmlNodeSetContent(nodes-&amp;gt;nodeTab[i], value);&lt;br /&gt;
        /*&lt;br /&gt;
         * All the elements returned by an XPath query are pointers to&lt;br /&gt;
         * elements from the tree *except* namespace nodes where the XPath&lt;br /&gt;
         * semantic is different from the implementation in libxml2 tree.&lt;br /&gt;
         * As a result when a returned node set is freed when&lt;br /&gt;
         * xmlXPathFreeObject() is called, that routine must check the&lt;br /&gt;
         * element type. But node from the returned set may have been removed&lt;br /&gt;
         * by xmlNodeSetContent() resulting in access to freed data.&lt;br /&gt;
         * This can be exercised by running&lt;br /&gt;
         *       valgrind xpath2 test3.xml &amp;#039;//discarded&amp;#039; discarded&lt;br /&gt;
         * There is 2 ways around it:&lt;br /&gt;
         *   - make a copy of the pointers to the nodes from the result set &lt;br /&gt;
         *     then call xmlXPathFreeObject() and then modify the nodes&lt;br /&gt;
         * or&lt;br /&gt;
         *   - remove the reference to the modified nodes from the node set&lt;br /&gt;
         *     as they are processed, if they are not namespace nodes.&lt;br /&gt;
         */&lt;br /&gt;
        if (nodes-&amp;gt;nodeTab[i]-&amp;gt;type != XML_NAMESPACE_DECL)&lt;br /&gt;
            nodes-&amp;gt;nodeTab[i] = NULL;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#else&lt;br /&gt;
int main(void) {&lt;br /&gt;
    fprintf(stderr, &amp;quot;XPath support not compiled in\n&amp;quot;);&lt;br /&gt;
    exit(1);&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
~&lt;br /&gt;
~&lt;br /&gt;
~&lt;br /&gt;
~&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tammet</name></author>
	</entry>
</feed>