Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_prolog_xml:prownanie [2008/06/02 19:52] miw |
pl:miw:miw08_prolog_xml:prownanie [2008/06/02 20:00] miw |
===== Porównanie postaci prologowych w wybranych wersjach Prologu ===== | |
| |
Porównanie przeprowadzono dla pliku xml pochodzącego z syetemy VARDA_M1 | |
| |
Do porównania postaci prologowej pliku XML zdecydowano się wykorzystać następujące wersje prologu. | |
| |
- SWI-Prolog | |
- BProlog | |
- JIProlog | |
| |
Wersje te nie posiadają żadnych ograniczeń w użyciu. | |
| |
Otrzymano następujące wyniki: | |
| |
==== SWI-Prolog ==== | |
[[http://www.swi-prolog.org/packages/sgml2pl.html | SWI Prolog]] | |
| |
Plik XML po sparsowaniu w SWI Prologu za pomocą predykatu //load_xml_file('therm.xml',X)// jest w postaci listy, która składa się z zagnieżdżonych struktur typu //**element(Node_Name, [Value], [child_element])**//. | |
<code prolog> | |
X = [element(hml, [], [ | |
, element(type_set, [], []), | |
, element(attribute_set, [], [ | |
, element(att, [name=Thermostat, id=att_0, value=single, class=ro], []), | |
, element(att, [name=Time, id=att_1, value=single, class=ro], []), | |
, element(att, [name=Temperature, id=att_2, value=single, class=ro], []), | |
, element(att, [name=Date, id=att_3, value=single, class=ro], []), | |
, element(att, [name=Hour, id=att_4, value=single, class=ro], []), | |
, element(att, [name=season, id=att_5, value=single, class=ro], []), | |
, element(att, [name=operation, id=att_6, value=single, class=ro], []), | |
, element(att, [name=thermostat_settings, id=att_7, value=single, class=ro], []), | |
, element(att, [name=day, id=att_8, value=single, class=ro], []), | |
, element(att, [name=month, id=att_9, value=single, class=ro], []), | |
, element(att, [name=today, id=att_10, value=single, class=ro], []), | |
, element(att, [name=hour, id=att_11, value=single, class=ro], []), | |
]), | |
, element(property_set, [], [ | |
, element(property, [id=prp_0], [ | |
, element(attref, [ref=att_0], []), | |
]), | |
, element(property, [id=prp_1], [ | |
, element(attref, [ref=att_1], []), | |
, element(attref, [ref=att_2], []), | |
]), | |
, element(property, [id=prp_2], [ | |
, element(attref, [ref=att_1], []), | |
]), | |
, element(property, [id=prp_3], [ | |
, element(attref, [ref=att_2], []), | |
]), | |
, element(property, [id=prp_4], [ | |
, element(attref, [ref=att_3], []), | |
, element(attref, [ref=att_4], []), | |
, element(attref, [ref=att_5], []), | |
, element(attref, [ref=att_6], []), | |
]), | |
, element(property, [id=prp_5], [ | |
, element(attref, [ref=att_3], []), | |
, element(attref, [ref=att_4], []), | |
]), | |
, element(property, [id=prp_6], [ | |
, element(attref, [ref=att_5], []), | |
, element(attref, [ref=att_6], []), | |
]), | |
, element(property, [id=prp_7], [ | |
, element(attref, [ref=att_7], []), | |
]), | |
, element(property, [id=prp_8], [ | |
, element(attref, [ref=att_5], []), | |
]), | |
, element(property, [id=prp_9], [ | |
, element(attref, [ref=att_6], []), | |
]), | |
, element(property, [id=prp_10], [ | |
, element(attref, [ref=att_3], []), | |
]), | |
, element(property, [id=prp_11], [ | |
, element(attref, [ref=att_4], []), | |
]), | |
, element(property, [id=prp_12], [ | |
, element(attref, [ref=att_8], []), | |
, element(attref, [ref=att_9], []), | |
, element(attref, [ref=att_10], []), | |
]), | |
, element(property, [id=prp_13], [ | |
, element(attref, [ref=att_9], []), | |
]), | |
, element(property, [id=prp_14], [ | |
, element(attref, [ref=att_8], []), | |
, element(attref, [ref=att_10], []), | |
]), | |
, element(property, [id=prp_15], [ | |
, element(attref, [ref=att_8], []), | |
]), | |
, element(property, [id=prp_16], [ | |
, element(attref, [ref=att_10], []), | |
]), | |
, element(property, [id=prp_17], [ | |
, element(attref, [ref=att_11], []), | |
]), | |
]), | |
, element(tph, [], [ | |
, element(trans, [src=prp_0, dst=prp_1], []), | |
, element(trans, [src=prp_1, dst=prp_2], []), | |
, element(trans, [src=prp_1, dst=prp_3], []), | |
, element(trans, [src=prp_2, dst=prp_4], []), | |
, element(trans, [src=prp_4, dst=prp_5], []), | |
, element(trans, [src=prp_4, dst=prp_6], []), | |
, element(trans, [src=prp_3, dst=prp_7], []), | |
, element(trans, [src=prp_6, dst=prp_8], []), | |
, element(trans, [src=prp_6, dst=prp_9], []), | |
, element(trans, [src=prp_5, dst=prp_10], []), | |
, element(trans, [src=prp_5, dst=prp_11], []), | |
, element(trans, [src=prp_10, dst=prp_12], []), | |
, element(trans, [src=prp_12, dst=prp_13], []), | |
, element(trans, [src=prp_12, dst=prp_14], []), | |
, element(trans, [src=prp_14, dst=prp_15], []), | |
, element(trans, [src=prp_14, dst=prp_16], []), | |
, element(trans, [src=prp_11, dst=prp_17], []), | |
]), | |
, element(ard, [], [ | |
, element(dep, [independent=prp_8, dependent=prp_7], []), | |
, element(dep, [independent=prp_9, dependent=prp_7], []), | |
, element(dep, [independent=prp_13, dependent=prp_8], []), | |
, element(dep, [independent=prp_15, dependent=prp_16], []), | |
, element(dep, [independent=prp_16, dependent=prp_9], []), | |
, element(dep, [independent=prp_17, dependent=prp_9], []), | |
]), | |
])] | |
| |
</code> | |
| |
| |
==== BProlog ==== | |
[[http://www.probp.com/publib/xml.html | BProlog]] | |
| |
Struktura prologowa jest w postaci termu //**xml([version, encoding],[ element(...)])**// oraz zagnieżdżonych w nim termów //**element(Node_Name, [Value], [child_element])**//. | |
<code prolog> | |
| |
xml( [version="1.0", encoding="utf-8", standalone="no"],[ | |
doctype( hml, system( "hml.dtd" ) ), | |
element( hml,[],[ | |
element( type_set,[],[] ), | |
element( attribute_set,[],[ | |
element( att,[name="Thermostat", id="att_0", value="single", class="ro"],[] ), | |
element( att,[name="Time", id="att_1", value="single", class="ro"],[] ), | |
element( att,[name="Temperature", id="att_2", value="single", class="ro"],[] ), | |
element( att,[name="Date", id="att_3", value="single", class="ro"],[] ), | |
element( att,[name="Hour", id="att_4", value="single", class="ro"],[] ), | |
element( att,[name="season", id="att_5", value="single", class="ro"],[] ), | |
element( att,[name="operation", id="att_6", value="single", class="ro"],[] ), | |
element( att,[name="thermostat_settings", id="att_7", value="single", class="ro"],[] ), | |
element( att,[name="day", id="att_8", value="single", class="ro"],[] ), | |
element( att,[name="month", id="att_9", value="single", class="ro"],[] ), | |
element( att,[name="today", id="att_10", value="single", class="ro"],[] ), | |
element( att,[name="hour", id="att_11", value="single", class="ro"],[] ) | |
] ), | |
element( property_set,[],[ | |
element( property,[id="prp_0"],[ | |
element( attref,[ref="att_0"],[] ) | |
] ), | |
element( property,[id="prp_1"],[ | |
element( attref,[ref="att_1"],[] ), | |
element( attref,[ref="att_2"],[] ) | |
] ), | |
element( property,[id="prp_2"],[ | |
element( attref,[ref="att_1"],[] ) | |
] ), | |
element( property,[id="prp_3"],[ | |
element( attref,[ref="att_2"],[] ) | |
] ), | |
element( property,[id="prp_4"],[ | |
element( attref,[ref="att_3"],[] ), | |
element( attref,[ref="att_4"],[] ), | |
element( attref,[ref="att_5"],[] ), | |
element( attref,[ref="att_6"],[] ) | |
] ), | |
element( property,[id="prp_5"],[ | |
element( attref,[ref="att_3"],[] ), | |
element( attref,[ref="att_4"],[] ) | |
] ), | |
element( property,[id="prp_6"],[ | |
element( attref,[ref="att_5"],[] ), | |
element( attref,[ref="att_6"],[] ) | |
] ), | |
element( property,[id="prp_7"],[ | |
element( attref,[ref="att_7"],[] ) | |
] ), | |
element( property,[id="prp_8"],[ | |
element( attref,[ref="att_5"],[] ) | |
] ), | |
element( property,[id="prp_9"],[ | |
element( attref,[ref="att_6"],[] ) | |
] ), | |
element( property,[id="prp_10"],[ | |
element( attref,[ref="att_3"],[] ) | |
] ), | |
element( property,[id="prp_11"],[ | |
element( attref,[ref="att_4"],[] ) | |
] ), | |
element( property,[id="prp_12"],[ | |
element( attref,[ref="att_8"],[] ), | |
element( attref,[ref="att_9"],[] ), | |
element( attref,[ref="att_10"],[] ) | |
] ), | |
element( property,[id="prp_13"],[ | |
element( attref,[ref="att_9"],[] ) | |
] ), | |
element( property,[id="prp_14"],[ | |
element( attref,[ref="att_8"],[] ), | |
element( attref,[ref="att_10"],[] ) | |
] ), | |
element( property,[id="prp_15"],[ | |
element( attref,[ref="att_8"],[] ) | |
] ), | |
element( property,[id="prp_16"],[ | |
element( attref,[ref="att_10"],[] ) | |
] ), | |
element( property,[id="prp_17"],[ | |
element( attref,[ref="att_11"],[] ) | |
] ) | |
] ), | |
element( tph,[],[ | |
element( trans,[src="prp_0", dst="prp_1"],[] ), | |
element( trans,[src="prp_1", dst="prp_2"],[] ), | |
element( trans,[src="prp_1", dst="prp_3"],[] ), | |
element( trans,[src="prp_2", dst="prp_4"],[] ), | |
element( trans,[src="prp_4", dst="prp_5"],[] ), | |
element( trans,[src="prp_4", dst="prp_6"],[] ), | |
element( trans,[src="prp_3", dst="prp_7"],[] ), | |
element( trans,[src="prp_6", dst="prp_8"],[] ), | |
element( trans,[src="prp_6", dst="prp_9"],[] ), | |
element( trans,[src="prp_5", dst="prp_10"],[] ), | |
element( trans,[src="prp_5", dst="prp_11"],[] ), | |
element( trans,[src="prp_10", dst="prp_12"],[] ), | |
element( trans,[src="prp_12", dst="prp_13"],[] ), | |
element( trans,[src="prp_12", dst="prp_14"],[] ), | |
element( trans,[src="prp_14", dst="prp_15"],[] ), | |
element( trans,[src="prp_14", dst="prp_16"],[] ), | |
element( trans,[src="prp_11", dst="prp_17"],[] ) | |
] ), | |
element( ard,[],[ | |
element( dep,[independent="prp_8", dependent="prp_7"],[] ), | |
element( dep,[independent="prp_9", dependent="prp_7"],[] ), | |
element( dep,[independent="prp_13", dependent="prp_8"],[] ), | |
element( dep,[independent="prp_15", dependent="prp_16"],[] ), | |
element( dep,[independent="prp_16", dependent="prp_9"],[] ), | |
element( dep,[independent="prp_17", dependent="prp_9"],[] ) | |
] ) | |
] ) | |
] ). | |
</code> | |
| |
| |
==== JIProlog ==== | |
[[http://www.ugosweb.com/jiprolog/index.aspx | JIProlog]] | |
| |
Struktura postaci prologowej jest w postaci zagnieżdżonych termów zaczynając od xml_document i idąc wgłąb xml_element, xml_attribute oraz xml_text. | |
| |
Charakterystyczne dla postaci prologowej są: | |
| |
* **xml_document(Prolog, Root) [[version = V, encoding = E], DocType]** | |
* **xml_element(Name, Attributes, Children)** | |
* **xml_attribute(Name, Value)** | |
* **xml_text(Content)** | |
| |
<code prolog> | |
X=xml_document([version = 1.0, encoding = UTF-8], [], | |
xml_element(hml, [], [xml_text(), | |
xml_element(type_set, [], [xml_text()]), xml_text(), | |
xml_element(attribute_set, [], [xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_0), | |
xml_attribute(name, Thermostat), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_1), | |
xml_attribute(name, Time), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_2), | |
xml_attribute(name, Temperature), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_3), | |
xml_attribute(name, Date), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_4), | |
xml_attribute(name, Hour), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_5), | |
xml_attribute(name, season), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_6), | |
xml_attribute(name, operation), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_7), | |
xml_attribute(name, thermostat_settings), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_8), | |
xml_attribute(name, day), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_9), | |
xml_attribute(name, month), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_10), | |
xml_attribute(name, today), | |
xml_attribute(value, single)], | |
[]), xml_text(), | |
xml_element(att, [ | |
xml_attribute(class, ro), | |
xml_attribute(id, att_11), | |
xml_attribute(name, hour), | |
xml_attribute(value, single)], | |
[]), xml_text() | |
]), xml_text(), | |
xml_element(property_set, [], [xml_text(), | |
xml_element(property, [xml_attribute(id, prp_0)],[xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_0)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_1)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_1)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_2)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_2)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_1)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_3)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_2)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_4)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_3)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_4)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_5)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_6)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_5)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_3)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_4)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_6)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_5)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_6)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_7)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_7)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_8)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_5)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_9)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_6)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_10)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_3)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_11)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_4)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_12)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_8)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_9)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_10)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_13)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_9)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_14)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_8)], []), xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_10)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_15)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_8)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_16)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_10)], []), xml_text() | |
]), xml_text(), | |
xml_element(property, [xml_attribute(id, prp_17)], [xml_text(), | |
xml_element(attref, [xml_attribute(ref, att_11)], []), xml_text() | |
]), xml_text() | |
]), xml_text(), | |
xml_element(tph, [], [xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_1), xml_attribute(src, prp_0)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_2), xml_attribute(src, prp_1)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_3), xml_attribute(src, prp_1)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_4), xml_attribute(src, prp_2)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_5), xml_attribute(src, prp_4)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_6), xml_attribute(src, prp_4)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_7), xml_attribute(src, prp_3)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_8), xml_attribute(src, prp_6)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_9), xml_attribute(src, prp_6)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_10), xml_attribute(src, prp_5)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_11), xml_attribute(src, prp_5)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_12), xml_attribute(src, prp_10)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_13), xml_attribute(src, prp_12)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_14), xml_attribute(src, prp_12)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_15), xml_attribute(src, prp_14)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_16), xml_attribute(src, prp_14)], []), xml_text(), | |
xml_element(trans, [xml_attribute(dst, prp_17), xml_attribute(src, prp_11)], []), xml_text() | |
]), xml_text(), | |
xml_element(ard, [], [xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_7), xml_attribute(independent, prp_8)], []), xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_7), xml_attribute(independent, prp_9)], []), xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_8), xml_attribute(independent, prp_13)], []), xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_16), xml_attribute(independent, prp_15)], []), xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_9), xml_attribute(independent, prp_16)], []), xml_text(), | |
xml_element(dep, [xml_attribute(dependent, prp_9), xml_attribute(independent, prp_17)], []), xml_text() | |
]) | |
])) | |
</code> | |