私は単純なxmlファイルを持っています
<form xmlns="http://www.example.org/form-reader/form-description"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/form-reader/form-description form-description.xsd">
<pages amount="1"/>
<pages amount="1"/>
</form>
そして、私はそれのためのスキーマを書きました
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/form-reader/form-description"
xmlns="http://www.example.org/form-reader/form-description"
elementFormDefault="qualified">
<xs:complexType name="pagesType">
<xs:attribute name="amount" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="formType">
<xs:sequence minOccurs="1">
<xs:element name="pages" minOccurs="0" maxOccurs="unbounded"
type="pagesType" />
</xs:sequence>
</xs:complexType>
<xs:element name="form" type="formType">
<xs:unique name="pageNumberUnique">
<xs:selector xpath="pages" />
<xs:field xpath="@amount" />
</xs:unique>
</xs:element>
</xs:schema>
amount プロパティの一意性を検証したいのですが、すべてのバリデーターで、xml ファイルが有効に見えますが、そうすべきではありません。なぜですか?
解決
@PetruGardea 修正を適用した後の私のスキーマは次のようになります。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/form-reader/form-description"
targetNamespace="http://www.example.org/form-reader/form-description"
xmlns="http://www.example.org/form-reader/form-description"
elementFormDefault="qualified">
<xs:complexType name="pagesType">
<xs:attribute name="amount" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="formType">
<xs:sequence minOccurs="1">
<xs:element name="pages" minOccurs="0" maxOccurs="unbounded"
type="pagesType" />
</xs:sequence>
</xs:complexType>
<xs:element name="form" type="formType">
<xs:unique name="pageNumberUnique">
<xs:selector xpath="tns:pages" />
<xs:field xpath="@amount" />
</xs:unique>
</xs:element>
</xs:schema>