使用LinqToXml生成XSD

时间:2009-01-22 12:39:59

标签: linq xsd linq-to-xml

有谁知道如何使用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对象生成。

对象非常简单 - 一个根对象,它包含足够的信息来构造命名空间以及表示元素(类型,名称等)的其他对象的集合。

由于

肖恩

3 个答案:

答案 0 :(得分: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定义的方法

答案 1 :(得分:0)

还有一个LINQ到XSD,也许就是你要找的东西! 你可以找到它HERE

答案 2 :(得分:0)

由于你想使用LinqToXml,我认为你的场景是你已经有了一些Xml,你想要一个Xsd随之而来。

LinqToXml与Xsd的确无关......

您可能需要查看Xsd Inference工具。