正确的XML Schema数据类型?

时间:2012-09-16 19:55:03

标签: xml types xsd schema

我对XML Schema类型有疑问。

类型必须是:

文本,允许嵌入式HTML格式化

我应该怎么做才能做到这一点? (允许嵌入式HTML格式化?我认为文本xsd:string例如可以,但我不知道如何允许嵌入式HTML格式化)

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

3 个答案:

答案 0 :(得分:2)

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

<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提供的模式。但这实际上取决于你想要做什么。

答案 1 :(得分: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更好。

答案 2 :(得分:0)

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

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

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