【问题标题】:Reusing Elements in a DTD在 DTD 中重用元素
【发布时间】:2011-05-02 00:20:22
【问题描述】:

我开始了一份工作,我得到了一些 XML 文件和一个 DTD。它们工作正常,但我注意到在 DTD 中它们重用了这样的元素。

DTD:

<!ELEMENT image EMPTY>
    <!ATTLIST image 
        source CDATA #REQUIRED
        signature (true|false|1|0) "false" 
    >

在 xml 中,图像元素出现在两个地方,但只有一个地方需要“签名”属性,在另一种情况下则无关紧要。

XML:

<root>
  <element-with-optional-signature-image>
     <image source="1.jpg" singature="true" />
     <image source="2.jpg" />
  </element-with-optional-signature-image>
  <other>
     <image source="3.jpg" />
  </other>
</root>

我以前从未见过这样编写的 DTD,只是想知道这样做是常见的还是非常糟糕的方式?我会创建两个不同的元素 element-imageother-image

编辑 --

上述内容是否与这样的 DTD 一样被接受:

<!ELEMENT element-image EMPTY>
    <!ATTLIST element-image 
        source CDATA #REQUIRED
        signature (true|false|1|0) "false" 
    >

<!ELEMENT other-image EMPTY>
    <!ATTLIST image 
        source CDATA #REQUIRED
    >

像这样使用 XML:

<root>
  <element-with-optional-signature-image>
     <element-image source="1.jpg" singature="true" />
     <element-image source="2.jpg" />
  </element-with-optional-signature-image>
  <other>
     <other-image source="3.jpg" />
  </other>
</root>

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    我认为重用这样的元素是个好主意。它使 XML 保持简单且不那么冗长。

    在这种情况下,我认为仅仅因为它不需要使用可选属性就创建一个新元素是矫枉过正的。

    【讨论】:

      【解决方案2】:

      在此 DTD 中,签名属性不是必需的。来源属性是。

      【讨论】:

      • 是的,我知道。我只是想知道使用隐含的签名属性重用这样的元素是否是个好主意,即使other-image 不需要/要求它与系统的其余部分一起使用。还是只制作两个不同的元素会更好/更安全,请参阅编辑
      • 好的。在这种情况下,我同意另一个答案。不,没关系。
      猜你喜欢
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多