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 - 注意大小写。