私はxmlとxmlスキーマに非常に慣れていません。かなりモジュール化されたコードを作成したいのですが、このモジュール性を実現するのに苦労しています。
私の問題は次のとおりです。次のxmlファイルを検証するxml-schemaが必要です。
<process xmlns="http://soa.lotterm.org/spec/test/default"
xmlns:bpmn="http://soa.lotterm.org/spec/test/bpmn" xmlns:bpel="http://soa.lotterm.org/spec/test/bpel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://soa.lotterm.org/spec/test/default http://soa.lotterm.org/spec/test/default.xsd http://soa.lotterm.org/spec/test/bpmn http://soa.lotterm.org/spec/test/bpmn.xsd http://soa.lotterm.org/spec/test/bpel http://soa.lotterm.org/spec/test/bpel.xsd">
<bpmn:processProperties>
<bpmn:uri>http://soa.lotterm.org/repository/stocktrade/stockmarket.bpmn</bpmn:uri>
</bpmn:processProperties>
<bpel:processProperties>
<bpel:uri>http://soa.lotterm.org/repository/stocktrade/stockmarket.bpmn</bpmn:uri>
</bpel:processProperties>
</process>
なぜそのような XML ファイルを作成したのですか?
さて、アーティファクト(プロセス要素など)があるデフォルトの構造が必要です。これらの成果物は、モジュール固有のプロパティを格納できる必要があります (たとえば、私の bpel または bpmn モジュールから)。もちろん、デフォルトのスキーマはこれらのモジュールを認識しておらず、モジュールは互いに認識していません (デフォルトのスキーマのみ)。この xml ファイルをサポートするスキーマはどのように表示されますか?
私の試みはすべて(たとえば、抽象プロパティタイプの拡張を使用して)うまくいきません。
編集:スキーマを生成しようとすると、探しているものではありません。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://soa.lotterm.org/spec/test/default" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="process" type="def:processType" xmlns:def="http://soa.lotterm.org/spec/test/default"/>
<xs:complexType name="processType">
<xs:sequence>
<xs:element ref="bpmn:processProperties" xmlns:bpmn="http://soa.lotterm.org/spec/test/bpmn"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
そして bpmn-namespace スキーマ:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://soa.lotterm.org/spec/test/bpmn" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="processProperties" type="bpmn:processPropertiesType" xmlns:bpmn="http://soa.lotterm.org/spec/test/bpmn"/>
<xs:complexType name="processPropertiesType">
<xs:sequence>
<xs:element type="xs:anyURI" name="uri"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
さて、それの何が問題なのですか?デフォルトのスキーマは、bpmn 名前空間に processProperties があることを認識する必要があります。それが今、私が欲しいものです。ここで、デフォルト スキーマからプロセスを拡張するプロセスを bpmn スキーマに追加することをお勧めします。異なる名前空間からプロセスを拡張できるようにしたいので、それも私が望んでいることではありません。したがって、先ほど述べたものと似ている可能性があります。
どうすればこれを達成できますか?
乾杯、トーマス