Я себе сделал такой шаблон, чтобы смотреть, какие узлы и атрибуты есть в xml:
Код:
    <!-- Вывод содержимого узла -->
    <xsl:template name="print">
                    <fo:block xsl:use-attribute-sets="text" margin-top="12pt">
                        <fo:block>Orig:</fo:block>
                        <xsl:for-each select=".">
                            <fo:block margin-left="15pt">
                                <xsl:value-of select="local-name()"/>:<xsl:value-of select="."/>
                            </fo:block>
                        </xsl:for-each>
                        <fo:block>Children:</fo:block>
                        <xsl:for-each select="./*">
                            <fo:block margin-left="15pt">
                                <xsl:value-of select="local-name()"/>:<xsl:value-of select="."/>
                            </fo:block>
                        </xsl:for-each>
                        <fo:block>Attrs:</fo:block>
                        <xsl:for-each select="./@*">
                            <fo:block margin-left="15pt">
                                <xsl:value-of select="local-name()"/>:<xsl:value-of select="."/>
                            </fo:block>
                        </xsl:for-each>
                        <xsl:for-each select="./*">
                            <xsl:call-template name="print"/>
                        </xsl:for-each>
                    </fo:block>
    </xsl:template>
Вызывать вот так:
Код:
<xsl:for-each select="./*">
    <xsl:call-template name="print"/>
</xsl:for-each>
В результате в pdf будет всё дерево выведено.
Не идеал, конечно, но работает.