2011-05-03 100 views
3

我正在學習如何在XSLT中執行自定義函數。我發現的每個例子似乎都聲明瞭一個自定義命名空間,例如XSLT中的命名空間

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:mynamespace="http://whatever"> 

我不明白什麼是應該去的地方我目前擁有的「http://什麼」,而這是什麼呢?我不能使用默認的xsl命名空間來創建函數嗎?

預先感謝任何幫助

回答

2

http://www.w3.org/TR/xslt20/#stylesheet-functions

注:

前綴必須不是指 reserved namespace:[see ERR XTSE0080]

http://www.w3.org/TR/xslt20/#dt-reserved-namespace

定義:XSLT名稱空間, 連同由XSLT處理器識別某些其他命名空間 ,是 歸類爲保留的命名空間和 必須使用只有如本 及相關規範指定。

http://www.w3.org/TR/xslt20/#err-XTSE0080

它是一個靜態的錯誤 在名稱中使用保留的命名空間的命名模板,一個模式,一個 屬性設置,一鍵, 十進制格式的 ,變量或 參數,樣式表函數, 命名輸出定義或 字符映射。

+0

謝謝 - 我會對此進行閱讀。 – Mitya 2011-05-03 19:24:34

+0

@Mitya:不客氣。 – 2011-05-03 19:53:02

1

如果您的樣式表是一次性代碼,請使用任何您喜歡的名稱空間作爲本地函數。我有時使用「http:// localhost /」,但我也知道使用「我的:函數」。如果樣式表將被其他人看到或使用,並且功能需要可重用和記錄,那麼仔細考慮選擇一個全球唯一的名稱空間,並反映功能規範的設計權限;大多數人選擇http://your.domain.name/ns/purpose之類的東西,你也可以考慮在網絡上的那個位置放置一個功能說明。另一個約定是,如果你的函數庫與一個特定的XML詞彙表密切相關,並且具有與該詞彙表相同的設計權限,則將這些函數放置在與該詞彙表中的元素相同的命名空間中。