In AXI4 , VALID and READY signals are used as flow control on each channel, with the provider of data on the channel asserting VALID to let the consumer of data know it has data to send. On a Xilinx FIFO, the EMPTY flag serves the same purpose. It lets the consumer of the data know whether or not there is data to consume.
The document says that the AXI4 interface is a wrapper around the native-interface FIFO. Thus, using the VALID signal as an EMPTY signal makes perfect sense, and follows the spirit, if not the letter, of the AXI4 spec.
Does it follow the AXI4 spec exactly? I don't know. It has been a few years since I used AXI4. But as a designer, as long as I understand what Xilinx is doing, it doesn't really matter. I will design the interfacing circuitry to work with Xilinx's interpretation of the AXI4 spec. If I am using legacy AXI4 IP, i will design glue logic to make it work.
Why do you think it does not follow the spec?
r.b.