2013-06-19 106 views
0

我有简单的模式是这样参考XML架构扩展

> <?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:element name="employee" type="fullpersoninfo"/> 

<xs:complexType name="personinfo"> 
    <xs:sequence> 
    <xs:element name="firstname" type="xs:string"/> 
    <xs:element name="lastname" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

<xs:complexType name="fullpersoninfo"> 
    <xs:complexContent> 
    <xs:extension base="personinfo"> 
     <xs:sequence> 
     <xs:element name="address" type="xs:string"/> 
     <xs:element name="city" type="xs:string"/> 
     <xs:element name="country" type="xs:string"/> 
     </xs:sequence> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

在不同的模式我想引用的personinfo:国家,我该如何参考呢?

<xs:element name="country" type="how do i refer this" minOccurs ="0" maxOccurs ="1">
</xs:element>

回答

1

您的简单模式的作者一直在努力使人们无法引用来自其他模式文档的“国家”元素,通过使本地的fullpersoninfo型,而不是使其成为顶级元素。如果模式无法更改,那么您就会陷入困境。

如果可以更改模式以重复使用要重用的构造,那么您将需要包含或导入相关的模式文档,然后您将使用它们的限定名称引用它们。但是看起来您是否有点不确定是否要参考country元素或country元素的类型;如果你想产生一个连贯的模式,你需要做出决定。

+0

这只是一个例子。真实情况是不同的。我有两个不同的XSD中的PersonInfo和fullpersoninfo,我无法更改它们。在这种情况下,我想引用country元素。 –

+0

如果您的示例提供了技术上准确的情况说明,那么您的问题已得到解答。如果没有,那么你提出了错误的问题,并且你问的问题已经得到解答。无论哪种方式,祝你好运。 –