0
我有一個XML文檔,其中包含一系列重複的地址,其實際內容取決於所包含枚舉的值。我想這是一種「標籤聯合」 [或「可識別聯合」?]:用於標記聯盟的XML模式
{
<AddressList>
<Address>
<AddressType type="addressEnum" fixed="CanadianAddress"/>
<AddressValue>
<Street type="textstring">123 Yonge Street</Street>
<Province type="provinceEnum" value="Ontario"/>
<PostalCode type="postalCodeType" value="M1N 2O3"/>
</AddressValue>
</Address>
<Address>
<AddressType type="addressEnum" fixed="USAddress"/>
<AddressValue>
<Street type="textstring">456 Front Street</Street>
<State type="stateEnum" value="New York"/>
<ZipCode type="zipCodeType" value="12345"/>
</AddressValue>
</Address>
</AddressList>
}
我不清楚如何表達XML模式[即XSD]爲上述XML。我需要一個'CanadianAddressType'和'USAddressType'將會擴展的空'AddressType'嗎?如果我有50個AddressType,我是否需要50個這樣的擴展名?
注意:如果不明顯,USAddress的元素不能出現在CanadianAddress枚舉之後。同樣,CanadianAddress元素不能出現在USAddress枚舉之後。
我並不熱衷於具有XML 1.1依賴; (幾乎)沒有人使用它,並且幾乎沒有實現。特別是,我想使用libxml2,它不支持XML 1.1。 但是,儘管如此,我沒有看到上述模式如何在'USAddress'枚舉和'USAddressValue'之間創建強制關聯。 – badfd
@badfd,我不知道如何可能,但我只發佈了模式的最後一部分。我將盡力在明天找到完整的模式。在XSD 1.0中,具有相同名稱的元素必須具有相同的定義良好的類型(請參閱[類似主題](https://stackoverflow.com/q/1306305/7914637))。 – Alexander
@badfd,我已經更新了我的答案。現在模式已經完全顯示。我以前的評論描述了使用XSD 1.1的原因。祝你好運! – Alexander