为了简明起见我想获得这样的东西:
<root>
<field value="..." text="...">fixed_value1</field>
<field value="..." text="...">fixed_value2</field>
<field value="..." text="...">fixed_value3</field>
<!-- in some cases we can choose the «fixed_value» among different ones -->
...
<field value="..." text="...">fixed_valueN</field>
</root>
我尝试了不同的方法,但似乎很难实现,因为XML Schema不允许设置具有相同名称但不同类型的元素列表(简单或复杂无关紧要......)。这样对吗?没有其他方法可以定义上面的结构吗?
编辑:也许我必须更好地解释一下。在元素«field»的open和close标记之间必须有一个由XML Schema定义的值(换句话说,对于用户来说,不可能写出与fixed_value不同的东西)。另一个例子:<root>
<field value="Ferrari" text="company">Car</field>
<!-- but it could be Van or Motorcycle or Plane -->
<field value="12300000" text="euro">Cost</field>
<!-- here instead it's only possible to choose «Cost» -->
<field value="Red" text="">Color</field>
<!-- same as above -->
</root>
这可能吗?提前谢谢!
答案 0 :(得分:1)
尝试以下XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="root" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="field" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="value" type="xs:string" />
<xs:attribute name="text" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>