Xml XSD将元素名称验证为变量

Xml XSD将元素名称验证为变量,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我有一个XML元素列表,我正试图编写一个XSD来验证它。我的目标是双重的。首先,我希望元素的名称是一个变量(这样我就不会强制用户输入特定的值)。但是,该变量(元素名称)应在之后根据可能的值池进行检查 <List> <Elem name="this_should_be_a_variable"> <SomeProperty name="X"></Property> </Elem> <

我有一个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>

例如,我希望能够检查它的名称是否为[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:element上显式设置名称的情况下验证名称?

您可以使用。由于您已经为内部元素定义了一个可重用类型,因此可以在
xsd:choice
元素中声明几个名称不同的元素(其中
xsd:choice
表示需要显示其中一个包含的元素),始终引用相同的类型(如果需要):



由于
xsd:choice
元素被包装在
xsd:sequence
元素中,因此可以重复选择。

问题到底是什么?您的XSD有多大进展?“[蓝、红、白]”是一个固定/常量列表,还是这是一个示例?是一个示例,我(现在)有两个元素的可能名称。红色、蓝色和白色就是一个例子。好吧,但我的意思是,在部署XSD文件时,您是否知道总的“可能值池”?请下载者解释一下为什么他们不喜欢这个解决方案?
<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>