0

我有一个关于 XML Schema 类型的问题。

类型必须是:

文本,允许嵌入 HTML 格式

我应该用什么来做到这一点?(允许嵌入的 HTML 格式?我认为例如文本 xsd:string 会很好,但我不知道该怎么做才能允许嵌入的 HTML 格式)

在这种情况下我应该包括什么?

4

3 回答 3

2

我认为 xsd:string 将是一个不错的选择。它将允许您像这样将 html 嵌入到 CDATA 中。

<xsd:element name="embedded_html" type="xsd:string"/>

<embedded_html><![CDATA[<p>This is silly HTML</p>]]></embedded_html>

但是你根本没有得到任何形式的验证,任何字符串都可以。

您可以做的另一件事就是使用为 xhtml http://www.w3.org/TR/xhtml1-schema/#schemas提供的模式。但这实际上取决于您要做什么。

于 2012-09-16T20:04:37.217 回答
1

xs:string数据类型确实不适合穿插标记的字符数据;这就是复杂类型mixed="true"的用途。

如果您正在为文档类型编写 XSD 模式并希望特定元素能够包含任意 XHTML 元素,那么声明它的正确方法是这样的:

<xs:element name="embedded_html">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/1999/xhtml" 
              minOccurs="0" 
              maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

这将不允许 HTML 包含标签沙拉;HTML 需要格式正确(即编码为 XHTML)。如果出于某种原因您认为您需要允许将标签沙拉作为 的内容embedded_html,那么您的选择是重新考虑您实际需要的内容,或者像其他一些词汇表所做的那样并转义 HTML 编码。但即使在这种情况下,我认为使用混合内容会比xs:string.

于 2012-09-16T23:41:50.897 回答
0

模式的目的是控制文档的逻辑结构,而不是选择字符数据的转义约定。

您只需CDATA在文档 XML 中添加部分,无需修改 XSD。

链接:http ://www.w3schools.com/xml/xml_cdata.asp

于 2012-09-16T20:04:27.007 回答