1

この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>

<test>これはと<step>タグの両方で必要です:

<?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>

繰り返されるセクションを除外し、それが使用される各場所でそれを参照するのは良いことですが、属性タイプに対してこれを行う方法がわかりません。

4

2 に答える 2

2

これでできるはず

<?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>
于 2012-08-08T16:40:35.547 に答える
1

@Sprotty が提供する回答は正しいです (+1)。コメントに収まらない説明/バリエーションを追加します(したがって、答えです)...

通常、Sprotty で単純型のみが再利用された理由は、XSD で属性が一般的に修飾されていないことに関係しています。この例では属性が修飾されていないため、属性が attributeGroup の下にラップされている場合にのみ、属性全体を再利用できます。基本的に、グローバルに定義された属性を再利用することは、属性を修飾することを意味します。

したがって、これは属性宣言を再利用する別の可能性です (単純型のみとは対照的に):

<?xml version="1.0" encoding="UTF-16"?>
<!--XML Schema generated by QTAssistant/XML Schema Refactoring (XSR) Module (http://www.paschidev.com)-->
<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:attributeGroup ref="gaStatus" />
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:sequence>
                        <xs:attributeGroup ref="gaStatus" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="gaStatus">
        <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:attributeGroup>
</xs:schema>
于 2012-08-08T19:28:57.753 に答える