【问题标题】:Schema definition for single element with attribute具有属性的单个元素的模式定义
【发布时间】:2012-02-22 01:34:51
【问题描述】:

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

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

文本文本

我的搜索不断向我展示如何向具有多个嵌套元素的 complexTypes 添加属性,这看起来很简单。你能不笑得太多就帮忙吗?我知道这必须很简单。 anAttribute 是 xs:string 类型以及 anElement 的类型。

谢谢, BBB

【问题讨论】:

  • 好的伪代码是code Texty Texted Text

标签: xml xsd


【解决方案1】:

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

  <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 属性。

【讨论】:

  • 吉多,谢谢!我想这个故事的寓意是,在你的最低级别元素中没有属性,事情就像教程一样简单。感谢您的答案代码和解释。我只是假设这不需要扩展,但这表明我对 xsd 的无知。如果我的“anElement”中只有一个元素,这似乎很简单。很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-12
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
相关资源
最近更新 更多