次の XSD ファイルの場合:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<!-- Tokens -->
<xs:complexType name="RelativeText">
<xs:attribute name="name" type="stringtype" use="required"/>
<xs:attribute name="flow" type="stringtype" use="required"/>
<xs:attribute name="amount" type="inttype" use="required"/>
</xs:complexType>
<xs:complexType name="LineText">
<xs:attribute name="name" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="BoxText">
<xs:attribute name="name" type="stringtype" use="required"/>
<xs:attribute name="width" type="dectype" use="required" />
<xs:attribute name="height" type="dectype" use="required" />
<xs:attribute name="x" type="dectype" use="required" />
<xs:attribute name="y" type="dectype" use="required" />
</xs:complexType>
<!-- Settings -->
<!-- Local Settings - per file type -->
<!-- Directories -->
<xs:complexType name="MonitorDirectoryElementType">
<xs:attribute name="path" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="OutputDirectoryElementType">
<xs:attribute name="path" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="LoggingDirectoryElementType">
<xs:attribute name="path" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="FileExtensionElementType">
<xs:attribute name="extension" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="LocalSettingsType">
<xs:all>
<xs:element name="file-type" type="FileExtensionElementType" maxOccurs="1"/>
<xs:element name="monitor-directory" type="MonitorDirectoryElementType" maxOccurs="1"/>
<xs:element name="output-directory" type="OutputDirectoryElementType" maxOccurs="1"/>
<xs:element name="log-directory" type="LoggingDirectoryElementType" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<!-- Global Settings -->
<xs:complexType name="ApplicationLogFileType">
<xs:attribute name="path" type="stringtype" use="required"/>
</xs:complexType>
<xs:complexType name="GlobalSettingsType">
<xs:all>
<xs:element name="log-file" type="ApplicationLogFileType" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<!-- Token Type Wrap Around -->
<xs:complexType name="TokensType">
<xs:choice maxOccurs="unbounded">
<xs:element name="line-text" type="LineText" />
<xs:element name="box-text" type="BoxText" />
<xs:element name="relative-text" type="RelativeText" />
</xs:choice>
</xs:complexType>
<!-- Template content -->
<xs:complexType name="templatecontenttype">
<xs:all>
<xs:element name="local-settings" type="LocalSettingsType" maxOccurs="1" />
<xs:element name="tokens" type="TokensType" maxOccurs="1"/>
</xs:all>
</xs:complexType>
<!-- Main application settings -->
<xs:complexType name="ApplicationConfigurationType">
<xs:choice maxOccurs="unbounded">
<xs:element name="global-settings" type="GlobalSettingsType" maxOccurs="1"/>
<xs:element name="template-content" type="templatecontenttype" />
</xs:choice>
</xs:complexType>
<xs:element name="ApplicationConfiguration" type="ApplicationConfigurationType" />
</xs:schema>
次のようなxmlで使用できるようにしたい:
<?xml version='1.0'?>
<ApplicationConfiguration>
<global-settings >
<log-file path="D:\applicationLog.log" />
</global-settings>
<template-content>
<local-settings>
<file-type extension=".txt" />
<monitor-directory path="D:\monitor\"/>
<output-directory path="D:\output"/>
<log-directory path= "D:\ThisInstanceLogs"/>
</local-settings>
<tokens>
<line-text name="xyz1" />
<line-text name="xyz12" />
<relative-text name="xyz123" flow="below" amount="1"/>
<line-text name="xyz1234" />
<line-text name="xyz12345" />
<box-text name="thada" width="100" height="100" x="2" y="3"/>
</tokens>
</template-content>
</ApplicationConfiguration>
どこ
グローバル設定は一度だけ表示できます
template-content = 回数無制限
ローカル設定とトークン - それぞれ 1 回
トークン内の要素=任意の順序で無制限 (出現が 0 であっても)
ログファイル 1 回 & 必須
. 私はここで多くのことを間違っていると感じています..