【问题标题】:What do '|', '?', '+', '*', and ',' mean in a DTD file?'|'、'?'、'+'、'*' 和 ',' 在 DTD 文件中是什么意思?
【发布时间】:2021-12-15 16:46:28
【问题描述】:

我在 DTD 文件中发现了很多这样的代码(每一行来自一个单独的 DTD 文件):

<!ELEMENT master (big | small)*>
<!ELEMENT master (big* | small*)>
<!ELEMENT master (big+, small*)>
<!ELEMENT master (big, small)*>
<!ELEMENT master (big, small+)*>
<!ELEMENT master (big | small+)*>
<!ELEMENT master (big | small+)>
<!ELEMENT master (big? | small+)>`

我了解&lt;!Element Master 之类的基本知识以及bigsmall 的含义,但我不明白| ? + * , 等的含义。还有在()之间是什么意思?

注意:每一行都取自一个单独的 DTD 文件。 (我从 9 个 DTD 文件中复制了每一行。) 每一行是什么意思?

【问题讨论】:

  • 也许这些是正则表达式?
  • 它们是什么意思?有什么指示?
  • @NicoHaase,不,但它们的语义相似。见my answer below

标签: xml dtd


【解决方案1】:

这些运算符中的大多数在计算机科学中都有其通常的含义,例如,在正则表达式、EBNF 等中:

  • a | b 表示 ab
  • a? 表示可选 a
  • a* 表示零个或多个 a
  • a+ 表示一个或多个a

a, b 表示a 后跟b 的序列。

【讨论】:

    【解决方案2】:

    举个例子

    <!ELEMENT master (big, small+)*>
    

    表示有效的master 元素的内容由零个或多个组的序列组成,其中每个组包含一个名为big 的元素,后跟一个或多个名为small 的元素。

    谷歌“XML DTD 教程”,你会发现很多更详细的解释。

    【讨论】:

      猜你喜欢
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      相关资源
      最近更新 更多