Схема для смешивания HTML и XML (не «включая XHTML в XML») - PullRequest
0 голосов
/ 26 октября 2018

Легко встроить некоторый XHTML в документ XML, например:

<?xml version="1.0"?> 
<mannual:product xmlns:mannual="http://product/mannual" 
     xmlns="http://www.w3.org/1999/xhtml"> 
  ...
  <mannual:instruction>
    <p>Before proceeding, 
       <strong>make sure you put on your safety goggles</strong>.
       Start by unlocking the airlock...
    </p>
  </mannual:instruction>
  ....
</mannual:product>

Это можно сделать с помощью схемы XML <import>, импортирующей xsd файлы XHTML и определяющей элемент <mannual:instruction>, чтобы иметьтип xhtml.div.type

Но что, если мы хотим смешать XML и HTML?Например:

<?xml version="1.0"?> 
<mannual:product xmlns:mannual="http://product/mannual" 
     xmlns="http://www.w3.org/1999/xhtml"> 
  ...
  <mannual:instruction>
    <p><mannual:information>Before proceeding, 
         <strong>make sure you put on your safety goggles</strong>.
       </mannual:information>
       <mannual:action>
         Start by unlocking the airlock...
       </mannual:action>
    </p>
  </mannual:instruction>
  ....
</mannual:product>

Как видите, в сегменте XHTML используются некоторые элементы XML (<information> и <action>).Определение instruction как xhtml.div.type не пройдет проверку в таком случае.Как мы можем определить схему, чтобы позволить такую ​​гибкость?

1 Ответ

0 голосов
/ 26 октября 2018

Грамматика требует четкого определения;махающие рукой описания о микшировании не помогут.

Ваше «сочетание» HTML и XML не имеет такого четкого определения.Чтобы увидеть это, вам нужно заглянуть не дальше, чем элемент p вашего примера.HTML не определяет элемент p, чтобы иметь manual:information дочерние элементы.

Итак, вы можете

  • закатать рукава и написать правильную грамматику для вашей новой грамматики,или
  • Punt и используйте xsd:any, чтобы разрешить любую правильно сформированную разметку, в которой вы хотите смешивать HTML и XML, исключая возможность проверки в соответствии с реальной грамматикой там.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...