From ship-chiyodagata_2.xml, latest github version:
<cannons>
<cannon cannon_id="1" deck_id="1" type="cannon" x1="0.0" x2="0.0" y1="1.82" y2="1.822" z1="13.824" z2="14.076"/>
<cannon cannon_id="4" deck_id="2" type="cannon" x1="-1.728" x2="-1.98" y1="1.199" y2="1.199" z1="-6.248" z2="-6.248"/>
<cannon cannon_id="5" deck_id="2" type="cannon" x1="1.695" x2="1.947" y1="1.237" y2="1.237" z1="-8.328" z2="-8.328"/>
</cannons>
So x is left-right, y is height, and z is back-front?
So cannon 1 is pointing front (z=13.8 to 14.1) on center of the ship on upper deck (y=+1.8).
Cannons 4/5 are on lower deck (y=+1.2) pointing directly left (x=-1.7..-1.98) and right (x=1.69..1.94), but not located in the same place (z=-6.248 for left one, z=-8.328 for right one)
All that sounds perfectly logical.
(words "left", "right", "front", "up", "down" might be totally backwards)
The only thing that looks weird is that script orders attributes alphabetically (x1 x2 y1 y2 z1 z2) instead of logically (x1 y1 z1 x2 y2 z2).
Am I horribly confused here?