作为XML“noob”,我在创建针对DTD验证的XML流/文件时发现了元素顺序的重要性。是否可以定义不依赖于元素的DTD?如果,那么请提供语法示例。
答案 0 :(得分:20)
您使用或(垂直管道)和重复(星号:)
<!ELEMENT eltype1 ( eltype2 | eltype3)*>
这意味着eltype1
可以包含eltype2
或eltype3
的任意数量的重复。
答案 1 :(得分:13)
当前接受的答案的唯一问题是它不会强制任何顺序中的每个元素中的一个。例如,您可以拥有2个eltype2
元素,但不能包含eltype3
个元素。
如果您需要确保两个元素都存在且每个元素只出现一次,这是一个更精确的元素声明:
<!ELEMENT eltype1 ((eltype2, eltype3)|(eltype3, eltype2))>
内部子集中的示例:
<!DOCTYPE eltype1 [
<!ELEMENT eltype1 ((eltype2, eltype3)|(eltype3, eltype2))>
<!ELEMENT eltype2 (#PCDATA)>
<!ELEMENT eltype3 (#PCDATA)>
]>
<eltype1>
<eltype3>element three</eltype3>
<eltype2>element two</eltype2>
</eltype1>