问题 XSD不允许我在所有指标内部无限制


我试图使var1中的无序变量列表出现两次,var2出现无限次(我的项目中的用例不同)。该元素不允许我使用maxOccurs。

我正在尝试做什么工作?

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="testcomment">
    <xs:complexType>
      <xs:all>
        <xs:element name="var1" type="xs:string" maxOccurs="2" />
        <xs:element name="var2" type="xs:integer" maxOccurs="unbounded" />
      </xs:all>
    </xs:complexType>
  </xs:element>
</xs:schema>

4294
2018-03-02 10:15


起源

stackoverflow.com/a/3827606/637142 - Tono Nam


答案:


您正在尝试做的事情听起来像列表中元素的类型可能是不明确的,没有预读,在这种情况下,由于它可以描述的语言类别,在XSD中没有解决方法。

你可以发布你的XSD的相关部分吗?


更新:不,你不能用XSD做到这一点。关于你可以放入什么的规则 <xs:all> 例如,列出了元素 这里。此约束具有名称 - UPA或Unique Particle Attribution约束。这与模糊性有关,微软网站对存在的原因有很好的解释 这里

您可以更改文档布局以消除对此类声明的需要,或者查看更具表现力的模式语言 RelaxNG


1
2018-03-02 10:18



如何在stackoverflow中发布代码..我对此很新 - Vignesh
几分钟前你做到了。将其回发,突出显示它,然后单击编辑器上看起来像二进制文件的小按钮(10101),它将缩进您的XML,这将使其正确显示。 - brabster
是的..谢谢..我发布了代码.. :) - Vignesh


我遇到了同样的问题并且有一个解决方案!看看这个答案:

https://stackoverflow.com/a/3827606/637142


8
2018-05-10 15:14





简单易用<xs:choice maxOccurs="unbounded"> 代替 <xs:all>。这将产生您正在寻找的效果。


3
2018-03-01 02:05