2013-02-06 37 views
0

標題下的文檔http://docs.composite.net/Console/CreatingFormControls「註冊基於表單的UI控件用戶控件」說:「你必須先註冊一個XML命名空間您的單位公開」,但沒有解釋如何。註冊基於表單的UI控件的用戶控件 - 命名空間

所以我的問題是如何創建我自己的命名空間?我是要創建一個XML模式還是可以Composite-C1導出基於全局數據類型的名稱空間?任何幫助都會很棒。從未創建過一個xml模式(假設這是必需的)。

我創建了我的asp網絡控制,並將此我C1控制檯,但我嘗試添加新的新的數據項,它會產生一個錯誤:
ConfigurationErrorsException: 配置無法找到名稱

回答

1

通過將URI(在您控制的部分URI空間中)分配爲名稱空間名稱,然後以適當的方式使用該名稱空間名稱(通常作爲元素,屬性的限定名稱的一部分)來創建XML名稱空間,和您定義的其他對象。 (如果這聽起來含糊不清,那是因爲它的原因。)

命名空間的功能(我在這裏專門討論XML命名空間,但我說的很多內容適用於其他人稱爲命名空間的東西)是爲了防止不同人員分配的名字之間的碰撞。方法是說:「你在你的名字空間中創建名字,並且我將在我的名字空間中創建名字,並且由於它們在不同的名字空間中,我們的名字永遠不會相互衝突。」當然,只有遵循規則(幾乎從未明確聲明,儘管它完全是整個想法的核心),名稱空間纔會有所不同,只會在您控制的URI空間部分創建名稱空間。您可以通過擁有一個域名或擁有您的僱主擁有的域中URI路徑的樹形結構的一部分或其他方式來控制部分URI空間。如果您與其他人分享部分URI空間的責任,您需要以某種方式與他們進行協調(許多組織遵循一種「先到先得」的規則 - 任何人都可以在組織的URI空間中聲明特定URI,方法是將一些東西在服務器上的適當位置,一旦他們做了,該組織中的其他人就不能聲稱相同的URI)。

因此,在創建命名空間的主要作用是識別名稱,它專爲用作命名空間名稱的功能的抽象之一。如果你擁有自己的域名,這只是你必須作出的決定;如果你共享一個域名,你可能需要在某處寫下某些東西,這樣你的同事就不會意外地將同一個URI聲明爲一個名稱空間名稱。 (當然,這是一個很好的做法,可以將URI的命名空間的一些文檔放在相關URI中,但是沒有大哥可以檢查Web中的每個人都這樣做。)

一旦您選擇了命名空間名稱並且完成組織中所需的任何工作,以防止組織內部發生衝突,您所引用的文檔告訴您必須寫什麼地方告訴特定系統的註冊表有關名稱。主要是編輯一些配置文件並告訴它們你的小部件在哪裏。我沒有看到任何關於XSD模式文檔的要求(但我已經瀏覽了很多)。

+0

嗚,謝謝。感謝您充分解釋您的時間。我知道你說的要點,但在C1控制檯中添加一個簡單的表單,使用ASP NET控制似乎已經完全勝過了殺手。我只想要一個控件出現在一個網站上,而沒有其他的東西。我不想要一個只需要一次的XML URI命名空間。再次感謝回覆。 – Rob

+0

@Rob我們會在這裏軟化我們的文檔 - 您基本上只需要提供一個唯一的URL或字符串,並堅持,當你參考你的東西。感謝您強調這一點。 – mawtex

+0

好的沒問題。我剛剛設法創建了一個空的URI引用,它工作。主要的問題是我添加了一個名稱爲「Controls.ABC.Test」而不是名稱=「test」的屬性......無論如何它現在都在工作。 – Rob

0

確定設法解決問題。

在哪裏,我想我需要一些XML命名空間是不正確的。我所需要的只是一個空的命名空間參考。該錯誤與控件名稱相關,而不是名稱空間。

但是我的問題沒有涉及到命名空間URI一般我相信@C。 M. Sperberg-McQuee完美地回答。