我有一個XSD 1.0序列,它定義了一組元素,其中一些元素可以是可選的,但其中沒有一個可以出現多次,並且還以<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax"/>
標記結尾,以便用戶可以添加他們自己的數據元素以最簡單的方式編程導出符合的XML(即理想情況下不需要它們定義自己的名稱空間/ XSD)。對xsd進行進一步約束:any?
處理用戶生成的XML時,我會忽略通過<any>
標記添加的任何自定義元素,但是我想知道是否有強制元素名稱唯一性的方法,以便我可以確定它們'是不是將maxOccurs=1
中定義的元素的重複項放在一起?
下面是一個簡單的XSD(交互式版本here):
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns="testxsd" targetNamespace="testxsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xsd:element name="XSDSequence">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="itemA" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
<xsd:element name="itemB" type="xsd:string"
minOccurs="0" maxOccurs="1"/>
<xsd:element name="itemC" type="xsd:string"
minOccurs="1" maxOccurs="1"/>
<xsd:any minOccurs="0" maxOccurs="unbounded"
namespace="##any" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
這裏是傳遞XSD驗證,但我想對因錯誤出在最後的複製<itemA>
一個示例XML:
<XSDSequence xmlns="testxsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<itemA>foo</itemA>
<itemC>bar</itemC>
<randomElement>this is ok</randomElement>
<itemA>I want this second itemA to cause an error</itemA>
</XSDSequence>
(請注意,通過屬性而不是元素捕獲數據項是不東西,我婉噸至做。)
謝謝,我認爲這很可能是這種情況。 – ivanatpr