2008-08-15 4 views

답변

1

예를 들려 줄 수 있습니까? lxml validation docs에 따르면 lxml은 생각할 수있는 대부분의 경우를 다루는 DTD 유효성 검사 (XML 문서 또는 외부 코드로 지정) 및 시스템 카탈로그를 처리 할 수 ​​있습니다.

f = StringIO("<!ELEMENT b EMPTY>") 
dtd = etree.DTD(f) 
dtd = etree.DTD(external_id = "-//OASIS//DTD DocBook XML V4.2//EN") 
0

소스는 오류 처리에 대한 몇 가지 # 정의 변합니다 grepping이 libxml2를 기능을 노출하지 않는 LXML 보인다 다음 catalog implementation in libxml2 page에서

C:\Dev>grep -ir --include=*.px[id] catalog lxml-2.1.1/src | sed -r "s/\s+/ /g" 
lxml-2.1.1/src/lxml/dtd.pxi: catalog. 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_FROM_CATALOG = 20 # The Catalog module 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_WAR_CATALOG_PI = 93 # 93 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_MISSING_ATTR = 1650 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_ENTRY_BROKEN = 1651 # 1651 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_PREFER_VALUE = 1652 # 1652 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_NOT_CATALOG = 1653 # 1653 
lxml-2.1.1/src/lxml/xmlerror.pxd: XML_CATALOG_RECURSION = 1654 # 1654 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG=20 
lxml-2.1.1/src/lxml/xmlerror.pxi:WAR_CATALOG_PI=93 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_MISSING_ATTR=1650 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_ENTRY_BROKEN=1651 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_PREFER_VALUE=1652 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_NOT_CATALOG=1653 
lxml-2.1.1/src/lxml/xmlerror.pxi:CATALOG_RECURSION=1654 

이 가능한 것을 그 '투명'/etc/xml/catalog에서의 설치를 통한 핸들링은 lxml에서 여전히 작동 할 수 있지만 그 이상이 필요한 경우 lxml을 포기하고 카탈로그 함수를 노출시키는 기본 파이썬 바인딩을 사용할 수 있습니다.

6

당신은 XML_CATALOG_FILES 환경 변수에 카탈로그를 추가 할 수 있습니다

os.environ['XML_CATALOG_FILES'] = 'file:///to/my/catalog.xml' 

this thread를 참조하십시오. XML_CATALOG_FILES의 항목은 공백으로 구분 된 URL입니다. 파이썬의 pathname2urlurljoin (file:)을 사용하여 경로 이름에서 URL을 생성 할 수 있습니다.

관련 문제