我有一个关于 XML Schema 类型的问题。
类型必须是:
文本,允许嵌入 HTML 格式
我应该用什么来做到这一点?(允许嵌入的 HTML 格式?我认为例如文本 xsd:string 会很好,但我不知道该怎么做才能允许嵌入的 HTML 格式)
在这种情况下我应该包括什么?
我认为 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提供的模式。但这实际上取决于您要做什么。
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
.
模式的目的是控制文档的逻辑结构,而不是选择字符数据的转义约定。
您只需CDATA
在文档 XML 中添加部分,无需修改 XSD。