2008-08-15 17 views

Respuesta

1

¿Puedes dar un ejemplo? De acuerdo con lxml validation docs, lxml puede manejar la validación DTD (especificada en el documento XML o externamente en el código) y los catálogos del sistema, que cubre la mayoría de los casos que se me ocurren.

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

Parece que lxml no expone esta característica libxml2, grepping la única fuente se convierte en imagen algunas #defines para el tratamiento de errores:

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 

Desde el catalog implementation in libxml2 page parece posible que el 'transparente' el manejo a través de la instalación en/etc/xml/catalogue aún puede funcionar en lxml, pero si necesita más, siempre puede abandonar lxml y usar los enlaces de python predeterminados, que sí exponen las funciones del catálogo.

6

Puede añadir el catálogo de la variable de entorno XML_CATALOG_FILES:

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

Ver this thread. Tenga en cuenta que las entradas en XML_CATALOG_FILES son URL separadas por espacios. Puede usar Python's pathname2url y urljoin (con file:) para generar la URL a partir de una ruta de acceso.

Cuestiones relacionadas