xsd:attribute应该去哪里?
Where should xsd:attribute go?
我被要求建立一个商业数据库,这是我的第一个虚构的 "company." 我已经得到了用 XML 验证的模式,但被要求输入一个 ORDER/RANKING XML 文件中的至少一家公司。但是我尝试这样做,我无法使其有效(即使提供了正确的行)。
这是我的 XML 文件(您可以看到我输入了 ranking="3",这是我无法写入架构的行)。
<?xml version="1.0"?>
<CompanyList>
<Company ranking="3">
<CompanyName>CasesWorldwide</CompanyName>
<CompanyID>00001</CompanyID>
<City>Edmonton</City>
<Province>Alberta</Province>
<ContactName>
<LastName>Soliman</LastName>
<FirstName>Ahmed</FirstName>
<PhoneNumber>646959891</PhoneNumber>
<ContactCompanyID>00001</ContactCompanyID>
</ContactName>
<NumberOfEmployees>4000</NumberOfEmployees>
</Company>
</CompanyList>
这是架构(我尝试的行在 "Company" 旁边):
<?xml version="1.0"?>
<!-- XSD schema for CS Assignment #3.xml -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CompanyList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Company"> <xsd:attribute name="ranking” type=“xsd:string” use=“optional”/>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CompanyName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CompanyID" type="xsd:integer"/>
<xsd:element name="City" type="xsd:string" minOccurs="0"/>
<xsd:element name="Province" type="xsd:string" minOccurs="0"/>
<xsd:element name="ContactName" minOccurs = "1" maxOccurs="5">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LastName" type="xsd:string" minOccurs="1"/>
<xsd:element name="FirstName" type="xsd:string" minOccurs="1"/>
<xsd:element name="PhoneNumber" type="xsd:integer" minOccurs="1"/>
<xsd:element name="ContactCompanyID" type="xsd:integer" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumberOfEmployees" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
一般来说,xsd:attribute
可以出现:
- 在 XSD 的顶层(在
xsd:schema
内)。
- 在
xsd:complexType
内(完整或参考)。
- 在
xs:attributeGroup
内(完整或参考)。
你们很亲近;你只需要两个更正:
- 将您的
xsd:attribute
放在 xsd:sequence
之后 xsd:complexType
。
- 将
xsd:attribute
中的智能引号更改为常规引号。
一共:
<?xml version="1.0"?>
<!-- XSD schema for CS Assignment #3.xml -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CompanyList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Company">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CompanyName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CompanyID" type="xsd:integer"/>
<xsd:element name="City" type="xsd:string" minOccurs="0"/>
<xsd:element name="Province" type="xsd:string" minOccurs="0"/>
<xsd:element name="ContactName" minOccurs = "1" maxOccurs="5">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LastName" type="xsd:string"
minOccurs="1"/>
<xsd:element name="FirstName" type="xsd:string"
minOccurs="1"/>
<xsd:element name="PhoneNumber" type="xsd:integer"
minOccurs="1"/>
<xsd:element name="ContactCompanyID" type="xsd:integer"
minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumberOfEmployees" type="xsd:integer"
minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="ranking" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
此 XSD 将成功验证您的 XML。
我被要求建立一个商业数据库,这是我的第一个虚构的 "company." 我已经得到了用 XML 验证的模式,但被要求输入一个 ORDER/RANKING XML 文件中的至少一家公司。但是我尝试这样做,我无法使其有效(即使提供了正确的行)。
这是我的 XML 文件(您可以看到我输入了 ranking="3",这是我无法写入架构的行)。
<?xml version="1.0"?>
<CompanyList>
<Company ranking="3">
<CompanyName>CasesWorldwide</CompanyName>
<CompanyID>00001</CompanyID>
<City>Edmonton</City>
<Province>Alberta</Province>
<ContactName>
<LastName>Soliman</LastName>
<FirstName>Ahmed</FirstName>
<PhoneNumber>646959891</PhoneNumber>
<ContactCompanyID>00001</ContactCompanyID>
</ContactName>
<NumberOfEmployees>4000</NumberOfEmployees>
</Company>
</CompanyList>
这是架构(我尝试的行在 "Company" 旁边):
<?xml version="1.0"?>
<!-- XSD schema for CS Assignment #3.xml -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CompanyList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Company"> <xsd:attribute name="ranking” type=“xsd:string” use=“optional”/>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CompanyName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CompanyID" type="xsd:integer"/>
<xsd:element name="City" type="xsd:string" minOccurs="0"/>
<xsd:element name="Province" type="xsd:string" minOccurs="0"/>
<xsd:element name="ContactName" minOccurs = "1" maxOccurs="5">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LastName" type="xsd:string" minOccurs="1"/>
<xsd:element name="FirstName" type="xsd:string" minOccurs="1"/>
<xsd:element name="PhoneNumber" type="xsd:integer" minOccurs="1"/>
<xsd:element name="ContactCompanyID" type="xsd:integer" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumberOfEmployees" type="xsd:integer" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
一般来说,xsd:attribute
可以出现:
- 在 XSD 的顶层(在
xsd:schema
内)。 - 在
xsd:complexType
内(完整或参考)。 - 在
xs:attributeGroup
内(完整或参考)。
你们很亲近;你只需要两个更正:
- 将您的
xsd:attribute
放在xsd:sequence
之后xsd:complexType
。 - 将
xsd:attribute
中的智能引号更改为常规引号。
一共:
<?xml version="1.0"?>
<!-- XSD schema for CS Assignment #3.xml -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="CompanyList">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Company">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="CompanyName">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
<xsd:pattern value=".*[^\s].*" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CompanyID" type="xsd:integer"/>
<xsd:element name="City" type="xsd:string" minOccurs="0"/>
<xsd:element name="Province" type="xsd:string" minOccurs="0"/>
<xsd:element name="ContactName" minOccurs = "1" maxOccurs="5">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="LastName" type="xsd:string"
minOccurs="1"/>
<xsd:element name="FirstName" type="xsd:string"
minOccurs="1"/>
<xsd:element name="PhoneNumber" type="xsd:integer"
minOccurs="1"/>
<xsd:element name="ContactCompanyID" type="xsd:integer"
minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NumberOfEmployees" type="xsd:integer"
minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="ranking" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
此 XSD 将成功验证您的 XML。