質問
次の形式の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>
所属していません StackOverflow