我正在尝试为以下XML文件创建XSD:
<config xmlns="tbd">
<root>C:\workspace\</root>
<zone type="directories" delay="30000">
<directory>output</directory>
<directory>input</directory>
<directory>errors</directory>
</zone>
<zone type="database" delay="50000">
<table name="OUTPUT_VIEW">
<column>ID</column>
<column>TYPE</column>
<column>SUB_TYPE</column>
<column>COUNT(*)</column>
<column>SUM(BASE_AMOUNT)</column>
</table>
</zone>
</config>
我在创建XSD时遇到问题,因为zone
元素可以是XML文件的两种类型。
答案 0 :(得分:2)
您不能让内容模型因XSD 1.0中的属性值而异。如果您可以重新设计XML,请考虑将zone
拆分为两个不同的元素directories
或database
。如果您无法重新设计XML,那么您可以合并单独的内容模型,并使两个模型不共享的所有元素都是可选的;你将失去执行某些要求的能力,但至少你能够涵盖这两种情况。
这正是Conditional Type Assignment的目的。有关示例,请参阅How to make type depend on attribute value using Conditional Type Assignment。