具有属性的单个元素的模式定义

时间:2012-02-22 01:34:51

标签: xml xsd

这个问题显然是无知,抱歉。我找不到我想要的例子。如果我在XML文件中有一个元素并想在其上放置一个必需的属性,那么XSD定义是什么?我见过的文档似乎暗示一个类型必须复杂才能包含其他元素或属性。但是当我尝试使用没有其他元素的complexType定义时,我无法在没有匿名子类型投诉的情况下添加“类型”。

我基本上想要定义一些东西

Texty Texted Text

我的搜索一直向我展示如何使用多个嵌套元素向complexTypes添加属性,这看起来非常简单。没有笑太多,你能帮忙吗?我知道这必须简单。 anAttribute是类型xs:string以及anElement的类型。

谢谢, BBB

1 个答案:

答案 0 :(得分:2)

简单类型不能具有属性,而字符串是简单类型。因此,您必须定义一个复杂类型来承载属性声明。要定义基于简单类型字符串的复杂类型,需要从简单类型字符串派生新的复杂类型:

  <xs:element name="anElement">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="anAttribute" type="xs:string"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>

使用complexType元素开始定义新的(匿名)类型。要指示新类型的内容模型仅包含字符数据而不包含元素,请使用simpleContent元素。最后,通过扩展简单的字符串类型来派生新类型。扩展包括使用标准属性声明添加anAttribute属性。