2011-06-06 76 views
0

我对XSL命名空间有以下问题。我使用带有一个XSL文件和一个XML文件的FOP生成PDF。XSLT和XSLFO命名空间

这里是我的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

没有很好地形成你的XML文档的XML,关于命名空间:它使用'YT:'前缀未声明的。所以,它不能成功处理XML文件,这不是XSLT的错。你用什么来创建XML文件,允许使用名称空间前缀,但不允许你创建它们? – LarsH 2011-06-06 16:47:45

+0

“创造他们”我的意思是“宣布他们”。 – LarsH 2011-06-06 16:58:59

+0

如果我理解的很好,如果xml使用命名空间yt :,声明必须在xml中,否则它不能被使用? – 2011-06-06 16:59:03

回答

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> 
+0

非常感谢,我会尽力改变它 – 2011-06-06 17:07:47