2012-04-25 60 views
0

我想創建一個允許下面的XML的XSD架構。我認爲除了<subsegent>元素上的屬性外,其他所有內容都包含在內。有人可以提供示例XSD嗎?我試過的所有東西都會產生錯誤。允許在一個序列中的元素上的屬性的XSD

<Segment> 
    <Subsegment target="all">This is test 1</Subsegment> 
    <Subsegment target="some">This is test 2</Subsegment> 
</Segment> 

UPDATE

這裏是一個XSD我試過了。我希望序列中的元素具有屬性。我得到這個錯誤:「在這個上下文中不支持'http://www.w3.org/2001/XMLSchema:attribute'元素。」從我的工具。

感謝

<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema" > 
<xsd:complexType name="Segment"> 
    <xsd:sequence> 
     <xsd:element name="Subsegment" minOccurs="1" maxOccurs="unbounded" type="xsd:string"> 
      <xsd:attribute name="target" type="xsd:string" use="required" /> 
     </xsd:element> 
    </xsd:sequence> 
</xsd:complexType> 
</xsd:schema> 
+0

顯示我們到目前爲止你有什麼。然後(a)我們回答的工作比從頭開始的工作要少,(b)我們可以看到你出錯的地方,所以我們可以解釋你的錯誤。 – 2012-04-26 08:21:24

回答

3

架構....

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

    <xsd:element name="Segment"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="Subsegment" minOccurs="1" maxOccurs="unbounded" type="SubsegmentType"/> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 

    <xsd:complexType name="SubsegmentType"> 
    <xsd:simpleContent> 
     <xsd:extension base="xsd:string"> 
     <xsd:attribute name="target" type="xsd:string"/> 
     </xsd:extension> 
    </xsd:simpleContent> 
    </xsd:complexType> 

</xsd:schema> 

而且使用xmllint結果....

xmllint testfile.xml --schema Subsegment.xsd 
<?xml version="1.0" encoding="UTF-8"?> 
<Segment> 
    <Subsegment target="all">This is test 1</Subsegment> 
    <Subsegment target="some">This is test 2</Subsegment> 
</Segment> 
testfile.xml validates 

讓我們添加一些錯誤驗證...

使用未指定的元素

xmllint badtestfile.xml --schema Subsegment.xsd 
<?xml version="1.0" encoding="UTF-8"?> 
<Segment> 
    <Something-Else/> 
    <Subsegment target="all">This is test 1</Subsegment> 
    <Subsegment target="some">This is test 2</Subsegment> 
</Segment> 
badtestfile.xml:3: element Something-Else: Schemas validity error : Element 'Something-Else': This element is not expected. Expected is (Subsegment). 
badtestfile.xml fails to validate 

使用無效的屬性

xmllint badtestfile.xml --schema Subsegment.xsd 
<?xml version="1.0" encoding="UTF-8"?> 
<Segment> 
    <Subsegment mytarget="all">This is test 1</Subsegment> 
    <Subsegment target="some">This is test 2</Subsegment> 
</Segment> 
badtestfile.xml:3: element Subsegment: Schemas validity error : Element 'Subsegment', attribute 'mytarget': The attribute 'mytarget' is not allowed. 
badtestfile.xml fails to validate 
相關問題