lxml belgelerine göre "DTD, ayrıştırılan belgenin DOCTYPE'sine göre otomatik olarak alınır. Tek yapmanız gereken DTD doğrulaması etkinleştirilmiş bir ayrıştırıcı kullanmaktır." Bir XML şemaya göre doğrulanamadı istiyorsanızOtomatik XSD doğrulama
http://lxml.de/validation.html#validation-at-parse-time
Ancak, açık olarak bir başvuru gerekiyor.
Bunun nedenini merak ediyorum ve bunu yapabilecek bir kütüphane veya işlev olup olmadığını bilmek istiyorum. Ya da bunun nasıl gerçekleşeceğine dair bir açıklama bile. Sorun, bir XSD'ye başvurmanın birçok yolu gibi görünüyor ve hepsini desteklemem gerekiyor.
Doğrulama sorun değildir. Sorun, doğrulanacak şemaların nasıl belirleneceğidir. İdeal olarak bu, inline şemaları da ele alacaktır.
Güncelleme: İşte
bir örnektir.
simpletest.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="name" type="xs:string"/>
</xs:schema>
simpletest.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<name xmlns="http://www.example.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org simpletest.xsd">foo</name>
aşağıdaki gibi bir şey yapmak istiyorum:
>>> parser = etree.XMLParser(xsd_validation=True)
>>> tree = etree.parse("simpletest.xml", parser)
Size kendi biçimlerinizle nasıl baş edeceğinizi söyleyemeyiz. – Marcin
Marcin, yorumunuzu anlamıyorum. Belki de şema doğrulamanın nasıl çalıştığını anlamıyorum. – Jono
Windows'da bunu yapıyor musunuz? AFAIK Microsoft, satır içi şemaları destekleyen tek kişidir. –