2008-08-15 9 views

cevap

1

Bir örnek verebilir misiniz? lxml validation docs'a göre, lxml, düşündüğüm çoğu vakayı kapsayan DTD doğrulamasını (XML belgesinde veya harici olarak kodda) ve sistem kataloglarını işleyebilir.

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

kaynak sadece hata işleme için bazı #DEFINEs çıkıyor grepping, bu libxml2 özelliği açığa etmediğini LXML görünüyor: catalog implementation in libxml2 page itibaren

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 

mümkün görünüyor ki 'şeffaf'/etc/xml/catalog içinde yükleme yoluyla işlenmesi hala lxml'de çalışabilir, ancak bundan daha fazlasına ihtiyacınız varsa, her zaman lxml'yi terk edebilir ve katalog işlevlerini açığa çıkaran varsayılan python bağlamaları kullanabilirsiniz.

6

Sen XML_CATALOG_FILES ortam değişkeni katalog ekleyebilirsiniz:

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

this thread bakınız. XML_CATALOG_FILES'daki girişlerin boşlukla ayrılmış URL'leri olduğunu unutmayın. URL'yi bir yol adından oluşturmak için Python'un pathname2url ve urljoin'u (file: ile) kullanabilirsiniz.