Я пытаюсь проверить следующий XML:xmllint не проверяет хз: язык
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dc="http://dublincore.org/schemas/xmls/qdc/2008/02/11/dc.xsd">
<xs:element name="feature">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:annotation>
<xs:documentation xml:lang="de-x-mt">
<dc:title xml:lang="de-x-mt">Berg</dc:title>
<dc:title xml:lang="en-x-mt">Mountain</dc:title>
</xs:documentation>
</xs:annotation>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
с использованием следующих xmllint
xmllint: using libxml version 20901
compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib Lzma
xmllint говорит:
test.xsd:7: element documentation: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}documentation', attribute '{http://www.w3.org/XML/1998/namespace}lang': 'de-x-mt' is not a valid value of the atomic type 'xs:language'.
WXS schema test.xsd failed to compile
Я не могу понять, почему «de-x-mt» недействителен «xs: language» в элементе xs: documentation, в то время как тот же «de-x-mt» действителен в элементе dc: title. Оба они из пространства имен xml и должны обрабатываться одинаково. Это на самом деле тот же атрибут! Это?!
В соответствии с "W3C XML Schema Definition Language (XSD) 1.1 Часть 2: Типы данных" хз: язык определяется как:
множество всех строк, которые соответствуют образцу
[a- zA-Z] {1,8} (- [a-zA-Z0-9] {1,8}) *
Очевидно, что de-x-mt соответствует этому образцу.
Это ошибка xmllint? Как заставить xmllint проверять такие теги xs: language?