Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
70
Task/XML-XPath/Lasso/xml-xpath.lasso
Normal file
70
Task/XML-XPath/Lasso/xml-xpath.lasso
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
// makes extracting attribute values easier
|
||||
define xml_attrmap(in::xml_namedNodeMap_attr) => {
|
||||
local(out = map)
|
||||
with attr in #in
|
||||
do #out->insert(#attr->name = #attr->value)
|
||||
return #out
|
||||
}
|
||||
|
||||
local(
|
||||
text = '<inventory title="OmniCorp Store #45x10^3">
|
||||
<section name="health">
|
||||
<item upc="123456789" stock="12">
|
||||
<name>Invisibility Cream</name>
|
||||
<price>14.50</price>
|
||||
<description>Makes you invisible</description>
|
||||
</item>
|
||||
<item upc="445322344" stock="18">
|
||||
<name>Levitation Salve</name>
|
||||
<price>23.99</price>
|
||||
<description>Levitate yourself for up to 3 hours per application</description>
|
||||
</item>
|
||||
</section>
|
||||
<section name="food">
|
||||
<item upc="485672034" stock="653">
|
||||
<name>Blork and Freen Instameal</name>
|
||||
<price>4.95</price>
|
||||
<description>A tasty meal in a tablet; just add water</description>
|
||||
</item>
|
||||
<item upc="132957764" stock="44">
|
||||
<name>Grob winglets</name>
|
||||
<price>3.56</price>
|
||||
<description>Tender winglets of Grob. Just add water</description>
|
||||
</item>
|
||||
</section>
|
||||
</inventory>
|
||||
',
|
||||
xml = xml(#text)
|
||||
)
|
||||
|
||||
local(
|
||||
items = #xml -> extract('//item'),
|
||||
firstitem = #items -> first,
|
||||
itemattr = xml_attrmap(#firstitem -> attributes),
|
||||
newprices = array
|
||||
)
|
||||
|
||||
'<strong>First item:</strong><br />
|
||||
UPC: '
|
||||
#itemattr -> find('upc')
|
||||
' (stock: '
|
||||
#itemattr -> find('stock')
|
||||
')<br />'
|
||||
#firstitem -> extractone('name') -> nodevalue
|
||||
' ['
|
||||
#firstitem -> extractone('price') -> nodevalue
|
||||
'] ('
|
||||
#firstitem -> extractone('description') -> nodevalue
|
||||
')<br /><br />'
|
||||
|
||||
with item in #items
|
||||
let name = #item -> extractone('name') -> nodevalue
|
||||
let price = #item -> extractone('price') -> nodevalue
|
||||
do {
|
||||
#newprices -> insert(#name + ': ' + (decimal(#price) * 1.10) -> asstring(-precision = 2) + ' (' + #price + ')')
|
||||
}
|
||||
'<strong>Adjusted prices:</strong><br />'
|
||||
#newprices -> join('<br />')
|
||||
'<br /><br />'
|
||||
'<strong>Array with all names:</strong><br />'
|
||||
#xml -> extract('//name') -> asstaticarray
|
||||
14
Task/XML-XPath/LiveCode/xml-xpath.livecode
Normal file
14
Task/XML-XPath/LiveCode/xml-xpath.livecode
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
put revXMLCreateTree(fld "FieldXML",true,true,false) into xmltree
|
||||
|
||||
// task 1
|
||||
put revXMLEvaluateXPath(xmltree,"//item[1]") into nodepath
|
||||
put revXMLText(xmltree,nodepath,true)
|
||||
|
||||
// task 2
|
||||
put revXMLDataFromXPathQuery(xmltree,"//item/price",,comma)
|
||||
|
||||
// task 3
|
||||
put revXMLDataFromXPathQuery(xmltree,"//name") into namenodes
|
||||
filter namenodes without empty
|
||||
split namenodes using cr
|
||||
put namenodes is an array
|
||||
13
Task/XML-XPath/Nim/xml-xpath.nim
Normal file
13
Task/XML-XPath/Nim/xml-xpath.nim
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import xmldom, xmldomparser
|
||||
|
||||
let doc = "test3.xml".loadXMLFile.documentElement
|
||||
|
||||
# 1st task: retrieve the first "item" element
|
||||
let i = doc.getElementsByTagName("item")[0]
|
||||
|
||||
# 2nd task: perform an action on each "price" element (print it out)
|
||||
for j in doc.getElementsByTagName "price":
|
||||
echo j.firstChild.PText.data
|
||||
|
||||
# 3rd task: get an array of all the "name" elements
|
||||
let namesArray = doc.getElementsByTagName "name"
|
||||
7
Task/XML-XPath/Sidef/xml-xpath.sidef
Normal file
7
Task/XML-XPath/Sidef/xml-xpath.sidef
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
require('XML::XPath');
|
||||
|
||||
var x = %s'XML::XPath'.new(ARGF.slurp);
|
||||
|
||||
[x.findnodes('//item[1]')][0];
|
||||
say [x.findnodes('//price')].map{x.getNodeText(_)};
|
||||
[x.findnodes('//name')];
|
||||
Loading…
Add table
Add a link
Reference in a new issue