使用 AND 运算符的 DTD 混合内容

DTD Mixed Content with AND operator

我用 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 内容模型来表达,因为 XML 需要具有 #PCDATA 的内容模型(混合内容模型) 根据 Extensible Markup Specification, section 3.2.2 具有 (#PCDATA)(#PCDATA | element1 | ...) 的形式。 FrameMaker EDDs/FrameMaker SGML 可以使用不受限制的完整 SGML,它没有此限制(以及对 SGML XML subset/profile 施加的所有其他限制,例如 XML,以及其他)。