2013-08-23 58 views
3

阿羅哈,XSLT非法屬性「分隔符」

在寫一個XSLT樣式表,我遇到了一個問題,我解決不了。我的基本XML結構如下

<nonUniqueConstraint name = "..."> 
    <column name = "..."/> 
    <column name = "..."/> 
</nonUniqueConstraint> 

我想打印所有列的名稱。所以我用下面的語句(我遍歷所有nonUniqueConstraints):

<xsl:value-of select="./column/@name" separator=", "/> 

然而,當我運行Ant構建文件,它輸出以下:

錯誤! [ERR 0510] [ERR XTSE0090]非法atttribute '分隔符' 是 指定

我尋找錯誤並發現了以下說明:

[ERR XTSE0090]這是一個靜態錯誤從XSLT 命名空間的元件具有其名稱空間或者是空的屬性(即 是,與前綴的名稱的屬性)或XSLT命名空間,其他 比此文檔中的元素定義的屬性。

使用分離屬性不過我看到許多實例中,例如here

我怎樣才能解決這個問題?

乾杯

回答

3

我想你應該檢查你是哪個XSLT處理器運行。

的錯誤是有點奇怪,這是因爲錯誤代碼XTSE0090僅定義在XSLT 2.0,但XSLT 2.0允許分離器屬性。 Jirka的答覆只是部分正確。如果您正在運行XSLT 1.0處理器,它將始終拒絕分隔符屬性,但不太可能使用XSLT 2.0錯誤代碼XTSE0090。如果您運行的是2.0處理器,則無論樣式表指定version =「1.0」還是version =「2.0」,它都應接受separator屬性。所以有一些奇怪的事情發生。

要檢查你使用的XSLT處理器,使用XSLT系統屬性()函數來寫一條消息。

+1

Jirka的回答使錯誤消失,但它只輸出第一列元素的名稱。 – slashburn

+1

處理器檢查顯示我只安裝了XSLT處理器1.0。因此,在運行1.0處理器時指定版本2.0毫無用處。 – slashburn

4

看樣式表元素的版本屬性 - 它應該是2.0,使屬性「分隔符」在XSL:value-of的

<xsl:stylesheet version="2.0"...