我不是最好的创建XSD模式,因为这实际上是我的第一个, 我想验证一个xml,必须看起来像这样:无法设计xsd模式 - 因为可变元素名称
<?xml version="1.0"?>
<Data>
<FIELD name='toto'>
<META mono='false' dynamic='false'>
<COLUMN1>
<REFTABLE>table</REFTABLE>
<REFCOLUMN>key_column</REFCOLUMN>
<REFLABELCOLUMN>test_column</REFLABELCOLUMN>
</COLUMN1>
<COLUMN2>
<REFTABLE>table</REFTABLE>
<REFCOLUMN>key_column</REFCOLUMN>
<REFLABELCOLUMN>test_column</REFLABELCOLUMN>
</COLUMN2>
</META>
<VALUEs>
<VALUE>...</VALUE>
</VALUEs>
</FIELD>
我的问题是,到META阻止标签 “COLUMN1”, “COLUMN2” 总是不同的,它有可能成为COLUMNxxx。现在我的模式是:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FIELD" type="Field" />
</xsd:sequence>
<xsd:attribute name="id" type="xsd:int" use="required" />
</xsd:complexType>
</xsd:element>
<xsd:complexType name="dataSourceDef">
<xsd:sequence>
<xsd:element name="DSD_REFTABLE" type="xsd:string" />
<xsd:element name="DSD_REFCOLUMN" type="xsd:string" />
<xsd:element name="DSD_REFLABELCOLUMN" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="MetaTag">
<xsd:sequence>
<xsd:any processContents="lax" />
</xsd:sequence>
<xsd:attribute name="mono" type="xsd:string" use="required" />
<xsd:attribute name="dynamic" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:complexType name="Field">
<xsd:sequence>
<xsd:element name="META" type="MetaTag" minOccurs="1" />
<xsd:element name="VALUEs">
<xsd:complexType>
<xsd:sequence>
<xsd:any processContents="lax" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:schema>
,我只是无法得到它的工作,我不知道如何处理这样的事实,我的节点的精确程度不明确,剩下的就是。
你能帮我吗?
有什么办法“不”验证这一部分并验证休息,像元属性和所有。也许使用xsd:any元素? – 2010-03-19 14:04:54