0

私は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 スキーマに追加することをお勧めします。異なる名前空間からプロセスを拡張できるようにしたいので、それも私が望んでいることではありません。したがって、先ほど述べたものと似ている可能性があります。

どうすればこれを達成できますか?

乾杯、トーマス

4

1 に答える 1

0

利用可能な多くのスキーマ生成ツールのいずれかを使用して、このインスタンスからスキーマを自動生成しようとしましたか? この入力の単純さを考えると、彼らは妥当な仕事をすると思います。

XSD では、ターゲット名前空間ごとに少なくとも 1 つのスキーマ ドキュメントが必要です。あなたの名前空間には 2 つ以上の要素が含まれていないため、これはあなたの目的には十分にモジュール化されているように見えます。モジュール化が不十分な場合は、何を達成しようとしているのかを説明する必要があります。

于 2012-07-20T14:44:23.550 に答える