在我必须处理一些.rng文件的项目中,我得到了一个错误:“属性和子属性之间的选择不能表示.逼近”,这是我无法解决的。这个问题出现在这段代码中:
<element name="maintenance-mode">
<choice>
<group>
<attribute name="on-install">
<data type="boolean"/>
</attribute>
<attribute name="on-remove">
<data type="boolean"/>
</attribute>
</group>
<group>
<optional>
<attribute name="on-install">
<data type="boolean"/>
</attribute>
</optional>
<optional>
<attribute name="on-remove">
<data type="boolean"/>
</attribute>
</optional>
<data type="boolean"/>
</group>
</choice>
</element>我找不到问题的根源。
发布于 2014-05-27 10:55:13
获得您报告的消息的唯一方法是,如果我尝试使用trang将您的Relax模式(rng)转换为XML (xsd)。因此,这意味着您使用的是trang (但在您的问题中不告诉您),或者您使用的是在幕后使用trang的东西,或者您使用的软件是基于trang的。
您收到的警告是因为Relax能够表示元素和属性之间的选择。您的maintenance-mode声明允许它拥有属性on-install和on-remove或同名的子元素,但不能同时拥有属性和元素。XML无法对此约束进行建模,因此trang必须输出比Relax模式更通用(允许更多)的XML。生成的架构允许元素具有属性和(子元素)。
https://stackoverflow.com/questions/23883208
复制相似问题