【问题标题】:XML validation in xml file with Eclipse使用 Eclipse 在 xml 文件中进行 XML 验证
【发布时间】:2012-07-31 06:11:14
【问题描述】:

我在验证我的 xml 文件时遇到了一些问题。我收到错误消息“cvc-elt.1:找不到元素 'xsi:settings' 的声明。”在我的 xml 文件中。对我来说,我的代码是正确的,但显然它不应该是..

我的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsi:settings  xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="http://www.w3.org/2001/XMLSchema/Application.xsd">
    <info>
            <Version>1.0</Version>
            <Release_date>2012-07-27</Release_date>
    </info>

    <config>
        <Betriebssystem>Windows</Betriebssystem>
        <Wildcard>%</Wildcard>
        <Errormessages>
            <View1>
                <Message1>Der neue Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message1>
                <Message2>Dem Mitarbeiter muss eine Personalnummer zugewiesen werden</Message2>
            </View1>
            <View3>
                <Message1>Sie muessen mindestens ein Kriterienfeld ausfuellen"</Message1>
                <Message2>Der Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message2>
                <Message3>Sie muessen erst einen Mitarbeiter laden</Message3>
                <Message4>Problem beim Loeschen des Mitarbeiters. Ist der Mitarbeiter in der Datenbank vorhanden?</Message4>
            </View3>
        </Errormessages>
    </config>
</xsi:settings>

我的 xsd 文件(没有错误):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.w3.org/2001/XMLSchema" >

 <xs:element name="settings">
 <xs:complexType>
 <xs:sequence>

 <xs:element name="info">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:float" name="Version"/>
        <xs:element type="xs:date" name="Release_date"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="config">
    <xs:complexType>
      <xs:sequence>
        <xs:element type="xs:string" name="Betriebssystem"/>
        <xs:element type="xs:string" name="Wildcard"/>
        <xs:element name="Errormessages">
          <xs:complexType>
            <xs:sequence>

              <xs:element name="View1">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Message1"/>
                    <xs:element type="xs:string" name="Message2"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element name="View3">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:string" name="Message1"/>
                    <xs:element type="xs:string" name="Message2"/>
                    <xs:element type="xs:string" name="Message3"/>
                    <xs:element type="xs:string" name="Message4"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>


</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

提前感谢您的帮助。

哈拉尔

【问题讨论】:

    标签: xml xsd jaxb xml-validation xsd-validation


    【解决方案1】:

    您的命名空间有误。为了继续,您的更正样本如下所示。首先,您必须引用 XML Schema Instance 命名空间(下面使用 xst 前缀)并改用 schemaLocation(因为您有一个目标命名空间)。

    <?xml version="1.0" encoding="UTF-8"?> 
    <xsi:settings xmlns:xsi="http://www.w3.org/2001/XMLSchema" xmlns:xst="http://www.w3.org/2001/XMLSchema-instance" xst:schemaLocation="http://www.w3.org/2001/XMLSchema/Application.xsd"> 
        <info> 
            <Version>1.0</Version> 
            <Release_date>2012-07-27</Release_date> 
        </info> 
        <config> 
            <Betriebssystem>Windows</Betriebssystem> 
            <Wildcard>%</Wildcard> 
            <Errormessages> 
                <View1> 
                    <Message1>Der neue Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message1> 
                    <Message2>Dem Mitarbeiter muss eine Personalnummer zugewiesen werden</Message2> 
                </View1> 
                <View3> 
                    <Message1>Sie muessen mindestens ein Kriterienfeld ausfuellen"</Message1> 
                    <Message2>Der Mitarbeiter braucht ein Geburtsdatum der Form JJJJ-MM-TT und eine nicht vorhandene Personalnummer</Message2> 
                    <Message3>Sie muessen erst einen Mitarbeiter laden</Message3> 
                    <Message4>Problem beim Loeschen des Mitarbeiters. Ist der Mitarbeiter in der Datenbank vorhanden?</Message4> 
                </View3> 
            </Errormessages> 
        </config> 
    </xsi:settings>  
    

    我正在展示另一个常见使用前缀的示例。 xsi 用于 XML Schema 实例。尽管如此,它是任意的,如上所示,它也可以与其他东西一起使用。

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
    <settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.w3.org/2001/XMLSchema">
        <info xmlns="">
            <Version>1</Version>
            <Release_date>1900-01-01</Release_date>
        </info>
        <config xmlns="">
            <Betriebssystem>Betriebssystem1</Betriebssystem>
            <Wildcard>Wildcard1</Wildcard>
            <Errormessages>
                <View1>
                    <Message1>Message11</Message1>
                    <Message2>Message21</Message2>
                </View1>
                <View3>
                    <Message1>Message11</Message1>
                    <Message2>Message21</Message2>
                    <Message3>Message31</Message3>
                    <Message4>Message41</Message4>
                </View3>
            </Errormessages>
        </config>
    </settings>
    

    我不能不评论这样一个事实,一般来说,针对 W3C XML Schema (XSD) uri (http://www.w3.org/2001/XMLSchema) 或XML 模式实例 (XSI) uri (http://www.w3.org/2001/XMLSchema-instance)。

    【讨论】:

    • 非常感谢@petru-gardea 的清晰解释。有用。但是,我得到一个“s4s-elt-schema-ns:元素“元素”的命名空间必须来自模式命名空间,“w3.org/2001/XMLSchema'”。如果我尝试更改命名空间的名称,则会出错..
    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 2014-08-28
    • 2015-08-25
    • 2014-12-05
    • 2012-10-23
    • 1970-01-01
    • 2011-11-21
    • 2021-08-01
    相关资源
    最近更新 更多