У меня есть документ TEI, содержащий символы, закодированные как &stern_1;
, которые отображаются в отдельном файле Zeichen.dtd
(определение типа документа).Файл Zeichen.dtd
содержит следующее:
<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY stern_1 "✳" >
Я использую BeautifulSoup4
и lxml-xml
в качестве синтаксического анализатора.
Пример:
dtd_str = '<!DOCTYPE Zeichen SYSTEM "Zeichen.dtd">'
xml_str = "<p>Hello, &stern_1;!</p>"
from bs4 import BeautifulSoup
soup = BeautifulSoup(dtd_str+xml_str, 'lxml-xml')
print(soup.find('p').get_text())
Кодвыше печатает это:
Hello, !
вместо этого:
Hello, ✳!
Я также пробовал встроенное DTD, с тем же результатом:
dtd_str = """
<!DOCTYPE html [
<!ENTITY stern_1 "✳">
]>
"""
xml_str = "<p>Hello, &stern_1;!</p>"
from bs4 import BeautifulSoup
soup = BeautifulSoup(xml_str, 'lxml-xml')
print(soup.find('p').get_text())
вывод:
Hello, !
Есть идеи?