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文件。我正在尝试生成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>
  <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>