我是xml和html的新手,我有一个问题:)
在以下xml中:
<element name="itemDescription">
<any minOccurs="0"/>
</element>
“itemDescription”标记如何能够支持仅使用ul,li,b,i和span标记的HTML子集? 目前,它被定义为接受任何XML。
我在这个上搜索了很多 - 但我无法想出一个解决方案。只有我可以使用complexTypes。
有人能帮助我吗? :)
THX
答案 0 :(得分:0)
请记住,除了类似的语法之外,HTML与XML几乎没什么关系。
您可以查看schema of XHTML并复制出您需要的部分,但自己实施它们可能会更容易。
在任何情况下,恕我直言,尝试在XML应用程序中重新实现(X)HTML并不是一个好主意。
可能更容易答案 1 :(得分:0)
如果要允许一组特定的XHTML元素作为itemDescription的子元素,那么您需要做的是通过定义适当的复杂类型来指定那些子元素。 (如果您的架构是XSD,那么您还需要更正现有元素声明中的语法错误。)从您提到的特定XHTML元素,我想您还希望允许idemDescription包含字符数据。
执行该作业的itemDescription声明如下所示:
<xsd:element name="itemDescription">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xhtml:ul"/>
<xsd:element ref="xhtml:b"/>
<xsd:element ref="xhtml:i"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
由于您需要引用XHTML命名空间中的特定项,因此您还需要导入它。最简单的方法是使用如下导入:
<xsd:import namespace="http://www.w3.org/1999/xhtml"/>
但在某些时候,您需要将XSD验证程序指向XHTML的架构文档;有些人喜欢在import语句而不是在调用时执行此操作,因此他们在import语句中指定了schemaLocation属性:
<xsd:import namespace="http://www.w3.org/1999/xhtml"
schemaLocation="..."/>
这里“...”需要用指向您想要使用的XHTML模式的指针替换。 (建议使用本地副本,因为W3C makes it excruciatingly slow to retrieve schema documents from their site是一种尝试阻止过多DTD和架构流量的方法。)
由于您说您是XML新手,因此在一个地方拥有包含所有内容的完整架构文档可能会有所帮助。同样,如果你想在实践中使用它,请记住用一个URI替换schemaLocation值。
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:import namespace="http://www.w3.org/1999/xhtml"
schemaLocation="..."/>
<xsd:element name="itemDescription">
<xsd:complexType mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="xhtml:ul"/>
<xsd:element ref="xhtml:b"/>
<xsd:element ref="xhtml:i"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>