dtd和混合内容

时间:2010-12-13 20:39:46

标签: xsd dtd mixed

有人知道mixet内容元素(在dtd中)是否需要在末尾添加“*”?

例如:<!ELEMENT note (#PCDATA|to|from|header|message)*>

我正在努力解决我不想再重复的问题......我只想在#PCDATA和其他元素之间做出选择。

我知道如果我在删除结束时删除“*”,我将得到一个糟糕的DTD声明... 但是 - 我不知道是什么原因......

任何人都知道为什么?

2 个答案:

答案 0 :(得分:6)

您正在达到此限制,因为混合内容模型仅允许约束哪些元素不是它们的顺序或它们的数量。我担心这是XML Specification本身所要求的。

混合内容很难我很害怕。该模型的设计考虑了文档 - 当您考虑内联文本时它是有意义的,但在许多其他情况下则没有。如果您有选择,最佳做法是建议您创建一个包含PCDATA的元素。如果你不能,那么我担心你会被混合内容模型的限制所困扰(使用另一种模式语言对我来说无济于事)。

答案 1 :(得分:0)

您想使用任何

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE things [
    <!ELEMENT things ANY>
]>
<things>
    <person name="a" />
    <cats />
    <dogs />
    <animals><a rel="gogo" /></animals>
</things>

此外,*是出现零次或多次的运算符。所以(element|element2)*说的是或/和