/*
 *  SPL - The SPL Programming Language
 *  Copyright (C) 2004, 2005  Clifford Wolf <clifford@clifford.at>
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 *  example52.spl: example for the real XML module
 */

// SKIP_IF_NO_LIBXML2
load "xml";

var xml_file = <><?xml version="1.0"?>
<data
		xmlns:foo='*FOO*'
		xmlns:bar='*BAR*'>
	<block>
		<record foo:data="11" />
		<record foo:data="12" />
		<record bar:data="13" />
		<record bar:data="14" />
	</block>
	<block>
		<record foo:data="21" />
		<record foo:data="22" />
		<foo:record bar:data="23" />
		<bar:record bar:data="24" />
	</block>
	<foo:block>
		<text1>&lt;  THIS 31&gt;</text1>
		<foo:text1>&lt;    IS 32&gt;</foo:text1>
		<bar:text1>&lt;     A 33&gt;</bar:text1>
	</foo:block>
	<foo:block>
		<text2>&lt;  VERY 41&gt;</text2>
		<foo:text2>&lt;SIMPLE 42&gt;</foo:text2>
		<bar:text2>&lt; TEST! 43&gt;</bar:text2>
	</foo:block>
</data>
</>;

var doc = xml_parse(xml_file);

foreach[] i (doc["//@*"].nodes)
	debug "ATTRIBUTE ${doc[i]}: $i";

foreach[] i (doc["//*[local-name()='text1']"])
	debug "TEXT1 ${doc[i].data}: $i";

foreach[] i (["//text2", "//foo:text2", "//bar:text2"])
	debug "TEXT2 ${doc[i]}: $i";

debug "Content of all attribute nodes:\n${ doc["//@*"].data.[" "] }";

debug "Content of first foo:block element:\n${ doc["//foo:block"] }";

debug "Content of all text elements:\n${ doc["//*[local-name()='text1' or local-name()='text2']"].data.["\n"] }";

debug "XML for 1st <foo:block> element:\n${ doc["//foo:block"].xml }";

debug "XML for all <record> elements:\n${ doc["//record"].xml.[", "] }";

