Я сгенерировал схему XSD из DTD в Visual Studio 2017, и я получаю следующую ошибку при проверке ее в notepad ++:
"ERROR: Element 'rutas': No matching global declaration available for the validation root."
Я пытался изменить кодировку, поскольку мой XML-файл находился вUTF-8 и тот из Visual Studio в Windows-1252. Я также проверил HTML с предыдущим DTD, и все было в порядке.
XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://tempuri.org/rutas" elementFormDefault="qualified" targetNamespace="http://tempuri.org/rutas" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="rutas">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" ref="ruta" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ruta">
<xs:complexType>
<xs:sequence>
<xs:element ref="tipo" />
<xs:element ref="transporte" />
<xs:element ref="duracion" />
<xs:element ref="agencia" />
<xs:element ref="descripcion" />
<xs:element ref="personas" />
<xs:element ref="inicio" />
<xs:element minOccurs="1" maxOccurs="unbounded" ref="bibliografia" />
<xs:element ref="recomendacion" />
<xs:element minOccurs="1" maxOccurs="unbounded" ref="hito" />
</xs:sequence>
<xs:attribute name="nombre" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="tipo" type="xs:string" />
<xs:element name="transporte" type="xs:string" />
<xs:element name="duracion" type="xs:string" />
<xs:element name="agencia" type="xs:string" />
<xs:element name="descripcion" type="xs:string" />
<xs:element name="personas" type="xs:string" />
<xs:element name="inicio">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" ref="fecha" />
<xs:element minOccurs="0" maxOccurs="1" ref="hora" />
<xs:element ref="lugar" />
<xs:element ref="direccion" />
<xs:element ref="coordenadas" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fecha" type="xs:string" />
<xs:element name="hora" type="xs:string" />
<xs:element name="lugar" type="xs:string" />
<xs:element name="direccion" type="xs:string" />
<xs:element name="coordenadas">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="longitud" type="xs:string" use="required" />
<xs:attribute name="latitud" type="xs:string" use="required" />
<xs:attribute name="altitud" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="bibliografia" type="xs:string" />
<xs:element name="recomendacion" type="xs:string" />
<xs:element name="hito">
<xs:complexType>
<xs:sequence>
<xs:element ref="descripcion" />
<xs:element ref="coordenadas" />
<xs:element ref="distancia" />
<xs:element minOccurs="1" maxOccurs="unbounded" ref="fotografia" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="video" />
</xs:sequence>
<xs:attribute name="nombre" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="distancia">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">`enter code here`
<xs:attribute name="unidades" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="fotografia" type="xs:string" />
<xs:element name="video" type="xs:string" />
</xs:schema>
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<rutas
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation='rutas.xsd'>
<ruta nombre = "Senda del oso">
<tipo> Paisajística </tipo>
<transporte> Bicicleta </transporte>
<duracion> 3 horas </duracion>
<agencia> Sin agencia </agencia>
<descripcion> Constituye una ruta idónea para amantes del senderismo y cicloturistas. </descripcion>
<personas> Forma física media/niños </personas>
<inicio>
<lugar> Tuñón </lugar>
<direccion> AS-228 Km. 7 </direccion>
<coordenadas longitud = "5º 58" latitud = "43º 17" altitud = "148m" />
</inicio>
<bibliografia> https://es.wikiloc.com/rutas-mountain-bike/asturias-senda-del-oso-via-verde-para-deporte-naturaleza-y-aventura-14435403 </bibliografia>
<bibliografia> https://yendoporlavida.com/2017/03/13/senda-del-oso-en-bicicleta-por-asturias/ </bibliografia>
<bibliografia> https://www.vallesdeloso.es/senda_del_oso.php </bibliografia>
<recomendacion> 10 </recomendacion>
<hito nombre = "Villanueva">
<descripcion> Villanueva es una parroquia del concejo asturiano de Santo Adriano </descripcion>
<coordenadas longitud = "6º" latitud = "43º 16" altitud = "170m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<video> "Video.mp3" </video>
</hito>
<hito nombre = "Proaza">
<descripcion> Pueblo de Asturias situado en el concejo de Proaza </descripcion>
<coordenadas longitud = "6º" latitud = "43º 15" altitud = "259m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
<hito nombre = "Entrago">
<descripcion> Final de la ruta </descripcion>
<coordenadas longitud = "6º 5" latitud = "43º 10" altitud = "494m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
</ruta>
<ruta nombre = "Senda del oso">
<tipo> Paisajística </tipo>
<transporte> Bicicleta </transporte>
<duracion> 3 horas </duracion>
<agencia> Sin agencia </agencia>
<descripcion> Constituye una ruta idónea para amantes del senderismo y cicloturistas. </descripcion>
<personas> Forma física media/niños </personas>
<inicio>
<fecha> 19-10-2019 </fecha>
<hora> 17:00 </hora>
<lugar> Tuñón </lugar>
<direccion> AS-228 Km. 7 </direccion>
<coordenadas longitud = "5º 58" latitud = "43º 17" altitud = "148m" />
</inicio>
<bibliografia> https://es.wikiloc.com/rutas-mountain-bike/asturias-senda-del-oso-via-verde-para-deporte-naturaleza-y-aventura-14435403 </bibliografia>
<bibliografia> https://yendoporlavida.com/2017/03/13/senda-del-oso-en-bicicleta-por-asturias/ </bibliografia>
<bibliografia> https://www.vallesdeloso.es/senda_del_oso.php </bibliografia>
<recomendacion> 10 </recomendacion>
<hito nombre = "Villanueva">
<descripcion> Villanueva es una parroquia del concejo asturiano de Santo Adriano </descripcion>
<coordenadas longitud = "6º" latitud = "43º 16" altitud = "170m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<video> "Video.mp3" </video>
</hito>
<hito nombre = "Proaza">
<descripcion> Pueblo de Asturias situado en el concejo de Proaza </descripcion>
<coordenadas longitud = "6º" latitud = "43º 15" altitud = "259m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
<hito nombre = "Entrago">
<descripcion> Final de la ruta </descripcion>
<coordenadas longitud = "6º 5" latitud = "43º 10" altitud = "494m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
</ruta>
<ruta nombre = "Senda del oso">
<tipo> Paisajística </tipo>
<transporte> Bicicleta </transporte>
<duracion> 3 horas </duracion>
<agencia> Sin agencia </agencia>
<descripcion> Constituye una ruta idónea para amantes del senderismo y cicloturistas. </descripcion>
<personas> Forma física media/niños </personas>
<inicio>
<fecha> 19-10-2019 </fecha>
<hora> 17:00 </hora>
<lugar> Tuñón </lugar>
<direccion> AS-228 Km. 7 </direccion>
<coordenadas longitud = "5º 58" latitud = "43º 17" altitud = "148m" />
</inicio>
<bibliografia> https://es.wikiloc.com/rutas-mountain-bike/asturias-senda-del-oso-via-verde-para-deporte-naturaleza-y-aventura-14435403 </bibliografia>
<bibliografia> https://yendoporlavida.com/2017/03/13/senda-del-oso-en-bicicleta-por-asturias/ </bibliografia>
<bibliografia> https://www.vallesdeloso.es/senda_del_oso.php </bibliografia>
<recomendacion> 10 </recomendacion>
<hito nombre = "Villanueva">
<descripcion> Villanueva es una parroquia del concejo asturiano de Santo Adriano </descripcion>
<coordenadas longitud = "6º" latitud = "43º 16" altitud = "170m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<video> "Video.mp3" </video>
</hito>
<hito nombre = "Proaza">
<descripcion> Pueblo de Asturias situado en el concejo de Proaza </descripcion>
<coordenadas longitud = "6º" latitud = "43º 15" altitud = "259m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
<hito nombre = "Entrago">
<descripcion> Final de la ruta </descripcion>
<coordenadas longitud = "6º 5" latitud = "43º 10" altitud = "494m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
</ruta>
<ruta nombre = "Senda del oso">
<tipo> Paisajística </tipo>
<transporte> Bicicleta </transporte>
<duracion> 3 horas </duracion>
<agencia> Sin agencia </agencia>
<descripcion> Constituye una ruta idónea para amantes del senderismo y cicloturistas. </descripcion>
<personas> Forma física media/niños </personas>
<inicio>
<fecha> 19-10-2019 </fecha>
<hora> 17:00 </hora>
<lugar> Tuñón </lugar>
<direccion> AS-228 Km. 7 </direccion>
<coordenadas longitud = "5º 58" latitud = "43º 17" altitud = "148m" />
</inicio>
<bibliografia> https://es.wikiloc.com/rutas-mountain-bike/asturias-senda-del-oso-via-verde-para-deporte-naturaleza-y-aventura-14435403 </bibliografia>
<bibliografia> https://yendoporlavida.com/2017/03/13/senda-del-oso-en-bicicleta-por-asturias/ </bibliografia>
<bibliografia> https://www.vallesdeloso.es/senda_del_oso.php </bibliografia>
<recomendacion> 10 </recomendacion>
<hito nombre = "Villanueva">
<descripcion> Villanueva es una parroquia del concejo asturiano de Santo Adriano </descripcion>
<coordenadas longitud = "6º" latitud = "43º 16" altitud = "170m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<video> "Video.mp3" </video>
</hito>
<hito nombre = "Proaza">
<descripcion> Pueblo de Asturias situado en el concejo de Proaza </descripcion>
<coordenadas longitud = "6º" latitud = "43º 15" altitud = "259m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
<hito nombre = "Entrago">
<descripcion> Final de la ruta </descripcion>
<coordenadas longitud = "6º 5" latitud = "43º 10" altitud = "494m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
</ruta>
<ruta nombre = "Senda del oso">
<tipo> Paisajística </tipo>
<transporte> Bicicleta </transporte>
<duracion> 3 horas </duracion>
<agencia> Sin agencia </agencia>
<descripcion> Constituye una ruta idónea para amantes del senderismo y cicloturistas. </descripcion>
<personas> Forma física media/niños </personas>
<inicio>
<fecha> 19-10-2019 </fecha>
<hora> 17:00 </hora>
<lugar> Tuñón </lugar>
<direccion> AS-228 Km. 7 </direccion>
<coordenadas longitud = "5º 58" latitud = "43º 17" altitud = "148m" />
</inicio>
<bibliografia> https://es.wikiloc.com/rutas-mountain-bike/asturias-senda-del-oso-via-verde-para-deporte-naturaleza-y-aventura-14435403 </bibliografia>
<bibliografia> https://yendoporlavida.com/2017/03/13/senda-del-oso-en-bicicleta-por-asturias/ </bibliografia>
<bibliografia> https://www.vallesdeloso.es/senda_del_oso.php </bibliografia>
<recomendacion> 10 </recomendacion>
<hito nombre = "Villanueva">
<descripcion> Villanueva es una parroquia del concejo asturiano de Santo Adriano </descripcion>
<coordenadas longitud = "6º" latitud = "43º 16" altitud = "170m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<video> "Video.mp3" </video>
</hito>
<hito nombre = "Proaza">
<descripcion> Pueblo de Asturias situado en el concejo de Proaza </descripcion>
<coordenadas longitud = "6º" latitud = "43º 15" altitud = "259m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
<hito nombre = "Entrago">
<descripcion> Final de la ruta </descripcion>
<coordenadas longitud = "6º 5" latitud = "43º 10" altitud = "494m" />
<distancia unidades = "km"> 3 </distancia>
<fotografia> "Foto.jpg" </fotografia>
<fotografia> "Foto.jpg" </fotografia>
</hito>
</ruta>
</rutas>
DTD:
<!ELEMENT rutas (ruta+)>
<!ELEMENT ruta (tipo, transporte, duracion, agencia, descripcion, personas, inicio, bibliografia+, recomendacion, hito+)>
<!ELEMENT tipo (#PCDATA)>
<!ELEMENT transporte (#PCDATA)>
<!ELEMENT duracion (#PCDATA)>
<!ELEMENT agencia (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT personas (#PCDATA)>
<!ELEMENT inicio (fecha?, hora?, lugar, direccion, coordenadas)>
<!ELEMENT fecha (#PCDATA)>
<!ELEMENT hora (#PCDATA)>
<!ELEMENT lugar (#PCDATA)>
<!ELEMENT direccion (#PCDATA)>
<!ELEMENT coordenadas (#PCDATA)>
<!ELEMENT bibliografia (#PCDATA)>
<!ELEMENT recomendacion (#PCDATA)>
<!ELEMENT hito (descripcion, coordenadas, distancia, fotografia+, video*)>
<!ELEMENT distancia (#PCDATA)>
<!ELEMENT fotografia (#PCDATA)>
<!ELEMENT video (#PCDATA)>
<!ATTLIST ruta nombre CDATA #REQUIRED>
<!ATTLIST coordenadas longitud CDATA #REQUIRED>
<!ATTLIST coordenadas latitud CDATA #REQUIRED>
<!ATTLIST coordenadas altitud CDATA #REQUIRED>
<!ATTLIST hito nombre CDATA #REQUIRED>
<!ATTLIST distancia unidades CDATA #REQUIRED>
С DTD, проверка DTD: XML действителен.