0

次の形式の XML があります。

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
        ....
        ....
        <Child5>Some text about child 5</Child5>
        ....
        ....
        <Childn>Some text about child n</Childn>
    </Parent>
</RootNode>

ここで、この xml を xsd に対して検証したいと思います。

しかし問題は、子の数とノード名が固定されていないことです。

私のファイルの次のサンプルを確認してください

サンプル 1: ノード名が Child1 と Child2 の 2 つの子

<RootNode>
    <Parent>
        <Child1>Some text about child 1</Child1>
        <Child2>Some text about child 2</Child2>
    </Parent>
</RootNode>

サンプル 2: ノード名 Child4 Child5 および Child8 を持つ 3 つの子

<RootNode>
    <Parent>
        <Child4>Some text about child 4</Child4>
        <Child5>Some text about child 5</Child4>
        <Child8>Some text about child 8</Child8>
    </Parent>
</RootNode>

次のルールを使用して、子ノード内のテキスト (「子 n に関するテキスト」として表示されます) を検証する必要があります。

ルール: 子ノード (親の子) の内部テキスト長が 256 を超える場合、xml は無効です。

「親」ノードのいずれかの子に 256 文字を超える内部テキストがある場合、xml は無効であると見なすことを意味します。

これは XSD スキーマ検証を使用して可能ですか? これを検証するための .XSD ファイルの作成を手伝っていただけませんか?

前もって感謝します

4

2 に答える 2

1

子ノードの最大数が不明なため、これを自動的に検証することはできません。あなたはいくつかの手動検証を書くことによって得ることができるかもしれません。

このXMLの形式を変更できる場合は、設計が不適切であるため(特に、検証可能ではないため)、変更する必要があります。次のようなものを撮影する必要があります。

<RootNode>
    <Parent>
        <Child num="1">...</Child>
        <Child num="2">...</Child>
    </Parent>
</RootNode>

または、親が子だけでなく他のものを含むことができる場合は、子用のコンテナがあると便利です。

<RootNode>
    <Parent>
        <OtherStuff/>
        <Children>
            <Child num="1">...</Child>
            <Child num="2">...</Child>
        </Children>
        <MoreStuff/>
    </Parent>
</RootNode>
于 2010-11-24T12:19:10.907 に答える
0

前に述べたように、すべての要素名が事前にわからないという理由だけで、XSD でそれを解決することはできません。XSD 検証に完全に縛られていない場合は、この種の検証を正確に行うことができるSchematronを参照してください。

于 2010-11-24T13:03:44.817 に答える