Frage

Ich habe ein XML mit dem folgenden Format.

<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>

Jetzt möchte ich diesen XML gegen XSD validieren.

Das Problem ist jedoch, dass die Nummer und der Knotenname der Kinder nicht behoben sind.

Bitte überprüfen Sie die folgenden Beispiele meiner Datei

Probe 1: Zwei Kinder mit Knotennamen Child1 und Child2

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

Probe 2: Drei Kinder mit Knotennamen Child4 Child5 und 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>

Ich möchte, dass A den Text im untergeordneten Knoten (der als "ein Text über Kinder n" angezeigt wird) mit der folgenden Regel validieren

Regel: Der XML ist ungültig, wenn ein untergeordneter Knoten - (Kinder von Eltern) eine interne Textlänge mehr hat als 256.

Es bedeutet, dass der XML ungültig wird, wenn ein Kind des "Elternknotens" länger innerer Text hat als 256 Zeichen

Ist dies mit der XSD -Schema -Validierung möglich? Könnten Sie mir bitte helfen, eine .xsd -Datei zu erstellen, um dies zu validieren?

Danke im Voraus

War es hilfreich?

Lösung

Sie können das mit XSD nicht lösen, wie gesagt, nur weil Sie nicht wissen, welche Elementnamen im Voraus stehen werden. Wenn Sie nicht vollständig mit der XSD -Validierung verbunden sind, möchten Sie sich möglicherweise ansehen Schematron das kann genau diese Art von Validierung tun.

Andere Tipps

Es ist nicht möglich, dies automatisch zu validieren, da die maximale Anzahl von untergeordneten Knoten unbekannt ist. Möglicherweise können Sie eine manuelle Validierung schreiben.

Wenn Sie in der Lage sind, das Format dieses XML zu ändern, sollten Sie, weil es schlecht gestaltet ist (nicht zuletzt, weil es nicht validierbar ist ...). Sie sollten für etwas schießen wie:

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

Oder wenn der Elternteil andere Dinge sowie die Kinder enthalten kann, ist es nützlich, einen Behälter für die Kinder zu haben:

<RootNode>
    <Parent>
        <OtherStuff/>
        <Children>
            <Child num="1">...</Child>
            <Child num="2">...</Child>
        </Children>
        <MoreStuff/>
    </Parent>
</RootNode>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top