我有一个带有以下格式的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>

现在,我想对XSD验证此XML。

但是问题是儿童的数字和节点名称未固定。

请检查我文件的以下样本

样本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的某些文本”),并具有以下规则

规则:如果任何子节点 - (父母的子女)的文本长度比256多,则XML无效。

这意味着如果“父”节点的任何孩子的内部文本长于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