0

我正在尝试创建一个非常简单的元素,但无法按照我在架构中想要的方式定义它。(我正在使用 oXygen 来编辑架构,并且在尝试定义元素时它给了我错误)

我想创建一个这样的元素:

<sc:col-hd id="1">Col hd name</sc:col-hd>

但我无法在架构中定义它。我最终做的是使用两个@atts 创建元素,如下所示:

<sc:col-hd id="1" col-name="bean"/>

的定义是这样的:

        <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),但是根据错误,它必须有一个指向复杂类型的基础。

必须有一种方法来定义第一个示例中的元素。第二个折衷方案对我来说实际上是可以的,但是我无法像第一个示例中那样找到一种方法来做到这一点,这让我很烦恼。

谢谢。

4

2 回答 2

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>        
于 2013-05-19T18:57:35.133 回答
0

您应该能够指定一个xsd:string simpleType然后通过xsd:extension子元素添加您的属性。

SimpleType 和属性的 XML 模式?

于 2013-05-19T16:24:03.133 回答