1
我的XML(簡化的)是這樣的:如何防止在XSD架構中自引用外鍵值?
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="1" /> <!-- valid -->
</DoSomething>
</Action>
</Actions>
的ActionId
屬性值引用Action
元件的Id
屬性值。我已經在XSD中設置了外鍵約束,並且它可以正常工作。
我想阻止自參考值在洋場,就像這樣:
<Actions>
<Action Id="1">
</Action>
<Action Id="2">
<DoSomething>
<ActionRef ActionId="2" /> <!-- invalid -->
</DoSomething>
</Action>
</Actions>
當然,這可以很容易地處理該XML的應用程序中完成的,我會求助於如果我要求的是不可能的,但我更願意通過驗證過程自動完成。
我嘗試將[not(@ActionId = ../@Id)]
添加到外鍵選擇器XPath查詢中,但在該上下文中無效(我也不確定它是否正確)。除此之外,我不知道還有什麼可以嘗試,並且看起來好像互聯網上的許多人甚至在他們的XSD中建立了外鍵關係,更不用說阻止這種情況了(我在這個確切的主題上沒有發現任何東西)。
嗯...所以你覺得我是那種正確的軌道。由於XML文檔實際上不是用戶可編輯的,違反此約束的可能性很低,所以我只是在代碼中實現它。我不打算爲此使用XSLT或第三方任何東西,但感謝您的建議。我打算讓這個問題公開幾天,看看其他人是否有想法。 –
如果你發現一些時間,看看[這篇文章](http://stackoverflow.com/questions/12803048/about-using-xsunique-on-xsitype-in-a-sequence/12803969#12803969)我'至少讓你知道關於什麼的想法。 –