我有一些XML Schema的问题。我需要在我的XML文件中放入一些HTML代码,然后我发现xs:any会有所帮助。但是xmllint会给我这样的错误:
example.xml:4: element h1: Schemas validity error : Element 'h1': This element is not expected. Expected is ( {http://www.w3.org/1999/xhtml}* ).
XML:
<?xml version="1.0" encoding="UTF-8"?>
<foo>
<bar>
<h1>Lorem ipsum</h1>
</bar>
</foo>
架构:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo">
<xs:complexType>
<xs:sequence>
<xs:element name="bar" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any namespace="http://www.w3.org/1999/xhtml" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我做错了什么?
答案 0 :(得分:3)
模式表明每个bar
元素可以包含http://www.w3.org/1999/xhtml
命名空间中的一个元素,但在实例文档中,您使用了位于h1元素>没有命名空间。您需要将xmlns="http://www.w3.org/1999/xhtml"
放在h1
上,或在树的后面添加前缀声明(例如<foo xmlns:h="http://www.w3.org/1999/xhtml">
),然后在XHTML元素上使用该前缀(<h:h1>
)。