Этот оператор DTD
<!ELEMENT hosting (almacenamiento+)>
говорит, что модель содержимого для элемента <hosting>
состоит из одного или нескольких элементов <almacenamiento>
.Таким образом, XML-файл должен выглядеть следующим образом:
<hosting>
<almacenamiento tipo="normal">5GB</almacenamiento>
<almacenamiento tipo="premium">10GB</almacenamiento>
</hosting>
Та же самая конструкция применяется к
<!ELEMENT servidores (servidor+)>
<servidores>
<servidor>IBM1</servidor>
<servidor>IBM2</servidor>
</servidores>
Последняя ошибка связана с этим оператором DTD:
<!ELEMENT servicios (nube,redes,teleco,hosting,servidores,presupuesto_coste,componentes,presupuestos)>
Элемент <servicios>
должен состоять ровно из одного вхождения каждого элемента в списке, в точном порядке, необязательных элементов нет.Тем не менее, документ XML содержит два элемента <velocidad>
, что недопустимо.
<servicios>
<nube>Cloud Computing</nube>
<redes>Instalación de Redes</redes>
<velocidad valor="300">300Mbps</velocidad>
<velocidad valor="100">100Mbps</velocidad>
<teleco>Antenas instalacion y mantenimiento</teleco>
<hosting>Hosting Web</hosting>
Но здесь это становится сложным, поскольку элемент <velocidad>
должен содержаться в элементе <conexion>
, в соответствии сDTD:
<!ELEMENT conexion (tipo,velocidad)>
<!ATTLIST conexion tipo (fibra|cobre) #REQUIRED>
<!ATTLIST velocidad valor (100|300) #REQUIRED>
<!ELEMENT tipo (#PCDATA)>
<!ELEMENT velocidad (#PCDATA)>
Однако родительский элемент для <conexion
> отсутствует, поэтому он не может быть частью любого действительного документа XML, корневым элементом которого является <empresa>
.