1

Altova XMLSpy 2014 には、以下を定義する XSD ドキュメントがあります:

  • 抽象型「t_abs」。
  • 一連の要素として定義された具象型「t_con」と、要素の 1 つが型「t_abs」として定義されています。
  • タイプ "t_con" で定義された要素 (インスタンス化可能)、"e_con"。

あれは正しいですか?抽象型は具象型のベースとして (拡張または制限によって) 使用されていないため、エラーが発生するはずだと思います。抽象型 (t_abs) は、インスタンス化可能な具象への具象要素の型として使用されています。要素 (t_con)。

XMLSpy は具体的な要素で使用されている抽象型の警告を返す必要がありますか?

例:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
    <xs:complexType name="t_abs" abstract="true">
        <xs:sequence>
            <xs:element name="el" type="xs:string"/>
            <xs:element name="e2" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="t_con">
        <xs:sequence>
            <xs:element name="e_t_con_1" type="xs:string"/>
            <xs:element name="e_t_abs" type="t_abs"/>
            <xs:element name="e_t_con_2" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="e_con" type="t_con"/>
</xs:schema>
4

1 に答える 1

2

XMLSpy は、実際の検証の前に予想されるエラーを報告しないように許可されています (強調を追加):

3.4.1 複合型定義スキーマ コンポーネント

{abstract} が true である複合型は、要素情報項目の検証用の{型定義} として使用してはなりません。したがって、インスタンス ドキュメント内の xsi:type (§2.6.1) 属性からそれらを参照してはなりません。抽象複合型は {base type definition} として、または要素宣言の {type definition} としても使用できます。いずれの場合でも、 xsi :type (§ 2.6.1) または代替グループの操作。

ドキュメント インスタンスの検証にXSD を使用しようとすると、

<?xml version="1.0" encoding="utf-8"?>
<e_con>
  <e_t_con_1/>
  <e_t_abs>
    <el/>
    <e2/>
  </e_t_abs>
  <e_t_con_2/>
</e_con>

Xerces-J によって生成された次のような、求めるエラーが表示されることがわかります。

[エラー] try2.xml:5:12: cvc-type.2: 要素 e_t_abs の型定義を抽象化することはできません。

于 2014-07-02T13:53:58.167 に答える