将属性分配给XSD中的EACH元素

时间:2013-11-06 16:03:20

标签: xml xsd

我想为我的XSD中的每个元素分配一个属性。

示例:

mySchema.xsd

每个元素:

<xs:element name="description" type="xs:string" />
<xs:element name="benefits" type="xs:string"/>
<xs:element name="best_practices" type="xs:string"/>
<xs:element name="example" type="xs:anyURI"/>

我希望他们有这个属性:

<xs:attribute name="label" type="xs:string"/> 

在这个例子中,元素只有4,但在我的情况下有很多元素,...任何建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您要添加属性,那么您实际上是将xs:string中的元素的类型更改为包含该属性的自定义complexType

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.com/namespace"
           xmlns:tns="http://example.com/namespace"
           elementFormDefault="qualified">

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

使用此类型,您只需在元素上使用type="tns:labelledString"而不是type="xs:string",同样的方法适用于anyURI(使用另一种自定义类型xs:anyURI 1}})。