在 DTD/XML 中创建逻辑

问题描述 投票:0回答:1

由于我的学习,我正在学习 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 中创建逻辑?就像“如果这是真的,请显示这个...”或者是用“?”创建元素的关键旗帜?

xml attributes dtd
1个回答
0
投票

不,DTD 的功能不足以表达此类约束。还有其他 XML 模式技术可以做到这一点:例如 RelaxNG、XSD 1.1(但不是 1.0)或 Schematron。

© www.soinside.com 2019 - 2024. All rights reserved.