Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.11.0
-
None
Description
If I validate the following XML Schema, I get an error:
"cvc-xpath.3.13.4.2a: XPST0003 - Assertion XPath expression ('count(le:Einführung) le 1') on the schema type 'defKapitel' couldn't compile successfully."
I tested on the xml-schema-1.1-dev branch.
The error occurs because of the "ü" character that is used in the assertion. The problem seems to be the in the PsychoPath library (org.eclipse.wst.xml.xpath2.processor_1.2.0.jar) that Xerces uses.
I updated the PsychoPath library to the latest version, 2.1.2, and the validation seems to work well.
In order to make Xerces work with the new PsychoPath library, you need to make two modifications:
- in XSAssertionXPath2ValueImpl.java, you need to use PsychoPathTypeHelper instead of PsychoPathXPathTypeHelper.
- in AbstractPsychoPathXPath2Impl, the constructors of DefaultEvaluator and ElementType are modified.
------ XML Schema --------------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:le="myns" targetNamespace="myns"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:element name="Einführung"/>
<xs:element name="Lernziele"/>
<xs:element name="Textebene-1"/>
<xs:complexType name="defKapitel">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="2">
<xs:element ref="le:Einführung"/>
<xs:element ref="le:Lernziele"/>
</xs:choice>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="le:Textebene-1"/>
</xs:sequence>
<xs:assert test="count(le:Einführung) le 1"/>
</xs:complexType>
</xs:schema>
--------------------------------------------