folgendes Problem:
Ich möchte den Schematron-Validierer von lxml nutzen.
Implementiert habe ich das Ganze so (natürlich wurden hier nur die Teile gepostet, welche zum validieren nötig sind...):
Code: Alles auswählen
from lxml import etree, isoschematron
self.__schematron = isoschematron.Schematron(etree.parse('d:/Schematron.sch'))
self.__xmlDoc = etree.parse(xmlFileName, parser=etree.XMLParser(strip_cdata=False))
self.__schematron.validate(self.__xmlDoc)
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
<schema xmlns="http://www.ascc.net/xml/schematron">
<pattern name="test">
<rule context="TestNode">
<assert test="@name">Kein name-Attribut</assert>
</rule>
</pattern>
</schema>
Code: Alles auswählen
<TestNode>
<DeviceTest name="BlaBlaBla">
<parent name="IrgendeinName">
...
</parent>
</DeviceTest>
</TestNode>
1. Ich habe 2 Validatoren getestet: lxml und jing. Wieso benötige ich für den lxml im Schematron diesen Namespace: http://purl.oclc.org/dsdl/schematron
in jing jedoch diesen: http://www.ascc.net/xml/schematron ??? Beide unterscheiden sich schon heftig voneinander...
2. Egal was ich in mein report-test-Attribute schreibe bzw in mein context-Attribute (auch das Beispiel oben), es wird irgendwie immer zu True ausgewertet?? Sowohl bei Jing, als auch bei lxml... Was passt da denn nicht?
Bin am verzweifeln. -.-*