Hi,
 
I tried to parse and validate the following file (with Xerces-C++ 2.4 and 2.6):
 
<?xml version="1.0"?>
<vxml version="2.0"
      xmlns="http://www.w3.org/2001/vxml"
      xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation = "http://www.w3.org/2001/vxml http://www.w3.org/TR/voicexml20/vxml.xsd">
 <form>
  <block>
   <prompt> Hello World</prompt>
  </block>
 </form>
</vxml>
 
I get the following errors:
 
 Error at file "http://www.w3.org/TR/voicexml20/vxml-synthesis-restriction.xsd",
               line 30, column 53
    Message: Could not find a declaration in the schema to be redefined corresponding to 'say-as'
   
 Error at file "http://www.w3.org/TR/voicexml20/vxml-synthesis-restriction.xsd",
               line 43, column 52
    Message: Could not find a declaration in the schema to be redefined corresponding to 'audio'
   
 Error at file "http://www.w3.org/TR/voicexml20/vxml-synthesis-extension.xsd", line 30, column 53
    Message: Global complexType:'say-as' declared more than once or also declared as simpleType
   
 Error at file "http://www.w3.org/TR/voicexml20/vxml-synthesis-extension.xsd", line 43, column 52
    Message: Global complexType:'audio' declared more than once or also declared as simpleType
 
I also tried to validate it with XSV (http://www.w3.org/2001/03/webdata/xsv) and it passed.
 
Schemas involved are the following:
 
The schema vxml.xsd includes vxml-synthesis-extension.xsd:
 
    <xsd:include schemaLocation="vxml-synthesis-extension.xsd"/>
The schema vxml-synthesis-extension.xsd redefines vxml-synthesis-restriction.xsd:
 
      <xsd:redefine schemaLocation="vxml-synthesis-restriction.xsd">
The schema vxml-synthesis-restriction.xsd redefines synthesis-core.xsd:
 
    <xsd:redefine schemaLocation="synthesis-core.xsd">
 
That is, the schema synthesis-core.xsd contains definitions of types "audio" and "say-as".
The schema vxml-synthesis-restriction.xsd redefines only the type "speak".
The schema vxml-synthesis-extension.xsd redefines types "audio" and "say-as".
 
It seems that the problem is that Xerces parser assumes that the original
definitions of types "audio" and "say-as" should be present in
vxml-synthesis-restriction.xsd, while they are present in synthesis-core.xsd.
 
I am not sure if XML schema specification allows it, but it seems to me that it
is very unlikely that VoiceXML schema is not correct.
 
So, I think this might be a bug in Xerces schema validation.
Am I true?
 
Regards,
Hrvoje Nezic, Envox Lab
 

Reply via email to