xsd 分解出多用途属性 [英] xsd factor out multiple use attribute

查看:37
本文介绍了xsd 分解出多用途属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道如何分解这段 XSD:

I'm not sure how to factor out this piece of XSD:

<xs:attribute name="status" use="required">
    <xs:simpleType>
        <xs:restriction base="xs:token">
            <xs:enumeration value="not run"/>
            <xs:enumeration value="passed"/>
            <xs:enumeration value="failed"/>
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

标签中都需要:

which is needed in both <test> and <step> tags:

<?xml version="1.0" encoding="UTF-16"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="FlowBi:Emis:FeatureTests" 
xmlns="FlowBi:Emis:FeatureTests" 
elementFormDefault="qualified" 
attributeFormDefault="unqualified">
<xs:element name="featureTests">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="test" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence> 
                        <xs:element name="summary" type="xs:string"/>
                        <xs:sequence>
                            <xs:element name="step" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="xs:string">
                                            <xs:attribute name="status" use="required">
                                                <xs:simpleType>
                                                    <xs:restriction base="xs:token">
                                                        <xs:enumeration value="not run"/>
                                                        <xs:enumeration value="passed"/>
                                                        <xs:enumeration value="failed"/>
                                                    </xs:restriction>
                                                </xs:simpleType>
                                            </xs:attribute>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:sequence>
                    <xs:attribute name="status" use="required">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="not run"/>
                                <xs:enumeration value="passed"/>
                                <xs:enumeration value="failed"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:attribute>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

最好将重复的部分分解出来并在每个使用它的地方引用它,但我不确定如何对属性类型执行此操作.

It would be nice to factor out the repeated section and just reference it in each place it is used but I'm not sure how to do this for attribute types.

推荐答案

应该这样做

<?xml version="1.0" encoding="utf-16"?>
<!--Created with Liquid XML Studio 2012 Developer Edition 10.1.2.4113 (http://www.liquid-technologies.com)-->
<xs:schema xmlns="FlowBi:Emis:FeatureTests" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="FlowBi:Emis:FeatureTests" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="featureTests">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="test" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="summary" type="xs:string" />
                            <xs:sequence>
                                <xs:element name="step" minOccurs="0" maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:string">
                                                <xs:attribute name="status" type="statusType" use="required" />
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:sequence>
                        <xs:attribute name="status" type="statusType" use="required" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="statusType">
        <xs:restriction base="xs:token">
            <xs:enumeration value="not run" />
            <xs:enumeration value="passed" />
            <xs:enumeration value="failed" />
        </xs:restriction>
    </xs:simpleType>
</xs:schema>

这篇关于xsd 分解出多用途属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆