0
我有类似格式使用'位置()`提取特定元素
<!-- 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>
由于x
值是我在XML的文件中的所有数据集相同的数据文件,我想提取数据到CSV格式类似
x;first y;second y
0;5;2
1;4;1
2;3;0
天真,我试图在第一<data>
匹配元素<coord>
和使用position()
提取从下一<coord>
的正确<y>
在<data>
元件与第二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
此输出从在输出所有行的第一<coord>
的<y>
即使position()
中的每一行被递增:
0;5;2;1
1;4;2;2
2;3;2;3
我怎样才能实现我打算怎么做?
非常感谢。这正是我正在寻找的东西,并没有弄清楚我自己。 –