Python'un LXML bir XML kataloğunu kullanarak?

oy
7

Bir şekilde ben LXML kullanarak bir XML belgesi ayrıştırmak durumlarda harici katalog dosyasını kullanarak DTD'sine karşı belgeyi doğrulamak için, var mı? Bir belgenin DTD'sinde tanımlanan sabit özelliklerini çalışmak gerekiyor.

Oluştur 15/08/2008 saat 17:42
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
1

Bir örnek verebilir misin? Göre Lxml doğrulama docs , Lxml Aklıma gelen en davaları kapsar (XML doc veya dıştan kodunda belirtilen) DTD doğrulama ve sistem katalogları, işleyebilir.

f = StringIO("<!ELEMENT b EMPTY>")
dtd = etree.DTD(f)
dtd = etree.DTD(external_id = "-//OASIS//DTD DocBook XML V4.2//EN")
Cevap 16/08/2008 saat 06:57
kaynak kullanıcı

oy
0

Lxml kaynağı sadece hata işleme için bazı #DEFINEs çıkıyor grepping, bu libxml2 özelliği açığa etmediğini görünüyor:

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

Gönderen libxml2 sayfasında katalog uygulaması / etc / xml / katalogda hala LXML çalışabilir 'şeffaf' kurulumu aracılığıyla işleme mümkün görünüyor, ama sen hep LXML terk edip varsayılan piton bağlantıları da kullanabilirsiniz Bundan daha fazlasına ihtiyacınız varsa, katalog fonksiyonlarını gösteriyoruz hangi.

Cevap 30/08/2008 saat 17:10
kaynak kullanıcı

oy
6

Sen hiç katalog ekleyebilirsiniz XML_CATALOG_FILESortam değişkeni:

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

Bkz Konuyu . Girişler unutmayın XML_CATALOG_FILESboşlukla ayrılmış URL'lerdir. Sen Python'un kullanabilirsiniz pathname2urlve urljoin(ile file:bir yol adı gelen URL oluşturmak için).

Cevap 05/12/2011 saat 18:54
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more