S4s-att-not-allowed: 属性 'targetNameSpace' 不能出现在元素 'schema' 验证错误中
S4s-att-not-allowed: Attribute 'targetNameSpace' Cannot Appear In Element 'schema' validation error
所以我在尝试验证我的 XML
时收到此错误
"S4s-att-not-allowed: Attribute 'targetNameSpace' Cannot Appear In Element 'schema'."
我有一个 commonTypes.xsd,其中包含我需要关联到不同元素的所有规则。这是 commonTypes.xsd 文件:
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema
targetNamespace="common"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- Password Restrictions -->
<xs:simpleType name="passWord">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z0-9_]{6,12}" />
</xs:restriction>
</xs:simpleType>
<!-- User Name Restrictions -->
<xs:simpleType name="userName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]{6,12}" />
</xs:restriction>
</xs:simpleType>
<!-- Name Retrictions -->
<xs:simpleType name="firstName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="middleName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lastName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<!-- Email Restrictions -->
<xs:simpleType name="email">
<xs:restriction base="xu:string">
<xs:pattern value="[^@]+@[^\.]+\..+" />
</xs:restriction>
</xs:simpleType>
<!-- Gender -->
<xs:simpleType name="gender">
<xs:restriction base="xu:string">
<xs:pattern value="male|female" />
</xs:restriction>
</xs:simpleType>
<!-- Number Restrictions -->
<xs:simpleType name="number">
<xs:restriction base="xu:integer">
<xs:pattern value="^[2-9]\d{2}-\d{3}-\d{4}$" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
我正在尝试验证的文件及其架构如下:
user.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<user xmlns="localhost"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>
<!-- I will use xs:schemalocation="/user.xsd" as the location of the schema -->
<userId></userId>
<loginInfo>
<userName></userName>
<passWord></passWord>
</loginInfo>
<contactInfo>
<firstName></firstName>
<middleName></middleName>
<lastName></lastName>
</contactInfo>
<profile>
<email></email>
<dateOfBirth></dateOfBirth>
<gender></gender>
<profilePhoto>
</profilePhoto>
<homePhone></homePhone>
<cellPhone></cellPhone>
</profile>
<createdDate></createdDate>
</user>
和 user.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:cmn="commonTypes.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNameSpace="user">
<xs:import namespace="commonTypes" schemaLocation="commonTypes.xsd" />
<!-- Main Users Schema -->
<xs:element name="user">
<xs:complexType>
<xs:sequence>
<!-- userID -->
<xs:element maxOccurs="1" name="userID" type="cmn:ID"/>
<!-- login Info -->
<xs:element name="loginInfo">
<xs:complexType>
<xs:sequence>
<!-- Username and Password -->
<xs:element name="userName" type="cmn:userName" />
<xs:element name="passWord" type="cmn:passWord" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Name -->
<xs:element name="contactInfo">
<xs:complexType>
<xs:sequence>
<!-- Names -->
<xs:element name="firstName" type="cmn:firstName" />
<xs:element name="middleName" type="cmn:middleName" />
<xs:element name="lastName" type="cmn:lastName" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Profile -->
<xs:element name="profile">
<xs:complexType name="profile">
<xs:sequence>
<!-- Profile -->
<xs:element name="email" type="cmn:email" />
<xs:element name="dateOfBirth" type="cmn:date" />
<xs:element name="gender" type="cmn:gender" />
<xs:element name="profilePhoto" type="cmn:image" />
<xs:element name="homePhone" type="cmn:number" />
<xs:element name="cellPhone" type="cmn:number" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createdDate" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
所以我的问题是,当我看到使用它的文档时,为什么我不能在此架构中使用 targetNameSpace
?
我认为这个问题源于我试图导入-然后使用与 commonTypes.xsd 文件关联的规则。
我是 XML 的新手,它让我大吃一惊。欢迎任何其他建议。谢谢!
正确的拼写是 targetNamespace
- 注意大小写。
所以我在尝试验证我的 XML
时收到此错误"S4s-att-not-allowed: Attribute 'targetNameSpace' Cannot Appear In Element 'schema'."
我有一个 commonTypes.xsd,其中包含我需要关联到不同元素的所有规则。这是 commonTypes.xsd 文件:
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema
targetNamespace="common"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- Password Restrictions -->
<xs:simpleType name="passWord">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z0-9_]{6,12}" />
</xs:restriction>
</xs:simpleType>
<!-- User Name Restrictions -->
<xs:simpleType name="userName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]{6,12}" />
</xs:restriction>
</xs:simpleType>
<!-- Name Retrictions -->
<xs:simpleType name="firstName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="middleName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="lastName">
<xs:restriction base="xu:string">
<xs:pattern value="[A-Za-z]" />
</xs:restriction>
</xs:simpleType>
<!-- Email Restrictions -->
<xs:simpleType name="email">
<xs:restriction base="xu:string">
<xs:pattern value="[^@]+@[^\.]+\..+" />
</xs:restriction>
</xs:simpleType>
<!-- Gender -->
<xs:simpleType name="gender">
<xs:restriction base="xu:string">
<xs:pattern value="male|female" />
</xs:restriction>
</xs:simpleType>
<!-- Number Restrictions -->
<xs:simpleType name="number">
<xs:restriction base="xu:integer">
<xs:pattern value="^[2-9]\d{2}-\d{3}-\d{4}$" />
</xs:restriction>
</xs:simpleType>
</xs:schema>
我正在尝试验证的文件及其架构如下:
user.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<user xmlns="localhost"
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
>
<!-- I will use xs:schemalocation="/user.xsd" as the location of the schema -->
<userId></userId>
<loginInfo>
<userName></userName>
<passWord></passWord>
</loginInfo>
<contactInfo>
<firstName></firstName>
<middleName></middleName>
<lastName></lastName>
</contactInfo>
<profile>
<email></email>
<dateOfBirth></dateOfBirth>
<gender></gender>
<profilePhoto>
</profilePhoto>
<homePhone></homePhone>
<cellPhone></cellPhone>
</profile>
<createdDate></createdDate>
</user>
和 user.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:cmn="commonTypes.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNameSpace="user">
<xs:import namespace="commonTypes" schemaLocation="commonTypes.xsd" />
<!-- Main Users Schema -->
<xs:element name="user">
<xs:complexType>
<xs:sequence>
<!-- userID -->
<xs:element maxOccurs="1" name="userID" type="cmn:ID"/>
<!-- login Info -->
<xs:element name="loginInfo">
<xs:complexType>
<xs:sequence>
<!-- Username and Password -->
<xs:element name="userName" type="cmn:userName" />
<xs:element name="passWord" type="cmn:passWord" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Name -->
<xs:element name="contactInfo">
<xs:complexType>
<xs:sequence>
<!-- Names -->
<xs:element name="firstName" type="cmn:firstName" />
<xs:element name="middleName" type="cmn:middleName" />
<xs:element name="lastName" type="cmn:lastName" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Profile -->
<xs:element name="profile">
<xs:complexType name="profile">
<xs:sequence>
<!-- Profile -->
<xs:element name="email" type="cmn:email" />
<xs:element name="dateOfBirth" type="cmn:date" />
<xs:element name="gender" type="cmn:gender" />
<xs:element name="profilePhoto" type="cmn:image" />
<xs:element name="homePhone" type="cmn:number" />
<xs:element name="cellPhone" type="cmn:number" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createdDate" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
所以我的问题是,当我看到使用它的文档时,为什么我不能在此架构中使用 targetNameSpace
?
我认为这个问题源于我试图导入-然后使用与 commonTypes.xsd 文件关联的规则。
我是 XML 的新手,它让我大吃一惊。欢迎任何其他建议。谢谢!
正确的拼写是 targetNamespace
- 注意大小写。