On Sat, Aug 22, 2020 at 10:27 PM JOHN Morris
<j.morri...@ntlworld.com.invalid> wrote:

> I note your reference to using jaxp.SourceValidator/ I'm not sure whether
> you are claiming that, if you use that, you don't see any of the problems
> that I have highlighted(?)
>
I didn't mean that. Its just that, my personal preference to do XSD
validation with Xerces-J, for your examples, is to use Xerces-J sample
jaxp.SourceValidator.

> I find that seemingly good XML constructs cause validation error WHEN
> THOSE XML CONSTRUCTS OCCUR AT CERTAIN PROBLEMATIC LINE NUMBERS e.g. line
> 44, in my test1.xml file). However, those exact same constructs DO NOT
> trigger errors if they appear at different XML line numbers. For example,
> if I insert an XML comment line before one of these constructs,formerly
> appearing at a problematic line number, so that it now appears at the
> subsequent line number, it no longer triggers an error!!! That was what the
> second test file was supposed to illustrate.
>
I don't experience these things. For me, both of your XML documents
(test1.xml and test2.xml) when validated by your XSD document (test.xsd),
produces same sort of errors. My validation attempts using Xerces-J,
produces about 9 validation errors for both of the XML documents that are
validated. I'm not sure, what is different at your side.

> As for using xs:pattern, my imagination was not rich enough to know how to
> achieve the same effect as I was trying to get with 'matches' but now with
> xs:pattern. Have you been able to visualise how to do that?
>
Let's say you wish to have <xs:assert test="if
(./text()[matches(.,'^(install\.xml)$')]) then @file else true()"/> written
using xs:pattern instead of XPath 2.0 'matches' function.

Following should be the steps to do this,

1) Create an XSD simple type definition

<xs:simpleType name="StringType1">
    <xs:restriction base="xs:string">
         <xs:pattern value="regex_expr"/>
    <xs:restriction>
</xs:simpleType>

2) Write the xs:assert as following

<xs:assert test="if (./text() castable as StringType1) then @file else
true()"/>

(the above suggested XSD fragments, are not tested from my side)

Another minor point. I had to add the following XML prolog to your XML
documents that are to be validated,
<?xml version="1.0" encoding="ISO-8859-1"?>

(your XML documents contain few characters, that cannot be represented with
the default encoding UTF-8).



-- 
Regards,
Mukul Gandhi

Reply via email to