我尝试验证xml文件aganist两个xsd文件,但每次验证时都会出错。我使用“xml复制编辑器”进行验证。我不知道,如果这是我的xml / xsd或程序的问题(可能无法验证aganist多个xsd!?)。有人可以帮忙吗?
我尝试按照page上的示例进行操作。
XML的文件:
<?xml version="1.0" encoding="UTF-8"?>
<PostAdress xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\XML\XSD1.xsd">
<Meta>
<Name>Hallo</Name>
</Meta>
</PostAdress>
XSD1.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xs2="http://aa.bb.cc">
<xs:import namespace="http://aa.bb.cc" schemaLocation="D:\XML\XSD0.xsd" />
<xs:element name="PostAdress">
<xs:complexType>
<xs:sequence>
<xs:element name="Meta" type="xs2:Adress" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XSD0.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://aa.bb.cc">
<xs:element name="Adress">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
PS:我收到错误:“第7行出错:第96列:找不到”http://aa.bb.cc:Adress“。”我认为该程序意味着XSD1.xsd中的第7行。
PS2:我还尝试运行一个小的VB.net-App进行验证。我得到几乎相同的错误消息。所以,我认为这些文件存在问题。
答案 0 :(得分:0)
我认为在导入其他 xsd方案时应该使用文件uri。 尝试替换行
<xs:import namespace="http://aa.bb.cc" schemaLocation="D:\XML\XSD0.xsd" />
这一个
<xs:import namespace="http://aa.bb.cc" schemaLocation="file:D:/XML/XSD0.xsd" />
在您的XSD1.xsd计划中
答案 1 :(得分:0)
我也用notepad ++尝试了它,结果相同。所以,我认为这可能不是两个xsd文件的问题。所以我将所有nesseary内容放在一个xsd和....相同的错误。之后,我看起来更接近我的xsd文件,我发现了错误。我有这个结构:
Instance.xml&gt;&gt; XSD1.xsd&gt;&gt; XSD0.xsd 用法&#34; PostAdress&#34; &GT;&GT; &#34; PostAdress&#34;的定义通过使用&#34; Adress&#34;作为类型&gt;&gt; &#34;地址&#34;
的定义错误的界限是&#34; Adress&#34;的定义。我写了......
<xs:element name="Adress">
<xs:complexType>
...
</xs:complexType>
</xs:element>
但正确的是:
<xs:complexType name="Adress">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
所以我的文件看起来像:
XSD1.xsd:
<xs:element name="PostAdress">
<xs:complexType>
<xs:sequence>
<xs:element name="Meta" type="andererNs:Adress" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
和XSD0.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://aa.bb.cc">
<xs:complexType name="Adress">
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
最后,可以使用程序&#34; xml copy editor&#34;使用多个xsd文件进行验证。 (或记事本++)。此外,如果文件位于同一文件夹中,相对文件名就足够了。
感谢帮助者。