XML模式如何使用无子元素编写字符串
我有一个XML文件。我正在尝试生成xsd模式文件。我的xml文件:XML模式如何使用无子元素编写字符串,xml,xsd,dtd,Xml,Xsd,Dtd,我有一个XML文件。我正在尝试生成xsd模式文件。我的xml文件: <?xml version="1.0" encoding="UTF-8"?> <recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="sample.xsd" id="62378"> <title>Beans On Toast</title>
<?xml version="1.0" encoding="UTF-8"?>
<recipe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="sample.xsd" id="62378">
<title>Beans On Toast</title>
<ingredients>
<item quantity="1" unit="slice">bread</item>
<item quantity="1" unit="can">bakedbeans</item>
</ingredients>
</recipe>
我的架构文件是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="recipe" type="recipeType"/>
<xs:complexType name="recipeType">
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="ingredients" type="ingredientsType"/>
</xs:sequence>
<xs:attribute name="id" type="xs:integer"/>
</xs:complexType>
<xs:complexType name="ingredientsType">
<xs:sequence>
<xs:element name="item" type="itemType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemType">
<xs:attribute name="quantity" type="xs:integer"/>
<xs:attribute name="unit" type="xs:string"/>
</xs:complexType>
</xs:schema>
我在验证时出错。我知道原因。因为我无法定义元素item type=xs:string,因为我必须为属性编写complexTypeitemType。有人能解决这个问题吗?如果需要属性,必须使用complexType。但是,如果您还需要简单内容,那么可以将complexType定义为包含simpleContent,并使用基本简单类型的属性对其进行扩展 在您的情况下,您可以这样做:
<xs:complexType name="itemType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="quantity" type="xs:integer"/>
<xs:attribute name="unit" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
尝试在复杂类型定义中将itemType声明为mixed use mixed='true'。谢谢。这里也有描述:你能再解释一下吗?我需要标题的顺序,成分,但为什么我必须在下一块写顺序?否则就是给我错误。
<item quantity="1" unit="slice">bread</item>
<xs:complexType name="ingredientsType">
<xs:sequence>
<xs:element name="item" type="itemType" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>