2012-01-17 60 views
1

我有描述模式的XSD文件。需要來自XSD模式中不同命名空間的屬性

模式中的根元素需要一個在另一個xsd(我有url)中定義的屬性。具體而言,我希望文檔的根元素需要屬性:

xsi:noNamespaceSchemaLocation="schema/SomeSchema.xs" 

其中

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

如何描述這個文檔中的XSD?

回答

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放寬了一些。