2017-07-24 71 views
0

XML架構V1.0可以通過的事實,那就是沒有一個根節點定義的方式指定實例替代根節點:XSD用於來自不同名稱空間的備用根元素嗎?

https://stackoverflow.com/a/8857777/8254682

因此有可能利用此提供一種「文件類型選擇「,而不使用XSD V1.1。,根據在實例中使用哪個全局聲明的元素作爲根節點,對嗎?

但是,只要這些命名空間被正確聲明,「替代根節點」可以在不同的命名空間中嗎?在這種情況下做元素和屬性資格問題嗎?

回答

0

任何根元素(不是抽象的)都可以用作XML文檔中根元素的定義。

此外,您可以保留相同的根元素名稱,並使用XML文檔中的xsi:type屬性(使用的類型必須基於RootElm中定義的類型)更改元素的類型。

enter image description here

<?xml version="1.0" encoding="utf-8" ?> 
<!--Created with Liquid Studio 2018 (https://www.liquid-technologies.com)--> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="RootElm" type="RootType" /> 
    <xs:complexType name="RootType"> 
     <xs:sequence> 
      <xs:element name="A" /> 
     </xs:sequence> 
    </xs:complexType> 
    <xs:complexType name="RootType1"> 
     <xs:complexContent> 
      <xs:extension base="RootType"> 
       <xs:sequence> 
        <xs:element name="B" /> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
    <xs:complexType name="RootType2"> 
     <xs:complexContent> 
      <xs:extension base="RootType"> 
       <xs:sequence> 
        <xs:element name="C" /> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 
</xs:schema> 

示例XML文檔1

<?xml version="1.0" encoding="utf-8"?> 
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) --> 
<RootElm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="C:\Temp\XSDFile1.xsd"> 
    <A /> 
</RootElm> 

示例XML文檔2

<?xml version="1.0" encoding="utf-8"?> 
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) --> 
<RootElm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="C:\Temp\XSDFile1.xsd" 
     xsi:type="RootType1"> 
    <A /> 
    <B></B> 
</RootElm> 

示例XML文檔3

<?xml version="1.0" encoding="utf-8"?> 
<!-- Created with Liquid Studio 2018 (https://www.liquid-technologies.com) --> 
<RootElm xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="C:\Temp\XSDFile1.xsd" 
     xsi:type="RootType2"> 
    <A /> 
    <C /> 
</RootElm> 
相關問題