2016-01-28 72 views
1

我們正在構建企業範圍的XML模式。在由不同團隊構建的架構之間存在通用元素,我們希望他們都使用相同數據元素的相同名稱,以便他們能夠使用相同的數據字典。在XSD中共享定義的技巧?

爲我們打造出的模式,但希望他們都使用例如customerfirstname的同名 應該在所有不同的模式一樣,我們如何做到這一點,我們會加班元素添加到數據字典?

+1

由於模式可以包含另一個模式文件,因此您可以擁有每個團隊的模式包含的公共xsd。 –

回答

0

通過使用命名空間,實現XSD中共享和非共享詞彙表控制的分離。

1族(和其它基團)可以定義在他們控制的命名空間的XSD,

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:g1="http://example.com/group1" 
      xmlns:c1="http://example.com/common" 
      targetNamespace="http://example.com/group1"> 

    <xs:import namespace="http://example.com/common" schemaLocation="common.xsd"/> 

    <xs:element name="Group1X"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="g1:Group1Y"/> 
     <xs:element ref="c1:Common1"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:element name="Group1Y" type="xs:string"/> 

</xs:schema> 

並導入在公共的,共享控制下的命名空間的XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://example.com/common"> 

    <xs:element name="Common1" type="xs:string"/> 

</xs:schema> 

這樣兩者都可以用在同一個XML文檔中

<?xml version="1.0" encoding="UTF-8"?> 
<g1:Group1X xmlns:g1="http://example.com/group1" 
      xmlns:c1="http://example.com/common" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://example.com/group1 group1.xsd"> 
    <g1:Group1Y> 
    Vocabulary in the "http://example.com/group1" namespace is under 
    the control of group 1. 
    </g1:Group1Y> 
    <c1:Common1> 
    Vocabulary in the "http://example.com/common" namespace is under 
    common control. 
    </c1:Common1> 
</g1:Group1X> 

根據要求沒有衝突。