2011-06-06 177 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