【问题标题】:How do I add namespaces to an XSD?如何将命名空间添加到 XSD?
【发布时间】:2013-05-09 21:37:10
【问题描述】:

以下是我的 XML 及其关联的 XSD:

XML

<?xml version="1.0" encoding="UTF-8" ?>
<!-- <!DOCTYPE people SYSTEM "validator.dtd"> -->

<people xmlns:xsi="http://www.w3c.org/200/10/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="student.xsd">
    <student>
        <name>John</name>
        <course>Computer Technology</course>
        <semester>6</semester>
        <scheme>E</scheme>
    </student>

    <student>
        <name>Foo</name>
        <course>Industrial Electronics</course>
        <semester>6</semester>
        <scheme>E</scheme>
    </student>
</people>  

XSD

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="people">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="student" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string" />
                            <xs:element name="course" type="xs:string" />
                            <xs:element name="semester">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="1" />
                                        <xs:enumeration value="2" />
                                        <xs:enumeration value="3" />
                                        <xs:enumeration value="4" />
                                        <xs:enumeration value="5" />
                                        <xs:enumeration value="6" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="scheme">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value = "E|C" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>  

我现在要做的是添加一个命名空间——假设学生所属的大学——比如卡内基梅隆大学。

我知道如何将名称空间添加到 XML 文档。那将如下:
xmlns:cmu = "http://www.carnegiemellon.com/ns/students"
并且在 XML 中会有相关的前缀。

我想知道的是:如何使用 XSD 验证带有前缀的 XML?

【问题讨论】:

    标签: xml namespaces xsd xsd-validation


    【解决方案1】:

    我的回答 here 应该会回答您的问题...不过,您必须考虑以下几点:

    人员和学生是否在同一个命名空间中?如果是,那么只需添加一个带有您提到的 uri 的 targetNamespace。否则,您必须添加一个 xsd:import,并使用您想要定义学生的 targetNamespace 创建一个新的 XSD。

    【讨论】:

      猜你喜欢
      • 2019-11-17
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多