2014-07-21 85 views
0

我希望能夠在我的XSD中允許以下內容,但難住。我知道我可以在這樣的結構中使用xs:any,但是這不允許我爲發生的元素定義屬性。使用xs:any元素可以定義任何元素的屬性嗎?

<xs:element name="parent"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:any minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

我希望能夠有一個定義的父母,然後有任何元素作爲一個孩子,但孩子必須通過以下指定的屬性。

<xs:attribute name="attribute1" type="xs:string" use="required" /> 
<xs:attribute name="attribute2" type="xs:string" /> 
<xs:attribute name="attribute3" type="xs:string" use="required" /> 

所以我想我真正問的是我可以定義任何元素的屬性?以下是我想要達到的結構。父母的子元素可以採用任何名稱,但必須具有上面指定的屬性。謝謝!

<parent> 
    <AnyElementName1 attribute1="val1" attribute2="val2" attribute3="val3"/> 
    <AnyElementName2 attribute1="val1" attribute2="val2" attribute3="val3"/> 
    <AnyElementName3 attribute1="val1" attribute3="val3"/> 
</parent> 

回答

1

隨着XS:任何可以約束元素的命名空間,並使用的processContents =「嚴格」,要求該元素是在模式中聲明一個,但你不能約束元素屬於特定類型。也許而不是使用xs:任何你應該使用xs:element命名一個抽象元素聲明,一個類型定義所需屬性的元素聲明,然後使這個抽象元素的替換組的所有允許元素成員。

相關問題