質問

次の形式の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:ノード名を持つ3人の子供Child4Child5、およびChild8

<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についてのテキスト」として表示されます)内のテキストを検証したい

ルール:XMLは、子ノード(親の子供)が256以上のテキストの長さを持っている場合、無効です。

「親」ノードの子が内側のテキストが長く256文字を持っている場合、XMLが無効になることを考慮してください

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

前もって感謝します

役に立ちましたか?

解決

前述のように、すべての要素名が事前に何をするかわからないという理由だけで、XSDでそれを解決することはできません。 XSD検証に完全に縛られていない場合は、 スキーマトロン これはまさにこの種の検証を行うことができます。

他のヒント

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

この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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top