XSLT和XSLFO命名空间

时间:2011-06-06 16:33:00

标签: xml xslt namespaces xml-namespaces xsl-fo

我对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中的位置,这样我就不会收到任何错误。

希望我的问题很清楚

提前致谢。

1 个答案:

答案 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>