2013-02-02 56 views
2

好吧,这必须是容易的元素和所需的内容,但我不能找到一个体面的解释或示例的怎么办呢?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

定义与要求的内容这样的类型:

<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>