具有Attributes和Child节点的元素的模式

时间:2010-05-31 03:21:10

标签: xml xsd

我正在尝试为具有自定义类型的元素编写xsd类型模式,以包含用于扩展基类型的附加属性。我遇到了使语法正确的问题。

<xs:element name="graphs">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="graph" 
                  minOccurs="1"
                  maxOccurs="unbounded"
                  type="graphType">
        <!-- child elements -->
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:complexType name="graphType">
<xs:simpleContent>
  <xs:extension base="xs:string">
    <xs:attribute name="title" type="xs:string"/>
    <xs:attribute name="type" type="xs:string"/>
  </xs:extension>
</xs:simpleContent>
</xs:complexType>

我认为这将是非常普遍的事情,但阅读了许多内容和论坛,我似乎无法找到适合我的答案。

编辑:其实我不希望父节点(图)包含字符串数据,只有xml ..

1 个答案:

答案 0 :(得分:2)

我想出了这个......

<xs:element name="graphs">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="graph" 
                  minOccurs="1"
                  maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="sequence" type="sequenceType"/>
          </xs:sequence>
          <xs:attribute name="title" type="xs:string"/>
          <xs:attribute name="type" type="xs:string"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:complexType name="sequenceType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
</xs:complexType>

我认为它在语法上是有效的。它看起来是否正确?