由于我的学习,我正在学习 XML/DTD。现在我有一个练习,我必须在其中创建订单。一点是,我有两种不同类型的客户。一名学生和一名非学生。 这个话题,我用一个简单的布尔值解决了。
<!ATTLIST Kunde isStudent (true | false) #REQUIRED>
但现在如果客户是学生,我应该显示其他元素。如果他不是,则不需要。
我目前的结构是这样的:
<!ELEMENT Customer (Name, Address)>
<!ATTLIST Customer isStudent (true | false) #REQUIRED>
<!--
If "isStudent === true" the Customer-Element should also have
<!ELEMENT StudentNumber (#PCDATA)>
<!ELEMENT UniversityName (#PCDATA)>
If "isStudent === false", they shouldn't/musn't be there
-->
<!ELEMENT Name (#PCDATA)>
<!ELEMENT Adress (Street, Number, PLZ, City)>
<!ELEMENT Street (#PCDATA)>
<!ELEMENT Number (#PCDATA)>
<!ELEMENT PLZ (#PCDATA)>
<!ELEMENT City (#PCDATA)>
所以我想知道......是否可以在 dtd 中创建逻辑?就像“如果这是真的,请显示这个...”或者是用“?”创建元素的关键旗帜?
不,DTD 的功能不足以表达此类约束。还有其他 XML 模式技术可以做到这一点:例如 RelaxNG、XSD 1.1(但不是 1.0)或 Schematron。