Unë kam një skedar të dhënash në një format të ngjashëm me
<!-- mydata.xml -->
<alldata>
<data id="first">
<coord><x>0</x><y>5</y></coord>
<coord><x>1</x><y>4</y></coord>
<coord><x>2</x><y>3</y></coord>
</data>
<data id="second">
<coord><x>0</x><y>2</y></coord>
<coord><x>1</x><y>1</y></coord>
<coord><x>2</x><y>0</y></coord>
</data>
</alldata>
Meqenëse vlerat x
janë të njëjta në të gjitha grupet e mia të të dhënave në skedarët xml, do të doja t'i nxjerr të dhënat në një format csv si p.sh.
x;first y;second y
0;5;2
1;4;1
2;3;0
Në mënyrë naive, jam përpjekur të përputh <coord>
në elementin e parë <data>
dhe të përdor position()
për të nxjerrë <y>
të saktë nga <coord>
-të e ardhshme në elementin <data>
me atributin e dytë id
:
xml sel -T -t -m "/alldata/data[@id='first']/coord" -v "concat(x,';',y,';',../../data[@id='second']/coord[position()]/y,';',position())" -n mydata.xml
Kjo nxjerr <y>
nga <coord>
e para në të gjitha linjat në dalje edhe pse position()
është rritur në secilën rresht:
0;5;2;1
1;4;2;2
2;3;2;3
Si mund të arrij atë që kam vendosur të bëj?