XSD定义具有属性和所需内容的元素

时间:2013-02-02 23:46:04

标签: xml xsd

好的,这一定很容易,但我找不到合适的解释或如何做的例子......

我想指定我的一个XML元素可以有一些属性,并且元素内容必须是非空白文本。例如,这是有效的:

<person age="30">Bob</person>

但这些结构无效,因为缺少元素文本:

<person age="30"></person>
<person age="30" />

FWIW,我现有的架构(片段),它不强制执行“必需的文本内容”规则,如下所示。我假设我想在这个模型的某个地方添加一个xs:restriction块,但是我无法弄清楚它在哪里。

<xs:element name="person">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="age" type="xs:int" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>

1 个答案:

答案 0 :(得分:1)

定义一个包含所需内容的类型:

<xs:simpleType name="textType">
  <xs:restriction base="xs:string">
    <xs:pattern value=".+"/>
  </xs:restriction>
</xs:simpleType>

之后,您可以将其用作元素的基本类型:

<xs:element name="person">
  <xs:complexType>
    <xs:simpleContent>
      <xs:extension base="textType">
        <xs:attribute name="age" type="xsd:int"></xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:element>