【问题标题】:Cannot resolve the name X to an element declaration component in a recursive xml schema无法将名称 X 解析为递归 xml 架构中的元素声明组件
【发布时间】:2014-06-26 08:32:30
【问题描述】:

我刚刚开始使用 XML 模式。我正在创建一个简单的模式,但我不明白为什么在尝试实现一个简单的递归元素时会出错。我敢肯定这完全是微不足道的。

这里我收到以下错误:E [Xerces] src-resolve:无法将名称“节点”解析为(n)“元素声明”组件。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="root">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="node">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element ref="node" />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

在这里,没有root 元素,我没有收到错误...

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="node">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="node" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

我完全被迷住了 0_0。我怎样才能做到这一点?

【问题讨论】:

    标签: xml xsd schema


    【解决方案1】:

    如果你想引用一个元素,它必须被声明为顶级。您可以同时使用 rootnode 引用相同的元素:

    <xs:element ref="node" />
    

    这就是您的第二个示例有效的原因。您可以使用此架构:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    
        <xs:element name="node">
            <xs:complexType>
                <xs:sequence>
                    <xs:element ref="node" />
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    
        <xs:element name="root">
           <xs:complexType>
               <xs:sequence>
                   <xs:element ref="node" />
               </xs:sequence>
           </xs:complexType>
       </xs:element>
    </xs:schema>
    

    【讨论】:

    • 谢谢,现在我明白了!我发现了我自己的方式,但没有发现原因;)
    【解决方案2】:

    这似乎解决了我的问题。

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
       <xs:element name="root">
           <xs:complexType>
               <xs:sequence>
                   <xs:element name="node_" type="nodeType"/>
               </xs:sequence>
           </xs:complexType>
       </xs:element>
    
        <xs:complexType name="nodeType">
            <xs:sequence>
                <xs:element name="node" type="nodeType"></xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:schema>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多