0

プロトタイプの XML スキーマがあります。抜粋については、投稿の最後を参照してください。私がやりたいのは、「入力」要素が1つしかない場合は「行」属性と「列」属性をオプションにすることですが、複数の「入力」要素がある場合は必須です。XSD 構文でこれを行うにはどうすればよいですか?

また、このスキーマはツールから生成されたもので、複雑すぎるようです。「xs:extension」/「xs:​​simpleContent」/「xs:​​complexType」要素を削除する方法はありますか?

XML スキーマの抜粋:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" targetNamespace="foobar"
    xmlns:f="foobar">
    <xs:element name="inspection">
        <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="unbounded">
                <xs:element ref="f:input" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="input">
        <xs:complexType>
            <xs:simpleContent>
                <xs:extension base="xs:integer">
                    <!--other attributes-->
                    <xs:attribute name="row" use="optional" type="xs:integer" />
                    <xs:attribute name="column" use="optional" type="xs:integer" />
                </xs:extension>
            </xs:simpleContent>
        </xs:complexType>
    </xs:element>
</xs:schema>
4

1 に答える 1

0

XML スキーマ 1.0 では、あなたが提案していること不可能です。

また、このセクションに関して:

また、このスキーマはツールから生成されたもので、複雑すぎるようです。「xs:extension」/「xs:​​simpleContent」/「xs:​​complexType」要素を削除する方法はありますか?

これ以上簡単な方法はありません。拡張された単純なデータ型に基づいているため、要素が複雑です。xs:integer要素に型を直接指定することで簡単にすることができますがデータxs:integer型には属性がないため、属性rowcolumn属性が失われます。

于 2013-10-31T22:56:24.330 に答える