Разрешить xml: space= "сохранить" в XSD для проверки


Я пытаюсь проверить xml-файл со схемой, которую я написал, но его ошибка со строкой:

Element 'Route', attribute '{http://www.w3.org/XML/1998/namespace}space': The attribute '{http://www.w3.org/XML/1998/namespace}space' is not allowed.

XML-файл иногда содержит следующее:

 <Route xml:space="preserve">

</Route>

Что, очевидно, вызывает проблему, что я могу сделать с моим xsd-файлом, чтобы разрешить это?

Вот мой XSD со всеми несущественными удаленными

<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet">
      <xs:element name="Route" type="xs:string" minOccurs="0" /> 
      <xs:element name="FurtherRequirements" type="xs:string" minOccurs="0" />

И т. д. и т.д.

Вся помощь с благодарностью принята!

1 2

1 ответ:

Вы должны изменить Route с бытия типа xs:string на бытие типа string-with-xml-space, где string-with-xml-space - сложный тип с простым содержанием, определяемый примерно так:

<xs:complexType name="string-with-xml-space">
  <xs:complexContent>
    <xs:extension base="xs:string">
      <xs:attribute ref="xml:space"/>

Вам также понадобится xs:import Схема для пространства имен XML:

<xs:import namespace='http://www.w3.org/XML/1998/namespace'  
           schemaLocation='http://www.w3.org/2001/xml.xsd'/>