xml – 如何编译使用DataSet(xs:schema)的模式?
发布时间:2020-12-16 23:28:59 所属栏目:百科 来源:网络整理
导读:我在c#中创建了最简单的Web服务: public void AddData(DataSet ds) 生成的模式(Wsdl)如下所示: s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"...s:element ref="s:schema" /.../s:schema 请注意,架构不包含任何import / include元素. 我正在尝试将
我在c#中创建了最简单的Web服务:
public void AddData(DataSet ds) 生成的模式(Wsdl)如下所示: <s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"> ... <s:element ref="s:schema" /> ... </s:schema> 请注意,架构不包含任何import / include元素. 我正在尝试将此架构加载到c#System.Xml.XmlSchema并将其添加到System.Xml.XmlSchemaSet: var set = new XmlSchemaSet(); var fs = new FileStream(@"c:tempschema.xsd",FileMode.Open); var s = XmlSchema.Read(fs,null); set.Add(s); set.Compile(); 最后一行抛出此异常: The 'http://www.w3.org/2001/XMLSchema:schema' element is not declared. 这有点意义:.Net生成的模式使用“s:schema”类型,该类型在未导入的模式中声明. >为什么.Net会创建一个无效的架构? 解决方法
>我会称之为虫子.虽然看到XML Schema引用
http://www.w3.org/2001/XMLSchema名称空间中的元素是非常不寻常的. >你所做的是正确的方式 – 几乎;通常,您应该能够编译使用DOCTYPE引用的XML Schema文件;只需确保DTD在指定位置可用(或通过XML解析器提供),并且您的阅读器设置配置为不禁止DTD处理(XmlReaderSettings上已废弃的ProhibitDtd或DtdProcessing属性,默认情况下为真).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |