matrix concatenation help

hello i’m trying to understand the collada format and wondered if anyone could help.

I have the following which i’ve exported from blender

<node id="Armature" name="Armature" type="NODE">
    <translate sid="location">0 0 0</translate>
    <rotate sid="rotationZ">0 0 1 0</rotate>
    <rotate sid="rotationY">0 1 0 0</rotate>
    <rotate sid="rotationX">1 0 0 0</rotate>
    <scale sid="scale">1 1 1</scale>
    <node id="RootBone" name="RootBone" sid="RootBone" type="JOINT">
      <matrix sid="transform">1 0 0 0 0 7.54979e-8 -1 0 0 1 7.54979e-8 0 0 0 0 1</matrix>
      <node id="FirstBone" name="FirstBone" sid="FirstBone" type="JOINT">
        <matrix sid="transform">-0.9191567 -0.3611424 0.1572483 0 -0.3603939 0.9321707 0.03426374 1 -0.1589564 -0.02517757 -0.9869645 0 0 0 0 1</matrix>
        <node id="SecondBone" name="SecondBone" sid="SecondBone" type="JOINT">
          <matrix sid="transform">0.9069253 0.386294 -0.1681168 -2.98023e-8 -0.3854323 0.9219084 0.03907628 0.9999999 0.1700833 0.0293584 0.9849922 -7.45058e-9 0 0 0 1</matrix>
          <node id="ThirdBone" name="ThirdBone" sid="ThirdBone" type="JOINT">
            <matrix sid="transform">0.9773424 -0.1937605 0.08519854 0 0.1939702 0.9809897 0.005888492 0.9999998 -0.08471989 0.01077094 0.9963466 -1.49012e-8 0 0 0 1</matrix>
          </node>
        </node>
      </node>
    </node>
</node>

What i’m trying to understand is how the matrix values are this way. As in blender i have the following matrix data for these joints

RootBone
World Matrix
1, 0, 0, 0
0, 0, -1, 0
0, 1, 0, 0
0, 0, 0, 1

FirstBone
World Matrix
-1, 0, -0, 0
-0, -0, 1, 0
0, 1, 0, 1
0, 0, 0, 1

SecondBone
World Matrix
-1, 0, -0, 0
-0, -0, 1, 0
0, 1, 0, 2
0, 0, 0, 1

ThirdBone
World Matrix
-1, 0, -0, 0
-0, -0, 1, 0
0, 1, 0, 3
0, 0, 0, 1

Then the local matrix for each bone with a parent is
1, -0, 0, 0
-0, 1, 0, 0
0, 0, 1, 1
0, 0, 0, 1

As far as i can see some matrix concatenation is needed but i’m not sure exactly. Blender is row major i believe so bone matrices need to be transposed and then concatenated or something to get the same data? No idea, any help much appreciated