xml validation with XSD 1.1
I don´t have experience with validation with XSD file, I have to validate the xml file with XSD 1.1 but I getting the next error:
lineNumber: 10; columnNumber: 71; c-cta-xpath: The XPath expression '@tipoelemento = CABECERA' couldn't compile successfully in 'cta-subset' mode, during CTA evaluation.
file.xml
<datos> <elemento tipoelemento="CABECERA"> <atributo> <nombre>VERSION</nombre> <valor>1.0</valor> </atributo> <atributo> <nombre>BRIGADA</nombre> <valor>JADSJL</valor> </atributo> <atributo> <nombre>BUZON</nombre> <valor>ASDKLFJKA</valor> </atributo> </elemento>
file.xsd
<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" vc:minVersion="1.1"> <xs:element name="datos"> <xs:complexType> <xs:sequence> <xs:element name="elemento" minOccurs="1" maxOccurs="1"> <xs:alternative test="@tipoelemento = 'CABECERA'" type="cabecera"/> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="cabecera"> <xs:sequence> <xs:element name="atributo" minOccurs="1" maxOccurs="1" type="VERSION" /> <xs:element name="atributo" minOccurs="1" maxOccurs="1" type="BRIGADA" /> <xs:element name="atributo" minOccurs="1" maxOccurs="1" type="BUZON" /> </xs:sequence> </xs:complexType> <xs:complexType name="VERSION"> <xs:sequence> <xs:element name="nombre" type="xs:string" minOccurs="1" fixed="VERSION" /> <xs:element name="valor" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="BRIGADA"> <xs:sequence> <xs:element name="nombre" type="xs:string" minOccurs="1" fixed="BRIGADA" /> <xs:element name="valor" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> <xs:complexType name="BUZON"> <xs:sequence> <xs:element name="nombre" type="xs:string" minOccurs="1" fixed="BUZON" /> <xs:element name="valor" type="xs:string" minOccurs="1" /> </xs:sequence> </xs:complexType> </xs:schema>
I haven´t experience in this materia, sorry!
I followed this link click here
I have seen in this link click here that I need use full XPath 2.0 but I don´t know how to do it.
How do I solve this issue?
Regards
XPath expressions used in conditional type assignment are restricted to accessing attributes, they can’t access child elements.
Your mistake is that in your expression, @tipoelemento = CABECERA
, CABACERA
is interpreted as child::CABECERA
, that is, a reference to a child element. I think you wanted a string literal here, which would be @tipoelemento = 'CABECERA'
where the string is in quotes.