xml架构:如何使用字符串pcdata和一个属性创建元素

时间:2013-05-19 16:15:40

标签: xsd

我正在尝试创建一个非常简单的元素,并且无法按照我在架构中想要的方式定义它。 (我正在使用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),但是根据错误必须有一个指向复杂类型的基础。

必须有一种方法来定义元素,如第一个示例中所示。第二个妥协对我来说实际上是可以的,但是我觉得我找不到像第一个例子那样做的方法。

感谢。

2 个答案:

答案 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子元素添加您的属性。

XML Schema for SimpleType and Attribute?