我正在尝试创建一个非常简单的元素,并且无法按照我在架构中想要的方式定义它。 (我正在使用oXygen编辑模式,并且在尝试定义元素时它会给我错误这一事实)
我想创建一个这样的元素:
<sc:col-hd id="1">Col hd name</sc:col-hd>
但我无法在架构中定义它。我最终做的是用两个@atts创建元素,如下所示:
<sc:col-hd id="1" col-name="bean"/>
并且def为此:
<xsd:element name="col-hd" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="id" type="xsd:int"/>
<xsd:attribute name="col-name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
但如果我想在第一个例子中定义它,我该怎么做? xsd:simpleContent是atts之前唯一允许的元素(根据oXygen),但是根据错误必须有一个指向复杂类型的基础。
必须有一种方法来定义元素,如第一个示例中所示。第二个妥协对我来说实际上是可以的,但是我觉得我找不到像第一个例子那样做的方法。
感谢。
答案 0 :(得分:1)
xsd:simpleContent
可以扩展一个简单类型,以下内容可以满足您的需求:
<xsd:element name="col-hd" maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="id" type="xsd:int"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
答案 1 :(得分:0)
您应该可以指定xsd:string
simpleType
,然后通过xsd:extension
子元素添加您的属性。