Dotaz:
ve schématu dmBaseTypes.xsd (ISDS) je nadefinován element dmXMLContent následovně:
<xs:element name="dmXMLContent">
<xs:annotation>
<xs:documentation>obálka pro libovolný XML obsah</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any namespace="" processContents="skip" />
</xs:sequence>
</xs:complexType>
</xs:element>
položka namespace je prázdná, implementace Microsoftu v tomto případě říká,
že se jako defaultní použije namespace="##any", nevím jak je to jinde.
problém spočívá v nemožnosti xml dokument vytvořený dle standardů správně validovat proti schématu
ess.xsd (NSESSS) které schéma dmBaseTypes.xsd importuje, pokud je tento dokument rozšířen
pomocí elementu dmXMLContent.
Chování ve validátoru xmllint:
xmllint --version
xmllint: using libxml version 20706
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
xmllint --noout -schema ess.xsd 71523748-false-doc-same.xml
71523748-false-doc-same.xml:27: element Formular: Schemas validity error : Element '{http://etrwiki.pcr.cz/etr-formular/v_2.0.0.0}Formular': This element is not expected.
71523748-false-doc-same.xml:102: element Formular: Schemas validity error : Element '{http://etrwiki.pcr.cz/etr-formular/v_2.0.0.0}Formular': This element is not expected.
71523748-false-doc-same.xml fails to validate
Chování validace v Eclipse Kepler (Version: Kepler Service Release 1
Build id: 20130919-0819 +
Eclipse XML Editors and Tools
Eclipse XSL Developer Tools
)
Errors (6 items)
cvc-complex-type.2.4.a: Invalid content was found starting with element 'e:Formular'. One of '{WC[]}' is expected.
cvc-complex-type.2.4.a: Invalid content was found starting with element 'e:Formular'. One of '{WC[]}' is expected.
cvc-complex-type.2.4.d: Invalid content was found starting with element 'e:FormularId'. No child element is expected at this point.
cvc-complex-type.2.4.d: Invalid content was found starting with element 'e:FormularId'. No child element is expected at this point.
cvc-complex-type.3.2.2: Attribute 'DokumentGuid' is not allowed to appear in element 'e:Formular'.
cvc-complex-type.3.2.2: Attribute 'DokumentGuid' is not allowed to appear in element 'e:Formular'.
Po úpravì na dmBaseTypes.xsd na
<xs:element name="dmXMLContent">
<xs:annotation>
<xs:documentation>obálka pro libovolný XML obsah</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<!--<xs:any namespace="" processContents="skip" />-->
<xs:any processContents="skip" />
</xs:sequence>
</xs:complexType>
</xs:element>
nebo
<xs:element name="dmXMLContent">
<xs:annotation>
<xs:documentation>obálka pro libovolný XML obsah</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<!--<xs:any namespace="" processContents="skip" />-->
<xs:any namespace="##any" processContents="skip" />
</xs:sequence>
</xs:complexType>
</xs:element>
validace pomocí xmllint nebo eclipse projde. Mám za to, že takto nadefinovaný element nelze rozšířit o žádné xml ať už patří do nějakého jmenného prostoru či nikoliv.
Jako řešení doporučuji upravit dmXMLContent tak, aby byl atribut namespace="" vynechán (alternativně namespace="##any")
109.1 Re: Položka dmXMLContent (dmBaseTypes.xsd)
admin 17.01.2017 11:36Dobrý den,
upravíme XSD podle Vašeho podnětu. Nicméně element dmXMLContent nemá v současném ISDS žádný význam a nedoporučuje se ho používat.
s pozdravem
Jan Šíma
ISDS
109.2 Re: Položka dmXMLContent (dmBaseTypes.xsd)
admin 17.01.2017 11:36Děkuji Vám za odpověď, i za přislíbené řešení. Položku dmXMLContent používáme v souladu se záměrem dokumentace ISDS pro výměnu dalších dat mezi systémy spisové služby.
Kamil Preiss