DITA DTD,允许相同的元素相继

问题描述 投票:1回答:1

我正在为DITA DTD添加一些元素(基于dita 1.2的DTD定制)

我想要的是在同一个实体元素中允许p元素在一个接一个之后,但最多允许四次。

用户必须在textcont元素中有一个P元素,总共最多4个元素。

当使用下面的DTD时,我得到:

sect.mod:非确定性内容模型。元素p的实例可以同时匹配内容模型中的两个或更多个标记。

<!ENTITY % textcont.content
  "(%p;,
  %p;?,
  %p;?,
  %p;?)
">

有没有办法写这个,所以我没有得到错误 - 基于最小1 p元素,最多4个p元素?

或者我必须使用

<!ENTITY % textcont.content
  "(%p;,(%p;)*)">

难道这是建立DTD的限制吗?

dtd dita
1个回答
1
投票

简短的回答是用DTD语法得到你想要的东西并不容易。

要将重复限制为特定数字,您必须执行以下操作:

<!ELEMENT root 
   (p, 
     (p, 
       (p,
         (p)?)?)?)
>

<!ELEMENT p EMPTY >

这适用于您的具体情况,但您可以看到,如果您的要求更复杂,它将开始变得不可行。

通常,这种约束最好通过Schematrons完成,这样可以很容易地检查这些类型的约束。

© www.soinside.com 2019 - 2024. All rights reserved.