xerces-j-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Yitzhak Khabinsky <Yitzhak.Khabin...@Millicom.com>
Subject Xerces-J 2.12.0 vs. Saxon: XSD 1.1 gYearMonth comparison is failing
Date Wed, 08 Aug 2018 15:11:18 GMT
Hello,

I have a requirement to validate that:
Each gYearMonth(Date) value shall not fall outside of a particular year-month range.
The test case XML/XSD is below.

XML:
<?xml version="1.0" encoding="UTF-8"?>
<root DataFeed="2018-07" xmlns="http://www.millicom.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.millicom.com Test3.xsd">
    <r>
        <Date>2018-07-31</Date>
    </r>
    <r>
        <Date>2018-07-25</Date>
    </r>
</root>

XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="4.4"
targetNamespace="http://www.millicom.com" xmlns="http://www.millicom.com" xpathDefaultNamespace="##targetNamespace"
xmlns:saxon="http://saxon.sf.net/">
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="1" maxOccurs="unbounded" ref="r"/>
            </xs:sequence>
            <xs:attribute name="DataFeed" use="required" type="xs:gYearMonth"/>

            <xs:assert test="empty(r/Date[xs:gYearMonth(xs:date(.)) ne ../../xs:gYearMonth(@DataFeed)])"
saxon:message="Rule #0: Each Year-Month(Date) value shall be equal to the DataFeed attribute
value" xpathDefaultNamespace="##targetNamespace">
                <xs:annotation>
                    <xs:documentation>Rule #0</xs:documentation>
                    <xs:documentation>Each Year-Month(Date) value shall be equal to
the DataFeed attribute value</xs:documentation>
                </xs:annotation>
            </xs:assert>
        </xs:complexType>
    </xs:element>

    <xs:element name="r">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Date" type="xs:date"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

Saxon correctly evaluates that the XML is valid.

XercesJ emits the following error:
[Error] Test3.xml:11:8: cvc-assertion: Assertion evaluation ('empty(r/Date[xs:gYearMonth(xs:date(.))
ne ../../xs:gYearMonth(@DataFeed)])') for element 'root' on schema type '#AnonType_root' did
not succeed.


Regards,
Yitzhak Khabinsky
Technical Services Lead
Millicom International Services LLC
396 Alhambra Circle, Suite 1100
Coral Gables, FL  33134
Skype4B: +1 (305) 445-4172
Tel: (954) 684-8673
yitzhak.khabinsky@millicom.com<mailto:.khabinsky@millicom.com>
www.millicom.com<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.millicom.com%2F&data=02%7C01%7CMalcolm.Stewart%40microsoft.com%7C9338023699c2494d08be08d4ad12ce55%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636323743686702678&sdata=DxQ9dfL259rpdVZ9seOAcR6bvgxRobyIerOgvTgPc90%3D&reserved=0>


Mime
View raw message