0

LinqToXmlを使用してXSDを生成する方法を知っている人はいますか?この例はどこにも見つかりません。XSDの複雑さは、次のようにかなり低くなります。

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML Studio 6.1.18.0 - FREE Community Edition (http://www.liquid-technologies.com)-->
<xs:schema 
    elementFormDefault="qualified" 
    targetNamespace="http://schemas.xxx.yy/CRM/2009/01/DeadAnimalReport" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="Name">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:length value="35" />
        </xs:restriction>
    </xs:simpleType>
    </xs:element>

    <xs:element name="Email" type="xs:string" />

    <xs:element name="Selection">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:length value="15" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:element name="DeliveryDate" type="xs:date" />
</xs:schema>

ビジネスアナリストが質問の範囲外であるいくつかの関連するアーティファクトとともにメッセージスキーマを生成できるようにするツールのコンテキスト構築。ツールXSDは、アプリケーションのオブジェクトモデルのCLRオブジェクトから生成されます。

オブジェクトは非常に単純です。要素(タイプ、名前など)を表す他のオブジェクトのコレクションとともに、名前空間を構築するのに十分な情報を含むルートオブジェクトです。

ありがとう

ショーン

4

3 に答える 3

1

このシナリオで LINQ を使用する理由は何ですか? ソースデータはどのように見えますか?

あまり情報はありませんが、とにかく:

同様のコードを使用して XSD を作成できます。

XNamespace nsXS = "http://www.w3.org/2001/XMLSchema";
XElement root = new XElement(nsXS + "schema",
    new XAttribute("elementFormDefault", "qualified"),
    new XAttribute("targetNamespace", "http://schemas.xxx.yy/CRM/2009/01/DeadAnimalReport"),
    new XElement(nsXS + "element",
        new XElement(nsXS + "simpleType",
            new XElement(nsXS + "restriction",
                new XAttribute("base", "xs:string")),
                new XElement(nsXS + "length", new XAttribute("value", 35)))));

ある種のオブジェクトがある場合は、射影を使用できます。

var q =
    new XElement(nsXS + "schema",
                 from s in someObjects
                 select GetXsdDefinition(s)
        );

どこ

GetXsdDefinition は、オブジェクトを引数として取り、その XSD 定義を返すメソッドです。

于 2009-01-22T12:43:33.570 に答える
0

XSD への LINQ もあります。おそらくそれがあなたが探しているものです! ここで見つけることができます

于 2009-01-22T12:49:12.280 に答える