我正在为我的网站设计一个XML Schema。模式中的一个元素称为“注释”,它应该包含从用户发布的注释。我不想允许使用某些xhtml标签: b , i 和 u 用于样式化。到目前为止,我所做的是导入XHTML命名空间,然后为我的comments元素声明一个complexType:
<import namespace="http://www.w3.org/1999/xhtml"
schemaLocation="xhtml1-transitional.xsd" />
....
<element name="comments">
<complexType mixed="true">
<any minOccurs="0">
<element ref="xhtml:u"/>
<element ref="xhtml:b"/>
<element ref="xhtml:i"/>
</any>
</complexType>
</element>
但这似乎不起作用!至少XML Schema不会通过IBM XML Schema Quality Checker进行验证。 xhtml1-transitional.xsd文件与XML Schema位于同一文件夹中。
答案 0 :(得分:1)
最简单的方法是使用<[CDATA[ ... ]]>
部分进行评论。我认为您在应用程序代码中验证了标记,因此您不必再次在XSD中强制执行验证。
由于您只想要一个XSD解决方案,我认为最简单的方法是将comments标记定义为字符串并转义html特殊字符:
<xsd:element name="comments" type="xsd:string" />
我不认为,在模式中将实际标记作为XML包含在内是一种好方法,因为它只是任意内容(有效HTML是什么,这是无效的XML?例如{{ 1}}没有<p>
是有效的HTML,但在XML中无效。
要转义的XML特殊字符
</p>
答案 1 :(得分:1)
您有语法错误; &LT;任何/&GT;不能有内容。您可能不得不使用(最有可能)重复选择。