In Steane's method for fault-tolerant syndrome measurement, as explained in arXiv:quant-ph/0504218, ancilla is prepared in the logical 0 state for the circuit performing the X-type stabilizer measurement, and then measured in the X basis. I don't understand how this can detect a Z error that occurred in the data block. In a typical syndrome measurement circuit, if we want to detect a Z error, we prepare the ancilla in the $|+\rangle$ state and measure it in the X basis. If a Z error occurs, it becomes $|-\rangle$, so we can detect it with an X basis measurement. However, I don't understand how measuring the logical 0 state in the X basis can detect a Z error.
If you measure all the individual $X$ values (each with a $\pm 1$ outcome), you can compute the values of all the $X$-type stabilizers (just take appropriate products). Hence, you can use those values to detect errors just as you would by directly measuring a $\pm 1$ value for each stabilizer.
Of course, we must add in to this why measuring the ancilla detects errors on the computational qubit. If the ancilla were error-free, this would be fairly straightforward: transversal controlled-not leaves the logical 0 of the ancilla unchanged. But any $Z$ errors on the target qubits propagate backwards through the controlled-not and appear on the ancilla. These are what you're attempting to detect and correct.
Of course, there is some possibility that a Z error will arise on the ancilla, not the computational qubit. What you have to argue at that point is that the "correction" will introduce no more than one error on the computational qubit (which is good enough for the standard constructions of fault tolerance, because it will be caught by the next round of error correction).