I have this problem before as well. This problem is pretty wired.
When compose using PE, Arbortext will package the content and send to Arbortext Publish Engine. In the temp folder of PE, I see the XML content was send over but graphics were not no matter pegraphicpi=on or pegraphicpi=off (Which is different than what the document said. May be I did something wrong I don't know. I am using Arbortext 5.3 M150).
If PE is on a remote server, I have not find a way to solve it.
If PE is on your local machine, there is a way I find out.
In PE case, unparsed-entity-uri(gnbr) will return empty string. But there is a PI can be used to get the graphic file path. The following is my code to get the graphic path:
<xsl:variable name="v_graphic_path_nbr" select="unparsed-entity-uri(gnbr)"/>
<xsl:when test="normalize-space($v_graphic_path_nbr) != ''">
<xsl:when test="normalize-space($v_graphic_path_pi) != ''">
<xsl:with-param name="p_msg">Faile to get Graphic path! XPath: <xsl:call-template name="f-get-xpath"/></xsl:with-param>