因此我写了一个company.xml:
<?xml version="1.0" encoding="UTF-8"?>
<company xmlns="urn:company.Namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="urn:company.Namespace companyxsd.xsd">
<companyname>ABC company</companyname>
<address>xyz street, India.</address>
<department>
<dname>Marketing</dname>
<deptphoneno>9876543210</deptphoneno>
<deptfaxno>0442456879</deptfaxno>
<deptemail>marketing@abc.com</deptemail>
<employee>
<empid>101</empid>
<ename>Rishie</ename>
<emailid>rishie@abc.com</emailid>
<phoneno>9876543211</phoneno>
</employee>
<contractemployee>
<name>Ravi</name>
<phoneno>9874563214</phoneno>
</contractemployee>
</department>
</company>
和我的公司xsd.xsd如下:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:company.Namespace" xmlns="urn:company.Namespace">
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<xs:element name="companyname" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="department">
<xs:complexType>
<xs:sequence>
<xs:element name="dname" type="xs:string"/>
<xs:element name="deptphoneno" type="xs:integer"/>
<xs:element name="deptfaxno" type="xs:integer"/>
<xs:element name="deptemail" type="xs:string"/>
<xs:element name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="empid" type="xs:integer"/>
<xs:element name="ename" type="xs:string"/>
<xs:element name="emailid" type="xs:string"/>
<xs:element name="phoneno" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contractemployee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="phoneno" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我不确定我的xml是否代表ER图。如果没有,请帮助我使用正确的xml模板。
因为我是初学者。我对我写过的XSd有疑问。 “:(
对于上述情况,我不断收到错误
Exception: cvc-complex-type.2.4.a: Invalid content was found starting with eleme
nt 'employee'. One of '{contractemployee}' is expected.
新错误:
Exception: cvc-elt.1.a: Cannot find the declaration of element 'company'.
在这里帮助我好友!
答案 0 :(得分:1)
我也有两个相同的错误。该错误不需要对xml
和xsd
文件的链接部分进行任何更改。实际上,scorm编辑器可能非常棘手。
预计{employee,contractemployee}之一
此错误要求元素合同employee和employee中具有某些属性,例如minOccurs和MaxOccurs属性。
我已经发布了xml
和xsd
的适当代码,这些代码已在scorm编辑器中成功运行。编码愉快!
XML:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<companyname>company name</companyname>
<address>address</address>
<department>
<dname>dname</dname>
<deptphoneno>22238500</deptphoneno>
<deptfaxno>123456789</deptfaxno>
<deptemail>email@email</deptemail>
<employee>
<empid>123</empid>
<ename>ename</ename>
<emailid>email@email</emailid>
<phoneno>9444872829</phoneno>
</employee>
<contractemployee>
<name>name</name>
<phoneno>9445815259</phoneno>
</contractemployee>
</department>
</company>
XSD:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="company">
<xs:complexType>
<xs:sequence>
<xs:element name="companyname" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element maxOccurs="unbounded" name="department">
<xs:complexType>
<xs:sequence>
<xs:element name="dname" type="xs:string"/>
<xs:element name="deptphoneno" type="xs:string"/>
<xs:element name="deptfaxno" type="xs:integer"/>
<xs:element name="deptemail" type="xs:string"/>
<xs:element maxOccurs="unbounded" minOccurs="1" name="employee">
<xs:complexType>
<xs:sequence>
<xs:element name="empid" type="xs:integer"/>
<xs:element name="ename" type="xs:string"/>
<xs:element name="emailid" type="xs:string"/>
<xs:element name="phoneno" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element maxOccurs="unbounded" minOccurs="0" name="contractemployee">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="phoneno" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 1 :(得分:0)
您发布的XML + XSD不会创建您提到的错误,XML实际上并不是有效的xml。但是,您非常接近,XML和XSD中的命名空间声明存在问题。
在XSD中,您需要设置目标命名空间,如下所示:
?- check_prereq([course('ITCE418'), course('ACC112')],20135639).
true ;
false.
现在要确保文档验证,xml中的命名空间必须与放在XSD中的命名空间相同。在XML中,名称空间声明的格式也是无效的。如下:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="company.namespace">
请记住,这只是一个名称空间,它不是对xsd文件的实际引用,很多名称空间看起来像URI,但大多数都不是实际的功能URI。
我用一个例子“company.namespace”替换名称空间只是为了让它更清晰。使用文件名可能会创建他们实际指向文件的建议。
在XML中使用schemaLocation来标识相应的XSD文件时,需要添加名称空间/前缀声明。目前,xml解析器无法识别xs前缀,因为它在XML文件中是未知的。您可以按如下方式解决此问题:
<company xmlns="company.namespace">
以下是生成的文件: XML
<company xmlns="urn:company.Namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="urn:company.Namespace companyxsd.xsd">
XSD
<?xml version="1.0" encoding="UTF-8"?>
<company xmlns="urn:company.Namespace"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:schemaLocation="urn:company.Namespace companyxsd.xsd"> <companyname>ABC company</companyname>
<address>xyz street, India.</address>
<department>
<dname>Marketing</dname>
<deptphoneno>9876543210</deptphoneno>
<deptfaxno>0442456879</deptfaxno>
<deptemail>marketing@abc.com</deptemail>
<employee>
<empid>101</empid>
<ename>Rishie</ename>
<emailid>rishie@abc.com</emailid>
<phoneno>9876543211</phoneno>
</employee>
<contractemployee>
<name>Ravi</name>
<phoneno>9874563214</phoneno>
</contractemployee>
</department>
</company>