【问题标题】:DTD Mixed Content with AND operator使用 AND 运算符的 DTD 混合内容
【发布时间】:2019-10-24 13:04:58
【问题描述】:

我用 Framemaker .edd 创建了一个 .dtd。 我使用旧脚本执行此操作,但它会产生一些错误...

我不知道是否可以,因为我搜索了很长时间没有成功。

该脚本创建一个这样的元素定义:

<!ELEMENT BodyText 
      ((#PCDATA | Bold | Data | Link | Subscript | Graphic | SpecialCharacter |
      SpecialTerm | Superscript | Italic | E_Norm | H_Norm | WebCable | fm:Linefeed | 
      fm:UserVar)*, Index*, CCN*) >

我想我想制作什么很清楚:

第一个括号中的元素可以按预期出现。其他元素(索引和 CCN)必须以该顺序出现,并且在这些元素之后,不应添加其他元素之一。

谁能提供解决方案?

【问题讨论】:

    标签: xml dtd mixed-content


    【解决方案1】:

    您想要的内容模型不能使用 XML 内容模型表示,因为 XML 要求具有 #PCDATA(混合内容模型)的内容模型具有 (#PCDATA)(#PCDATA | element1 | ...) 的形式,根据Extensible Markup Specification, section 3.2.2。 FrameMaker EDD/FrameMaker SGML 可以使用不受限制的完整 SGML,它没有此限制(以及对 SGML 的 XML 子集/配置文件施加的所有其他限制,例如 XML 中缺少标签推断等)。

    【讨论】:

    • 非常感谢。解决这个问题的唯一方法是改变我的结构还是我磨损了?
    • @MarlonRoss 是的;您可以将BoldData、...(但不是IndexCCN)元素包装到另一个元素中,或者放松您的内容模型,以便您对IndexCCN 的约束出现毕竟没有强制执行所有其他元素,例如。 &lt;!ELEMENT BodyText (#PCDATA|Bold|Data|...|Index|CCN)*&gt;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2017-06-13
    相关资源
    最近更新 更多