Вопрос

У меня есть 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

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

Пример 2:Три дочерних узла с именем узла Child4, Child5 и 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>

Я хочу, чтобы a проверял текст внутри дочернего узла (который отображается как "Некоторый текст о дочернем n") со следующим правилом

Правило:XML недопустим, если какой-либо дочерний узел (дочерние элементы родительского узла) имеет длину текста более 256.

Это означает, что считайте xml недопустимым, если какой-либо дочерний элемент "Родительского" узла имеет внутренний текст длиной более 256 символов

Возможно ли это с помощью проверки схемы 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