2009-02-22 93 views
2

我有一個XML模式和一個客戶的實例文檔。 例如文檔可以是:將屬性添加到xml文檔

<DOC>
    <carId/carId>
</DOC >

而且它根據模式是有效的。

我想和我的屬性來標註這一點:

<DOC>
    < carId myns名字:有效= 「真」/carId >
</DOC >

我希望註釋文檔根據某個模式有效 - 我不喜歡我不關心哪一個模式,我想這是基於原來的模式。

我的問題是,如果有一種方法可以在不改變它的情況下在新模式中「擴展」原始模式?或者,增加這些屬性總是合法的,只要它們根據自己的模式有效?

我不能假定任何關於原始模式的事情,即它不一定聲明xsd:anyAttribute在其元素上是允許的。

回答

1

這將使用xsd:anyattribute來聲明。它可以是任何屬性,僅限於某個特定的名稱空間,或者(通常)允許任何名稱空間,除了現在定義的名稱空間外)。

如果您只是想檢查有效性,並且在運行時不需要架構數據,一個簡單的答案就是從副本中刪除您的屬性並驗證它。

只要複雜類型具有名稱,並且原始模式未使用final來禁止這一點,那麼對每個complexType生成具有所需的anyAttribute聲明的模式也是相當容易的,這些聲明是通過擴展派生的。

但是,如果您確實無法控制輸入架構,除了修改它之外,我看不到任何選項。