Какова цель использования DTD для анализа данных USPTO

Я пытаюсь проанализировать массив файлов USPTO, размещенных в Google. При этом я наткнулся на файлы DTD. После некоторых исследований я понимаю, что эти файлы в основном определяют схему и могут определить, действителен ли xml в соответствии с этим. Чего я не понимаю, так это того, как они на самом деле помогают мне анализировать файлы. Я видел несколько сообщений в блогах (1, 2) и этот документ о том, как люди их используют, но я не понимаю, как их использовать и почему.

Мой Текущий подход к синтаксическому анализу - просто использовать Beautiful Soup для поиска тегов, но если есть лучший/более эффективный способ, я бы хотел это сделать.

Вот небольшой пример моего текущего подхода:

def getRefInfo(ref):
  data = {}
  data["Country"] = ref.find("country").text
  data["Date"] = ref.find("date").text
  data["ID"] = ref.find("doc-number").text

  return data 



soup = BeautifulSoup(xml, 'lxml')
bibData= soup.find("us-bibliographic-data-grant")

ref = bibData.find("publication-reference")
if ref != None:
    print getRefInfo(ref)

person drowningincode    schedule 29.07.2014    source источник
comment
возможный дубликат Что такое DTD?   -  person JasonMArcher    schedule 01.10.2014


Ответы (1)


Вы используете DTD, чтобы убедиться, что ваши входные данные хороши, прежде чем отправлять их по конвейеру рабочего процесса. Учтите, что XML можно отправлять фрагментами, и это механизм, гарантирующий, что вы никогда не обработаете частичную запись (если вы действительно этого не хотите).

Разница действительно проявляется, когда вы имеете дело с парсерами pull и парсерами DOM.

DTD также можно использовать для создания «умных объектов», где XML, который вы читаете, преобразуется в дерево объектов с поведением. Это чрезвычайно продвинутый метод, который очень плохо поддерживается большинством модулей Python, но он существует (и рассматривается этим автором как элегантное решение для манипулирования XML..)

person synthesizerpatel    schedule 29.07.2014