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
|
/*
* 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>< THIS 31></text1>
<foo:text1>< IS 32></foo:text1>
<bar:text1>< A 33></bar:text1>
</foo:block>
<foo:block>
<text2>< VERY 41></text2>
<foo:text2><SIMPLE 42></foo:text2>
<bar:text2>< TEST! 43></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.[", "] }";
|