1

可能であれば、スキーマを組み合わせることができるJavaライブラリはありますか?

ユーザーが複数の「ジェネレーター」をユーザー定義の(おそらくXML)データセットにリンクできるアプリケーションを作成しています。各「ジェネレーター」にはスキーマ(おそらくXSD)があり、ユーザーはそれに有効なデータを入力できます。スキーマの場合、XSDを簡単に1つに結合できれば、データセット全体が結合されたXSDと一致し、すべてのジェネレーターのスキーマと一致するようになります。

XSDが競合する可能性があることは理解していますが、これは問題ではありませんが、これが完全に不可能な場合、他の解決策は何でしょうか。

4

1 に答える 1

1

実際、他のスキーマに「インポート」された個別の XSD を持つことができます。「複合」スキーマでは、「import:schemaLocation」を使用するだけです。プロジェクトで使用したコードの次の例を参照してください。

<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test/interactions/AddToContext"
    xmlns:tns="http://test/interactions/AddToContext" xmlns:basictypes="http://test/interactions/BasicTypes" elementFormDefault="qualified">

    <import schemaLocation="BasicTypes.xsd"
        namespace="http://test/interactions/BasicTypes">
    </import>

    <!-- Request Message -->
    <element name="AddToContextRequest">
        <complexType>
            <sequence>
                <choice>
                    <element name="ServiceIdToAdd" type="string" maxOccurs="unbounded" />
                    <element name="ValueToAdd" type="basictypes:ContextValue" maxOccurs="unbounded" />
                </choice>
            </sequence>
        </complexType>
    </element>

    <!-- Response message -->
    <element name="AddToContextResponse">
        <complexType>
            <sequence>
                <element name="Result" type="string" />
            </sequence>
        </complexType>
    </element>
</schema>

「BasicTypes」スキーマをこのスキーマにインポートしたことがわかります...

このスキーマを参照として使用して、これらのオブジェクトを操作する Java コード (クラス) を生成する場合は、「xjc」 (XML Binding Compiler) を使用できます...非常に便利です。

これが役立つことを願っています!乾杯!


新しい XSD で基本型を組み合わせる:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test/interactions/AddToContext"
    xmlns:tns="http://test/interactions/AddToContext" elementFormDefault="qualified">

    <complexType name="ContextValue">
        <sequence>
            <element name="ValueID" type="string" />
            <choice>
                <sequence>
                    <element name="Value" type="string" />
                    <element name="ID" type="string" />
                </sequence>
                <element name="InfoValue" type="string" />
            </choice>
        </sequence> 
    </complexType>

    <!-- Request Message -->
    <element name="AddToContextRequest">
        <complexType>
            <sequence>
                <choice>
                    <element name="ServiceIdToAdd" type="string" maxOccurs="unbounded" />
                    <element name="ValueToAdd" type="tns:ContextValue" maxOccurs="unbounded" />
                </choice>
            </sequence>
        </complexType>
    </element>

    <!-- Response message -->
    <element name="AddToContextResponse">
        <complexType>
            <sequence>
                <element name="Result" type="string" />
            </sequence>
        </complexType>
    </element>
</schema>
于 2012-11-01T09:49:08.123 に答える