В моем файле DTD у меня есть:XML (DTD): Как я могу убедиться, что требуется один из дочерних элементов элемента, но не обязательно определенный?
<!ELEMENT name (firstname*, surname*, companyname*)>
Если типа = «человек» в XML, то он требует firstname
и surname
элементов, или если типа = «компании», оно требует companyname
элемента.
Как я могу показать это в своем DTD?
У меня есть и другая аналогичная проблема:
<!ELEMENT telephone (home*, work*, mobile*, fax*, phone*)>
где, если это человек, он должен по крайней мере, один из home
, work
, mobile
; и если это компания, она нуждается в phone
.
UPDATE:
Я думаю, что проблема решена, имя, сделав его:
<!ELEMENT name ((firstname, surname) | companyname)>
и я попытался схож с телефонным элементом:
<!ELEMENT telephone ((phone | (home | work | mobile)), fax*)>
но при проверке он приходит с погрешностью:
The content of element type "telephone" must match "((phone|(home|work|mobile)),fax*)". [21]
Если требуется, по крайней мере, один из home
, work
и mobile
, но может иметь несколько/все три. Любые идеи о том, что я здесь делаю неправильно?
Узнал я могу решить эту проблему путем добавления дополнительного элемента тега '' или '' –
cfleming93