とりあえずXSD

書き終わったXSDを公開しておく。私が使わない部分は書いてないので万が一にもこれを使おうなんて考えを持った場合、使う部分が記述済みであるかどうか事前にチェックしておいたほうがいい。

<?xml version="1.0"?>
<xsd:schema targetNamespace="http://www.masahase.mydns.jp/AbaqusResult" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.masahase.mydns.jp/AbaqusResult">
	<xsd:annotation>
		<xsd:documentation>ABAQUSの結果ファイルを表現するためのスキーマ</xsd:documentation>
	</xsd:annotation>
	<xsd:element name="AbaqusResult" type="tns:AbaqusResultType">
	</xsd:element>
	<xsd:complexType name="AbaqusResultType">
        <xsd:annotation>
        	<xsd:documentation>Abaqusの結果ファイルのルート</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence maxOccurs="1" minOccurs="1">
			<xsd:element ref="tns:element" maxOccurs="unbounded"
				minOccurs="1">
			</xsd:element>
			<xsd:element ref="tns:node" maxOccurs="unbounded"
				minOccurs="1">
			</xsd:element>
			<xsd:element ref="tns:element_set" maxOccurs="unbounded"
				minOccurs="0">
			</xsd:element>
			<xsd:element ref="tns:node_set" maxOccurs="unbounded"
				minOccurs="0">
			</xsd:element>
			<xsd:element ref="tns:active_freedom" maxOccurs="1"
				minOccurs="1">
			</xsd:element>
			<xsd:element name="out_request" type="tns:OutRequestType"
				maxOccurs="unbounded" minOccurs="0">
			</xsd:element>
			<xsd:element name="increment" type="tns:IncrementType"
				maxOccurs="unbounded" minOccurs="0">
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="version" type="xsd:string"></xsd:attribute>
		<xsd:attribute name="date" type="xsd:date"></xsd:attribute>
		<xsd:attribute name="time" type="xsd:time"></xsd:attribute>
		<xsd:attribute name="elements" type="xsd:unsignedInt"></xsd:attribute>
		<xsd:attribute name="nodes" type="xsd:unsignedInt"></xsd:attribute>
		<xsd:attribute name="typical_length" type="xsd:double"></xsd:attribute>
		<xsd:attribute name="title" type="xsd:string"></xsd:attribute>
	</xsd:complexType>
	<xsd:element name="string" type="xsd:string"></xsd:element>
	<xsd:element name="integer" type="xsd:int"></xsd:element>
	<xsd:element name="float" type="xsd:double"></xsd:element>
	<xsd:element name="active_freedom" type="tns:ActiveFreedomType">
	</xsd:element>
	<xsd:complexType name="ActiveFreedomType">
        <xsd:annotation>
        	<xsd:documentation>有効な自由度を示す</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="c1" type="xsd:unsignedByte"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="c2" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="c3" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="c4" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="c5" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="c6" type="xsd:unsignedByte"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="NodeType">
        <xsd:annotation>
        	<xsd:documentation>節点</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="c1" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c2" type="xsd:double" use="optional"></xsd:attribute>
		<xsd:attribute name="c3" type="xsd:double" use="optional"></xsd:attribute>
	</xsd:complexType>
	<xsd:element name="node" type="tns:NodeType"></xsd:element>
	<xsd:complexType name="NodeRefType">
        <xsd:annotation>
        	<xsd:documentation>節点番号への参照</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="node_id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
	</xsd:complexType>
	<xsd:element name="node_ref" type="tns:NodeRefType"></xsd:element>
	<xsd:complexType name="ElementType">
        <xsd:annotation>
        	<xsd:documentation>要素</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
			<xsd:element ref="tns:node_ref" maxOccurs="unbounded"
				minOccurs="1">
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="type" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="ElementSetType">
        <xsd:annotation>
        	<xsd:documentation>要素集合</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
			<xsd:element ref="tns:element_ref" maxOccurs="unbounded"
				minOccurs="1">
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="ElementRefType">
        <xsd:annotation>
        	<xsd:documentation>要素番号の参照</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="element_id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
	</xsd:complexType>
	<xsd:element name="element" type="tns:ElementType">
	</xsd:element>
	<xsd:element name="element_ref" type="tns:ElementRefType"></xsd:element>
	<xsd:complexType name="NodeSetType">
        <xsd:annotation>
        	<xsd:documentation>節点集合</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
			<xsd:element ref="tns:node_ref" maxOccurs="unbounded"
				minOccurs="1">
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
	</xsd:complexType>
	<xsd:element name="node_set" type="tns:NodeSetType"></xsd:element>
	<xsd:complexType name="IncrementType">
        <xsd:annotation>
        	<xsd:documentation>インクリメント</xsd:documentation>
        </xsd:annotation>
        <xsd:choice>
			<xsd:element ref="tns:node_output" maxOccurs="unbounded"
				minOccurs="0">
			</xsd:element>
			<xsd:element ref="tns:element_record" maxOccurs="unbounded" minOccurs="0"></xsd:element>
		</xsd:choice>
		<xsd:attribute name="total_time" type="xsd:double"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="step_time" type="xsd:double"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="cs_rate_ratio" type="xsd:double"
			use="optional">
		</xsd:attribute>
		<xsd:attribute name="proc_type" type="xsd:unsignedByte"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="step_id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="inc_id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="inc_time" type="xsd:double"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="linear_perturb" type="xsd:boolean"
			use="optional">
		</xsd:attribute>
		<xsd:attribute name="lp_factor" type="xsd:double"
			use="optional">
		</xsd:attribute>
		<xsd:attribute name="freq" type="xsd:double" use="optional"></xsd:attribute>
		<xsd:attribute name="name" type="xsd:string" use="optional"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="NodeOutputType">
        <xsd:annotation>
        	<xsd:documentation>節点変数のレコード</xsd:documentation>
        </xsd:annotation>
        <xsd:choice maxOccurs="unbounded" minOccurs="1">
			<xsd:element ref="tns:float"></xsd:element>
			<xsd:element ref="tns:integer"></xsd:element>
			<xsd:element ref="tns:string"></xsd:element>
		</xsd:choice>
		<xsd:attribute name="node_id" type="xsd:unsignedInt"
			use="required">
		</xsd:attribute>
		<xsd:attribute name="output_variable" type="xsd:string"
			use="required">
		</xsd:attribute>
	</xsd:complexType>
	<xsd:element name="node_output" type="tns:NodeOutputType"></xsd:element>
	<xsd:complexType name="ElementRecordType">
        <xsd:annotation>
        	<xsd:documentation>要素変数を含むレコードの継承元</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
			<xsd:element name="local_coordinate"
				type="tns:LoacalCoordinateType" maxOccurs="1" minOccurs="0">
			</xsd:element>
			<xsd:element name="output_value" type="tns:OutputValueType"
				maxOccurs="unbounded" minOccurs="0">
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="locate" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="integ_point"></xsd:enumeration>
					<xsd:enumeration value="elem_center"></xsd:enumeration>
					<xsd:enumeration value="node"></xsd:enumeration>
					<xsd:enumeration value="rebar"></xsd:enumeration>
					<xsd:enumeration value="nodal_ave"></xsd:enumeration>
					<xsd:enumeration value="element"></xsd:enumeration>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="direct_stress" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="share_stress" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="direction" type="xsd:unsignedByte"></xsd:attribute>
		<xsd:attribute name="sections" type="xsd:unsignedByte"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="LoacalCoordinateType">
        <xsd:annotation>
        	<xsd:documentation>局所座標の指定</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="c11" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c12" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c13" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c21" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c22" type="xsd:double" use="required"></xsd:attribute>
		<xsd:attribute name="c23" type="xsd:double" use="required"></xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="OutputValueType">
        <xsd:annotation>
        	<xsd:documentation>各出力変数の値</xsd:documentation>
        </xsd:annotation>
        <xsd:choice maxOccurs="unbounded" minOccurs="1">
			<xsd:element ref="tns:float"></xsd:element>
			<xsd:element ref="tns:integer"></xsd:element>
			<xsd:element ref="tns:string"></xsd:element>
		</xsd:choice>
		<xsd:attribute name="output_variable" type="xsd:string"
			use="required">
		</xsd:attribute>
	</xsd:complexType>
	<xsd:complexType name="ElementNodeRecord">
		<xsd:annotation>
			<xsd:documentation>要素変数を節点平均値を含むレコード</xsd:documentation>
		</xsd:annotation>
		<xsd:complexContent>
			<xsd:extension base="tns:ElementRecordType">
				<xsd:attribute name="node_id" type="xsd:unsignedInt"
					use="required">
				</xsd:attribute>
				<xsd:attribute name="elem_id" type="xsd:unsignedInt" use="optional"></xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElementCentroidRecordType">
        <xsd:annotation>
        	<xsd:documentation>要素中心での値を含むレコード</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
			<xsd:extension base="tns:ElementRecordType">
				<xsd:attribute name="element_id" type="xsd:unsignedInt"
					use="required">
				</xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElementIntegPointRecordType">
        <xsd:annotation>
        	<xsd:documentation>要素の各積分点での値を含むレコード</xsd:documentation>
        </xsd:annotation>
        <xsd:complexContent>
			<xsd:extension base="tns:ElementRecordType">
				<xsd:attribute name="element_id" type="xsd:unsignedInt"
					use="required">
				</xsd:attribute>
				<xsd:attribute name="integ_point_id"
					type="xsd:unsignedByte" use="required">
				</xsd:attribute>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:element name="element_node_record" type="tns:ElementNodeRecord"
		substitutionGroup="tns:element_record">
	</xsd:element>
	<xsd:element name="element_centroid_record"
		type="tns:ElementCentroidRecordType"
		substitutionGroup="tns:element_record">
	</xsd:element>
	<xsd:element name="element_integ_point_record"
		type="tns:ElementIntegPointRecordType"
		substitutionGroup="tns:element_record">
	</xsd:element>
	<xsd:element name="element_set" type="tns:ElementSetType"></xsd:element>
	<xsd:complexType name="OutRequestType">
        <xsd:annotation>
        	<xsd:documentation>出力要求</xsd:documentation>
        </xsd:annotation>
        <xsd:attribute name="output_type" use="required">
			<xsd:simpleType>
				<xsd:restriction base="xsd:string">
					<xsd:enumeration value="element"></xsd:enumeration>
					<xsd:enumeration value="node"></xsd:enumeration>
					<xsd:enumeration value="modal"></xsd:enumeration>
					<xsd:enumeration value="energy"></xsd:enumeration>
				</xsd:restriction>
			</xsd:simpleType>
		</xsd:attribute>
		<xsd:attribute name="name" type="xsd:string" use="optional"></xsd:attribute>
		<xsd:attribute name="element_type" type="xsd:string"
			use="optional">
		</xsd:attribute>
	</xsd:complexType>
	<xsd:element name="element_record" type="tns:ElementRecordType"
		abstract="true">
	</xsd:element>
</xsd:schema>