我在验证我的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>
提前感谢您的帮助。
哈拉尔德
答案 0 :(得分: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 Schema Instance(XSI)uri(http://www.w3.org/2001/XMLSchema-instance)。