DTD,#REQUIRED,#IMPPLIED,示例

时间:2015-06-24 17:04:28

标签: xml dtd xml-dtd

我有一个DTD文件,这是它的一部分。它写的是lv id ID #IMPLIED。 正如#REQUIRED的定义一样:“元素可以有零个或多个属性。”这会使代码自动更正,但是#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>

1 个答案:

答案 0 :(得分:1)

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

属性idID类型,因此其默认值必须为#IMPLIED#REQUIRED。哪一个取决于你。

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

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