#xml #xsd
#xml #xsd
Вопрос:
1.файл xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.android.com/apk/res/android">
<xs:attribute name="debuggable" type="xs:string"/>
</xs:schema>
2.файл xsd:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:import xmlns:android="http://schemas.android.com/apk/res/android" namespace="http://schemas.android.com/apk/res/android" schemaLocation="1.xsd" />
...
<xs:attribute ref="android:debuggable" use="optional" fixed="false" />
...
Когда я попытался вызвать assertValid
с помощью file 2.xsd, он не смог обнаружить debuggable
значение set true
. Однако, когда я перейду fixed="false"
к 1.xsd (все еще загружаю файл 2 как схему), это сработает. Это потому, что ключ в файле 2 ссылается на атрибут в файле 1 и не может добавить к нему дополнительные свойства? В любом случае, чтобы обойти это без изменения файла 1?
Ответ №1:
Оказалось, что есть что-то, с чем можно справиться. lxml
.. и я постараюсь разобраться позже. Я заменил lxml
библиотеку на xmlschema
, ничего не меняя, и все работает как шарм.
assertValid
in lxml
возвращает true, когда is_valid
in xmlschema
возвращает false, довольно странный случай.
Надеюсь, это поможет кому-нибудь сэкономить немного времени, если вы когда-нибудь столкнетесь с этим.