Pregunta

Tengo un XML con el siguiente formato.

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

Ahora quiero validar este XML contra XSD.

Pero el problema es que el número y el nombre del nodo de los niños no se solucionan.

Verifique las siguientes muestras de mi archivo

Muestra 1: Dos niños con nombre de nodo Child1 y Child2

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

Muestra 2: Tres niños con nombre de nodo Child4 Child5 y 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>

Quiero que A valida el texto dentro del nodo infantil (que se muestra como "algún texto sobre el niño") con la siguiente regla

Regla: El XML no es válido si algún nodo secundario - (hijos de los padres) tiene una longitud de texto Iner más de 256.

Significa considerar el XML inválido si algún hijo del nodo "padre" tiene un texto interno más largo que 256 caracteres

¿Es esto posible usar la validación de esquema XSD? ¿Podría ayudarme a crear el archivo .xsd para validar esto?

Gracias por adelantado

¿Fue útil?

Solución

No puede resolver eso con XSD como se dijo antes simplemente porque no sabe cuáles serán todos los nombres de elementos de antemano. Si no está totalmente vinculado a la validación de XSD, es posible que desee echar un vistazo a Esquema que puede hacer exactamente este tipo de validación.

Otros consejos

No es posible validar esto automáticamente porque se desconoce el número máximo de nodos infantiles. Es posible que pueda obtener escribiendo alguna validación manual.

Si puede cambiar el formato de este XML, debería, porque está mal diseñado (sobre todo porque no es validable ...). Deberías disparar para algo más como:

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

O, si el padre puede contener otras cosas y los niños, es útil tener un contenedor para los niños:

<RootNode>
    <Parent>
        <OtherStuff/>
        <Children>
            <Child num="1">...</Child>
            <Child num="2">...</Child>
        </Children>
        <MoreStuff/>
    </Parent>
</RootNode>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top