4

多くのエイリアスを持つ file 要素を含む XML を検証する XSD が必要ですが、各エイリアスには異なる値があります。

これは私のXMLです:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<folder>
  <files>
    <fileList>
      <file>
        <title>Document1</title>
        <fileAlias>
          <alias>Alias1</alias>
          <alias>Alias2</alias>
        </fileAlias>
      </file>
    </fileList>
  </files>
</folder>

Alias1 != Alias2 なので前者のXMLが良い

XSDでどのように指定できますか:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="folder" type="folderType" />
  <xs:complexType name="folderType">
    <xs:sequence>
      <xs:element name="files" type="filesType" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="filesType">
    <xs:sequence>
      <xs:element name="fileList" type="fileListType" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="fileListType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="file" type="fileType" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="fileType">
    <xs:sequence>
      <xs:element name="title" type="xs:string" />
      <xs:element name="fileAlias" type="fileAliasType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="id" type="xs:string" />
    <xs:attribute name="type" type="xs:int" />
  </xs:complexType>
  <xs:complexType name="fileAliasType">
    <xs:sequence>
      <xs:element maxOccurs="unbounded" name="alias" type="xs:string" minOccurs="1" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>

試してみましxsd:uniqueたが、XML要素のテキスト値ではなく属性用だと思います。

4

1 に答える 1