Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 无法表示属性和子级之间的选择。近似_Xml_Relaxng - Fatal编程技术网

Xml 无法表示属性和子级之间的选择。近似

Xml 无法表示属性和子级之间的选择。近似,xml,relaxng,Xml,Relaxng,在我的项目中,我必须处理一些.rng文件,我遇到了一个错误“属性和子项之间的选择无法表示.approxing”,我无法解决这个问题。问题出现在这段代码中: <element name="maintenance-mode"> <choice> <group> <attribute name="on-install"> <dat

在我的项目中,我必须处理一些.rng文件,我遇到了一个错误“属性和子项之间的选择无法表示.approxing”,我无法解决这个问题。问题出现在这段代码中:

       <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>


我无法找到问题的根本原因

获取您报告的消息的唯一方法是尝试使用将您的RELAXNG模式(rng)转换为XML模式(xsd)。因此,这表明您正在使用
trang
(但在您的问题中没有说明这一点),或者您正在幕后使用
trang
,或者您使用的软件基于
trang


您得到的警告是因为RELAXNG能够表示元素和属性之间的选择。您对
维护模式的声明
允许它在安装时具有
属性
在删除时具有
属性
或同名的子元素,但不能同时具有属性和元素。XML模式无法对此约束进行建模,因此
trang
必须输出一个比Relax NG模式更通用(允许更多)的XML模式。结果架构允许元素具有属性和子元素。

不确定“绕过或删除此警告”是什么意思。如果您只是不想看到它,可以将
stderr
重定向到
/dev/null
。例如,
tranginout2>/dev/null
。(我不这样做,如果你运行Windows,你必须找到相应的方法。)如果你想首先阻止
trang
生成警告,那么你必须将Relax NG更改为:a)只允许
在安装/删除时作为属性,b)只允许它们作为元素,c)允许它们同时作为元素和属性。任何这些更改都会使警告消失。感谢@Louis的回复和建议。我绕过这个警告的意思是,有没有办法改变这个模式以防止警告。我前面评论的最后一部分(“如果你想阻止
trang
生成警告…”)给出了3种可能性。