0

Data Format Description Language (DFDL) v 1.0の現在の実装では、順序付けられていないリストはサポートされていません。回避策はありますか?

4

2 に答える 2

1

IBM の実装は、DFDL 1.0 仕様に従って dfdl:sequenceKind="unordered" をサポートするようになりました。

于 2015-10-09T15:13:32.260 に答える
0

はい、回避策があります。簡単な例として、入力テキストが単純な一連の文字 (a、b、および c) であり、任意の順序で表示されるとします。順序なしリストを作成するには、文字ごとに要素を作成します。コンテナーに無制限の最大出現数があり、子要素がすべて選択肢になるように、それらを含む要素に入れます。

概念的には、次のようになります。

Container Element
  Choice
    A Element
    B Element
    C Element

ディスクリミネーターを使用して、各文字の存在をテストします。

DFDL スキーマは次のようになります (一部)

<xsd:element name="Container" dfdl:occursCountKind="implicit"
    dfdl:terminator="" maxOccurs="unbounded" minOccurs="1" >
    <xsd:complexType>
        <xsd:choice>
            <xsd:element name="a" dfdl:length="1" dfdl:lengthKind="explicit"
                fixed="a" minOccurs="1" type="xsd:string">
                <xsd:annotation>
                    <xsd:appinfo source="http://www.ogf.org/dfdl/">
                        <dfdl:discriminator>{. eq 'a'}</dfdl:discriminator>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="b" dfdl:length="1" dfdl:lengthKind="explicit"
                fixed="b" minOccurs="1" type="xsd:string">
                <xsd:annotation>
                    <xsd:appinfo source="http://www.ogf.org/dfdl/">
                        <dfdl:discriminator>{. eq 'b'}</dfdl:discriminator>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
            <xsd:element name="c" dfdl:length="1" dfdl:lengthKind="explicit"
                fixed="c" minOccurs="1" type="xsd:string">
                <xsd:annotation>
                    <xsd:appinfo source="http://www.ogf.org/dfdl/">
                        <dfdl:discriminator>{. eq 'c'}</dfdl:discriminator>
                    </xsd:appinfo>
                </xsd:annotation>
            </xsd:element>
        </xsd:choice>
    </xsd:complexType>
</xsd:element>

:

于 2013-03-06T15:38:17.953 に答える