需要XSD架构中不同命名空间的属性

时间:2012-01-17 04:40:15

标签: xsd xsd.exe

我有一个描述架构的XSD文件。

架构中的根元素需要一个在另一个xsd(我有url for)中定义的属性。具体来说,我希望文档的根元素需要属性:

xsi:noNamespaceSchemaLocation="schema/SomeSchema.xs"

,其中

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

我如何在文档xsd中描述这个?

1 个答案:

答案 0 :(得分:1)

xsd.exe基于XSD 1.0规范;该规范不适用于对xsi:attributes的引用。

但是,这应该适用于XSD 1.1处理器:

<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com)-->
<xsd:schema xmlns="urn:tempuri-org:XSD" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:tempuri-org:XSD" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="root">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute ref="xsi:noNamespaceSchemaLocation" use="required"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

您无法使其在XSD 1.0中使用XSI命名空间中的属性的原因是因为它们是"special"XSD 1.1放松了一些。