DTD,#REQUIRED,#IMPLIED,示例

DTD, #REQUIRED, #IMPLIED, Example

我有一个 DTD 文件,这是 it.It 编写的 lv id ID #IMPLIED 的一部分。 由于#REQUIRED 的定义保持不变:"Elements can have zero or more attributes."这使得代码自动正确,但是#IMPLIED 是否可以替换为#REQUIRED,因为这里的元素已经有一个属性并且没有零个属性,或者我错过了什么?

<!ELEMENT lv (title, subtitle?, length, content, abstract)>
<!ATTLIST lv id ID #IMPLIED>

<!ELEMENT title (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT abstract (#PCDATA)>

<!ELEMENT length EMPTY>
<!ATTLIST length value CDATA #REQUIRED
          unit (sws| h| min) "sws">

这是关联的 XML-文件:

<?xml version="1.0"?>
    <?xml-stylesheet href="lv.xsl" type="text/xsl"?>
    <!DOCTYPE lv SYSTEM "lehre.dtd">
    <lv id="wip2">
      <title>WI-Praktikum 2</title>
      <subtitle>Verarbeitung strukturierter Daten</subtitle>
      <length value="2" unit="sws"/>
      <content>
        <topic>Grundlagen</topic>
        <topic>Grammatiken</topic>
        <topic>SAX</topic>
      </content>
      <abstract>
      Der Kurs vermittelt den Aufbau und die Verarbeitung von XML-Dokumenten.
      Als Programmiersprachen kommen Java, Python und XSLT zum Einsatz.
      </abstract>
    </lv>

我不确定我是否完全理解您的问题,但是您可以在元素 [=13] 上的属性 id 的属性声明中将 #IMPLIED 更改为 #REQUIRED =].

属性 id 是类型 ID,因此它的默认值必须为 #IMPLIED#REQUIRED。哪一个由你决定。

您还必须只为一个元素声明一个 ID 类型属性,但您的 DTD 已经满足该要求,因此无需担心。

有关详细信息,请参阅规范 (3.3 Attribute-List Declarations)。