【问题标题】:How to define dtd element with XOR如何用 XOR 定义 dtd 元素
【发布时间】:2015-06-23 20:42:33
【问题描述】:

我有一个 xml 元素 vehicle 可以作为子元素 car XOR truck XOR 多个#PCDATA OR 巴士。 dtd怎么写?

<?xml version="1.0" encoding="UTF-8" ?>
    <!ELEMENT root (vehicle)*>
    <!ELEMENT vehicle (truck|car|(#PCDATA|bus)*)>

上述失败并出现错误

解析器错误:ContentDecl:名称或“(”预期

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    这在 XML 中是不可能的。一旦您需要定义一个允许文本 (#PCDATA) 和元素的内容模型(也称为混合内容),您必须这样定义它:

    (#PCDATA | element1 | element2 | ...)*
    

    您的情况的解决方法可能是:

    <!ELEMENT vehicle (truck|car|buscontent)>
    <!ELEMENT buscontent (#PCDATA | bus)* >
    

    【讨论】:

    • 这正是我在发布问题后最终做的事情:)
    • 在我回复的this post 中,您还可以找到关于混合内容 的参考资料。这个other post 也是围绕着这个主题。
    猜你喜欢
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2021-10-15
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多