1

我有一个具有 HTML 类型的自定义 xml 架构。我想引用几个可以在这个 html 类型(a、p、ul 等)中使用的“标准”html 元素。我找到了具有这些元素的以下架构。

http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd

我添加了以下行来导入架构

<xs:import schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd" />

我正在尝试使用里面的元素,如下所示

<xs:complexType name="Html">
  <xs:choice maxOccurs="unbounded">
    <xs:element ref="ul"></xs:element>
  </xs:choice>
</xs:complexType>

它不起作用,我错过了什么?这样做的正确方法是什么?

4

1 回答 1

2

导入模式中定义的 HTML 元素位于 xhtml 命名空间中:http://www.w3.org/1999/xhtml. 因此,您还应该为您的元素添加一个namespace="http://www.w3.org/1999/xhtml"属性。<xs:import>为了引用导入模式中定义的元素和类型,您需要有一个命名空间定义,其中包含 xhtml 命名空间的一些前缀。那就是:你需要在你的元素中有例如xmlns:xh="http://www.w3.org/1999/xhtml"定义,然后当你引用在 XHTML 模式中定义的类型、元素等时<xs:schema>使用这个前缀(这里)。xh

所以你的示例代码变成:

<xs:schema 
    ... 
    xmlns:xh="http://www.w3.org/1999/xhtml"
    ...
    >

<xs:import schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"
           namespace="http://www.w3.org/1999/xhtml" />

    <xs:complexType name="Html">
      <xs:choice maxOccurs="unbounded">
        <xs:element ref="xh:ul"></xs:element>
      </xs:choice>
    </xs:complexType>

</xs:schema>
于 2013-02-28T01:07:20.060 回答