2012-12-04 23 views
2

下面是一個XML示例:您可以在XML模式屬性名稱中使用模式嗎?

<Search ID="Blah" 
     input="Some search" 
     line1="first line of result" 
     line2="second line of result" 
     line3="third line of result" 
     /> 

命名爲一號線到3號線的屬性是可選的,未綁定 - 一個給定的搜索元素可以有行屬性一路攀升到line99什麼的(現實永遠不會高於2位數)。有什麼方法可以在XML模式中指定可接受的屬性名稱模式,以便我可以驗證這一點,而無需手動指定所有可選屬性名稱,直到我實際使用的任何屬性名稱?

理想我想沿着線的東西:在模式定義

<xs:attribute name="line[0-9][0-9]" type="xs:string" use="optional" /> 

我懷疑這是不可能的,但是我所做的所有搜索結果都是爲了找到在屬性的實際值上使用模式的方法,而不是他們的名字,所以如果有人可以確認不管這是否可能,那會很好。

+0

在一個不相關的查詢,我的帳戶似乎消失了 - 儘管我可能只是已經失去了它,似乎沒有成爲一個普通的StackOverflow登錄登錄選項了,所以我使用了這個其他帳戶。任何人都知道我應該問這個問題嗎? Meta也許? – Ben

回答

1

不,這是不可能的。如果您閱讀attribute declarations上的XML規範,則會注意到屬性名稱的類型爲NCName,其中不包括[]字符。

另一方面,屬性的一個非常奇怪的用法是傳達查詢結果。一個更自然的格式將

<search id="..." input="..."> 
    <result> 
     <line nr="1">bla bla</line> 
     <line nr="2">more bla bla</line> 
     ... 
     <line nr="99">extra bla</line> 
    </result> 
</search> 
+0

謝謝。我發現XML模式文檔在大部分時間都是不透明的,但是這並不令人驚訝,這是不可能的。另外謝謝你對我的XML如何實際結構的建議,而不是允許這樣做!他們實際上是預期的結果,我們這樣做,因爲它使得他們通過MSTest的數據驅動框架訪問變得更容易,但是如果我曾經努力將其轉換爲更合理的結構,我可能會使用這個建議。 – Ben

相關問題