我对XSL名称空间有以下问题。我使用带有一个XSL文件和一个XML文件的FOP生成PDF。
这是我的XML文件:
<?xml version= "1.0" encoding= "ISO-8859-2"?>
<ReportContent>BLABLA<yt:picture src="pic.png"/></ReportContent>
这是我的XSL文件:
<?xml version="1.0" encoding="ISO-8859-2"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:yt="http://www.yt.com/text/2"
>
<xsl:template match="/">
<fo:root >
[...]
<fo:flow >
<fo:block> <xsl:apply-templates select='ReportContent'> </xsl:apply-templates></fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
我需要包含名称空间yt:。当我在xml中这样做时:
<?xml version= "1.0" encoding= "ISO-8859-2"?>
<ReportContent xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:yt="http://www.yt.com/text/2">
BLABLA<yt:picture src="pic.png"/>
</ReportContent>
效果很好。
但在现实生活中,我无法将命名空间添加到我的xml中(创建xml的方式不允许)。
所以我试着只在xsl上编写它,但它根本不起作用。(我试图将它添加到xsl中的每个标签,但它不起作用。)
我不明白整个命名空间的工作原理是什么......
你能帮我找到把命名空间放在xsl中的位置,这样我就不会收到任何错误。
希望我的问题很清楚
提前致谢。
答案 0 :(得分:2)
@Ricky,是的,XML必须改变。抱歉。看起来应该是这样的:
<?xml version= "1.0" encoding= "ISO-8859-2"?>
<ReportContent xmlns:yt="http://www.yt.com/text/2">BLABLA<yt:picture src="pic.png"/>
</ReportContent>