簡體   English   中英

XSD驗證元素名稱為變量

[英]XSD validate element name as variable

我有一個XML元素列表,我正在嘗試編寫一個XSD進行驗證。 我的目標是雙重的。 首先,我希望元素的名稱是一個變量(這樣,我就不會強迫用戶輸入特定的值)。 但是,此后應根據可能的值池檢查此變量(元素名稱)。

  <List>
    <Elem name="this_should_be_a_variable">
            <SomeProperty name="X"></Property>
    </Elem>
    <Elem name="this_should_be_a_variable">
            <SomeProperty name="X"></Property>
    </Elem>
</List>

因此,例如,我希望能夠給出<Elem>來檢查其名稱是否為[Blue,Red,White],否則拒絕XML。

編輯

我的XSD到目前為止是這樣的:

<xsd:complexType name="List">
    <xsd:sequence>
            <xsd:element name="here_i_dont_want_to_force_the_name" type="elem" />
    </xsd:sequence>
</xsd:complexType>

我的問題是我怎么沒有明確設置它的XSD驗證名稱:元素?

您可以使用xsd:choice元素 由於已經為內部元素定義了可重用類型,因此可以在xsd:choice元素(其中xsd:choice表示需要顯示其中一個元素)中聲明多個元素,並使用不同的名稱,始終引用同一類型(如果需要的話):

<xsd:complexType name="List">
    <xsd:sequence>
        <xsd:choice>
            <xsd:element name="Blue" type="elem" />
            <xsd:element name="Red" type="elem" />
            <xsd:element name="White" type="elem" />
        </xsd:choice>
    </xsd:sequence>
</xsd:complexType>

由於xsd:choice元素包裝在xsd:sequence元素中,因此可以重復選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM