如果我的元素名必须看起来像这样:
<myElem>
<subElem_n/>
<subElem_n+1/>
<subElem_n+2/>
</myElem>其中'n‘= 0;
我该如何强制执行这是RelaxNG?
棘手的部分是动态生成的元素名称。
发布于 2012-02-15 16:59:54
关于XML示例文件的 :
您提供的XML格式不正确。XML名称中不允许使用+。See here,请看一下PrefixedName和UnprefixedName以获得精确的语法。
关于你的验证案例的 :
据我所知,您不能使用Relax NG在元素名称上添加动态生成的验证规则。
检查这种结构的惟一方法是使用ISO Schematron或即将发布的带有xs:assert元素的XML Schema1.1建议。
这两个解决方案使用XPath,您可以使用local-name()函数检查名称。
还有一件事
请注意,这种结构并不总是被认为是一种好的实践,你也可以考虑这样的结构:
<myElem>
<subElem rank="1"/>
<subElem rank="2"/>
<subElem rank="3"/>
...
</myElem>https://stackoverflow.com/questions/9247467
复制相似问题