题
我有一个带有以下格式的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>
不隶属于 StackOverflow