восстановление существующей модели контента - XHTML - PullRequest
0 голосов
/ 02 ноября 2019

для моего необходим XHTML.

Тогда это мой DOCTYPE (код):

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html SYSTEM "http://myweb.com/DTD/prueba.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cosmos</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml;
charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="icon" href="https://myweb.com/graficos/favicon.ico"
type="image/x-icon" />
<style type="text/css">@import url("https://myweb.com/css/style.css");</style>
</head><body>
<div><planet>Jupiter!</planet></div>
</body></html>

и код "mydtd.tdt":

<!ELEMENT planet ANY>
<!ENTITY % html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
%html;

но validator.w3.org ответ:

document type does not allow element "planet" here

Я считаю, что этот ответ объясняется тем, что определение элемента BODY corse не включает в себя элемент "планета", я иду на W3C и они говорятв https://www.w3.org/TR/xhtml-modularization/dtd_developing.html#sec_E.3.1.

" В случае других элементов, для которых уже определены модели содержимого, добавление элемента потребует перезапуска существующей модели содержимого в дополнение к myelement. "

тогда я мог бы редактировать свое DTD, следуя инструкциям W3C в: https://www.w3.org/TR/xhtml-modularization/dtd_developing.html#s_dtd_dev_elems " По сути, авторы DTD должны написать объявление элемента для каждого элемента: "

<!ATTLIST %MyModule.myelement.qname;
      myattribute    CDATA    #IMPLIED
      >

но на самом деле я не знаю, как исправить мой DTD для добавления моего элемента / тега "планета", помогите, пожалуйста?

1 Ответ

0 голосов
/ 04 ноября 2019

Чтобы иметь возможность вставить элемент <planet> в документ XML, вам нужно указать DTD, где он может быть вставлен.
Технически это означает переписать весь DTD - так как вам нужно указать каждый существующий элементчто он может иметь новое содержимое - но, к счастью, DTD XHTML 1.1 является модульным, и все, что вам нужно сделать, это переопределить одну из его сущностей, прежде чем включать ее.

Предполагая, что новый элемент является элементом фразы, вставляемым везденапример, <dfn>, <cite> и т. д., мы можем использовать сущность InlPhras.class для добавления нового элемента в.

<!ENTITY % InlPhras.class
     "| em | strong | dfn | code | samp | kbd | var | cite | abbr | q | planet " >

Сделайте это перед включением DTD XHTML 1.1 в ваш DTD, чтобыВесь ваш файл будет выглядеть так:

<!ENTITY % InlPhras.class
     "| em | strong | dfn | code | samp | kbd | var | cite | abbr | q | planet " >
<!ELEMENT planet ANY>

<!ENTITY % html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
%html;

Тогда это сработает. И подтвердите.

Кстати, вы действительно хотите ANY для модели контента в новом элементе? Это означает, что в него можно положить любой элемент, даже <body> и <head>. Я не думаю, что это то, что вы хотите.

...