как создать dtd для этого xml?

меня попросили создать простой dtd для этого xml:

<?xml version='1.0' encoding='ISO-8859-1'?>
<QUERY>
  <PORT>
    <NB></NB>
  </PORT>
  <BLOCK>
    <TAB></TAB>
  </BLOCK>
  <STAND>
    <LEVEL></LEVEL>
  </STAND>
</QUERY>

я использую java, я никогда раньше не делал dtd и не знаю точно, что это значит. Я хотел бы получить некоторые рекомендации, если это возможно, спасибо


person ccot    schedule 25.03.2011    source источник


Ответы (3)


DTD — это определение типа документа, которое используется для представления структуры вашего XML-документа. Другие представления включают XML-схему, Relax NG и т. д.:

Это будет выглядеть примерно так (хотя мой синтаксис может быть не совсем правильным):

<!ELEMENT QUERY (PORT, BLOCK, STAND)>
<!ELEMENT PORT (NB)>
<!ELEMENT NB (#PCDATA)>
<!ELEMENT BLOCK (TAB)>
<!ELEMENT TAB (#PCDATA)>
<!ELEMENT STAND (LEVEL)>
<!ELEMENT LEVEL (#PCDATA)>

Если вы посмотрите на определение QUERY, вы увидите, что оно содержит элементы: «PORT», «BLOCK» и «STAND». Если вы посмотрите на определение NB, мы заявили, что оно должно содержать текст (проанализированные символьные данные).

person bdoughan    schedule 25.03.2011
comment
большое спасибо, я думаю, это будет очень полезно знать, как начать и реализовать это :) - person ccot; 25.03.2011

XMLBeans поставляется с инструментом под названием inst2xsd, который может проверять XML-файл и создавать для него XSD, который затем можно редактировать/уточнять. Я использовал его с довольно хорошими результатами.

Просто прочитайте руководство по установке XMLBeans, и при установке XMLBeans у вас будет инструмент inst2xsd также установлен.

редактировать - только что понял, что вам нужен DTD, а не XSD, оставив это здесь на случай, если XSD (который очень похож по назначению) все равно может решить вашу проблему.

person Daniel DiPaolo    schedule 25.03.2011

Есть несколько генераторов DTD. Быстрый поиск дает это. Однако не использовал его.

person JRL    schedule 25.03.2011
comment
спасибо, чувак, я пробовал, но он не работает, пишет classnotfoundexception, когда я запускаю его из строки cmd (как они упоминают) - person ccot; 25.03.2011