混合HTML和XML的架构(不“包含XML中的XHTML”)

时间:2018-10-26 02:02:21

标签: xml xsd xhtml

在XML文档中嵌入一些XHTML很容易,就像这样:

<?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>

这可以通过导入XHTML的<import>文件的XML模式xsd并将元素<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 :(得分:0)

语法需要明确的定义;挥舞着手的关于混合的描述不会减少它。

您的HTML和XML“混合”没有这样明确的定义。要了解这一点,您只需要看示例中的p元素即可。 HTML并未将p元素定义为具有manual:information个子元素。

所以,您可以

  • 卷起袖子,为新语法写一个合适的语法,或者
  • 平底锅,并使用xsd:any允许您希望将HTML和XML混合使用的任何格式正确的标记,并且具有根据实际语法进行验证的功能。