2011-05-02 41 views
3

我已经开始了一项工作,在该工作中给了我一些XML文件和一个DTD。他们工作正常,但我注意到在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> 

回答

3

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

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

0

在这个DTD,签名属性不需要。源属性是。

+0

是的,我知道。我只是想知道重用像这样的元素和隐含的签名属性是否是个好主意,尽管'other-image'不需要/永远不需要它来处理系统的其他部分。或者做出两个不同的元素会更好/更安全,请参阅编辑 – 2011-05-02 03:43:26

+1

好的。在这种情况下,我同意其他答案。不,现在很好。 – 2011-05-02 08:39:30