SQLXML使用了schema 和xsl 之后如何更新数据阿? 高手快来

晓峰-Bitcoin 2003-12-20 09:01:34
我使用SQLXML打开SQL SERVER取出数据,生成一个XML文件(SVG,是为了使用数据库中的数据动态生成图形),但是怎么杨来更新数据阿 ,我觉得应该是可以的,但是我用了以下的代码 有错误,清高手指点,
我的代码如下 ,
全局变量:
private System.Windows.Forms.DataGrid grid;
private SqlXmlCommand cmd=null;
private SqlXmlAdapter ad=null;
private DataSet ds=null;

点击button1 填充数据
String cnString ;
cnString="PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=Northwind;INTEGRATED SECURITY=sspi;";

cmd=new SqlXmlCommand(cnString);
cmd.RootTag ="Test";
cmd.CommandType = SqlXmlCommandType.XPath ;
cmd.SchemaPath="C:\\Inetpub\\wwwroot\\Test\\Schema.xsd";
cmd.CommandText ="/Map[@mapID=2]";
cmd.XslPath = "C:\\Inetpub\\wwwroot\\Test\\xsl.xslt";


ad=new SqlXmlAdapter(cmd);
ds=new DataSet();
try
{

ad.Fill(ds);
grid.DataSource=ds;
}
catch(SqlXmlException E)
{
MessageBox.Show(E.ToString());
}
点击button2更新数据
try
{
ad.Update(ds);
}
catch(SqlXmlException E)
{
MessageBox.Show(E.ToString());
}
schema 文件 schema.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:annotation>
<xsd:appinfo>
<sql:relationship name="MAP_LAYER" parent="METADATA_MAP" parent-key="mapID" child="METADATA_LAYER"
child-key="mapID" />
dasd
<sql:relationship name="LAYER_FEATURE" parent="METADATA_LAYER" parent-key="lyrID" child="DATA_FEATURE"
child-key="lyrID" /></xsd:appinfo>
</xsd:annotation>
<xsd:element name="Map" sql:relation="METADATA_MAP">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Layer" sql:relation="METADATA_LAYER" sql:relationship="MAP_LAYER" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Feature" sql:relation="DATA_FEATURE" sql:relationship="LAYER_FEATURE" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="FeatureID" type="xsd:integer" />
<xsd:attribute name="FeatureType" type="xsd:integer" />
<xsd:attribute name="Geometry" type="xsd:string" />
<xsd:attribute name="Points" type="xsd:string" />
<xsd:attribute name="X" type="xsd:integer" />
<xsd:attribute name="Y" type="xsd:integer" />
<xsd:attribute name="Text" type="xsd:string" />
<xsd:attribute name="imageURL" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="lyrID" type="xsd:integer" />
<xsd:attribute name="lyrName" type="xsd:string" />
<xsd:attribute name="lyrType" type="xsd:integer" />
<xsd:attribute name="tableName" type="xsd:string" />
<xsd:attribute name="fillColor" type="xsd:string" />
<xsd:attribute name="strokeColor" type="xsd:string" />
<xsd:attribute name="strokeWidth" type="xsd:integer" />
<xsd:attribute name="minScale" type="xsd:integer" />
<xsd:attribute name="maxScale" type="xsd:integer" />
<xsd:attribute name="legendID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="mapID" type="xsd:integer" />
<xsd:attribute name="mapName" type="xsd:string" />
<xsd:attribute name="mapDescription" type="xsd:string" />
<xsd:attribute name="Width" type="xsd:integer" />
<xsd:attribute name="Height" type="xsd:integer" />
<xsd:attribute name="Scale" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>

xsl文件:xsl.xslt
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<xsl:output method="xml" indent="no" media-type="image/svg+xml"/>



<xsl:template match="Project">
<xsl:apply-templates select="Map"/>
</xsl:template>

<xsl:template match="Map">
<svg id="body" viewBox="0 0 800 600" xmlns:mysvg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">

<xsl:attribute name="width">
<xsl:value-of select="@Width" />
</xsl:attribute>

<xsl:attribute name="height">
<xsl:value-of select="@Height" />
</xsl:attribute>

<xsl:attribute name="id">
<xsl:value-of select="@mapName" />
</xsl:attribute>

<xsl:apply-templates select="Layer"/>
</svg>

</xsl:template>

<xsl:template match="Layer">
<g>
<xsl:attribute name="id">
<xsl:value-of select="normalize-space(@lyrName)" />
</xsl:attribute>
<xsl:attribute name="class">
<xsl:value-of select="@lyrName" />
</xsl:attribute>
<xsl:apply-templates select="Feature"/>
</g>
</xsl:template>

<xsl:template match="Feature">


<xsl:if test="@FeatureType[.='1']">
<circle r="1" style="fill:black" >
<xsl:attribute name="id">
<xsl:value-of select="@FeatureID" />
</xsl:attribute>
<xsl:attribute name="cx">
<xsl:value-of select="@X"/>
</xsl:attribute>
<xsl:attribute name="cy">
<xsl:value-of select="@Y"/>
</xsl:attribute>
</circle>
</xsl:if>
<xsl:if test="@FeatureType[.='2']">
<polyline style="fill:red">
<xsl:attribute name="id">
<xsl:value-of select="@FeatureID" />
</xsl:attribute>

<xsl:attribute name="points">
<xsl:value-of select="@Points" />
</xsl:attribute>
</polyline>
</xsl:if>

<xsl:if test="@FeatureType[.='3']">
<polygon style="fill:blue">
<xsl:attribute name="id">
<xsl:value-of select="@FeatureID" />
</xsl:attribute>

<xsl:attribute name="points">
<xsl:value-of select="@Points" />
</xsl:attribute>

</polygon>
</xsl:if>


<xsl:if test="@FeatureType[.='5']">
<text style="fill:blue">
<xsl:attribute name="id">
<xsl:value-of select="@FeatureID" />
</xsl:attribute>

<xsl:attribute name="id">
<xsl:value-of select="@FeatureID" />
</xsl:attribute>
<xsl:attribute name="x">
<xsl:value-of select="@X"/>
</xsl:attribute>
<xsl:attribute name="y">
<xsl:value-of select="@Y"/>
</xsl:attribute>
<xsl:value-of select="@Text"/>

</text>
</xsl:if>
</xsl:template>





</xsl:stylesheet>

数据库中有几个表 ,可以从schema文件中看到,填充数据没有问题,使用层次结构显示该XML文件, 更新的时候显示的错误是
Microsoft.Data.SqlXml.SqlXmlException: SQLXML: error loading XML result (XML document must have a top level element.
) ---> System.Runtime.InteropServices.COMException (0x80004005): SQLXML: error loading XML result (XML document must have a top level element.
)
at Microsoft.Data.SqlXml.Common.ISQLXMLCommandManagedInterface.ExecuteToOutputStream()
at Microsoft.Data.SqlXml.SqlXmlCommand.innerExecute(Stream strm)
--- 内部异常堆栈跟踪的结尾 ---
at Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteStream()
at Microsoft.Data.SqlXml.SqlXmlCommand.ExecuteNonQuery()
at Microsoft.Data.SqlXml.SqlXmlAdapter.Update(DataSet ds)
at WA6.Form1.button2_Click(Object sender, EventArgs e) in c:\documents and settings\asalei\my documents\visual studio projects\wa6\form1.cs:line 334



另外如果有对在ASP.NET在中使用SVG有兴趣的可以跟我联系 ,直接发展内短信把



...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
晓峰-Bitcoin 2003-12-24
  • 打赏
  • 举报
回复
ding
晓峰-Bitcoin 2003-12-22
  • 打赏
  • 举报
回复
多谢楼上 但是好像不是代码的问题 我只是想要问问这样能够更新数据库马?
elite2018 2003-12-22
  • 打赏
  • 举报
回复
你 试试 debug , 要不 给我 发代码 , 我 帮你 调试 一下 zhaoxun@onest.net
孟子E章 2003-12-20
  • 打赏
  • 举报
回复
你可以用隐藏的幀进行定时刷新
可扩展标记语言 科技名词定义 中文名称: 可扩展标记语言 英文名称: extensible markup language;XML 定义: 用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 应用学科: 地理学(一级学科);地理信息系统(二级学科) 以上内容由全国科学技术名词审定委员会审定公布 百科名片 可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输。XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。 目录 格式特性 简明语法 编辑本段格式特性   XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引、排序、查找、相关一致性等,XML仅仅是展示数据。事实上XML与其他数据表现形式最大的不同是:他极其简单。这是一个看上去有点琐细的优点,但正是这点使XML与众不同。   XML与HTML的设计区别是:XML是用来存储数据的,重在数据本身。而HTML是用来定义数据的,重在数据的显示模式。   XML的简单使其易于在任何应用程序中读写数据,这使XML很快成为数据交换的唯一公共语言,虽然不同的应用软件也支持其它的数据交换格式,但不久之后他们都将支持XML,那就意味着程序可以更容易的与Windows,Mac OS,Linux以及其他平台下产生的信息结合,然后可以很容易加载XML数据到程序中并分析他,并以XML格式输出结果。   为了使得SGML显得用户友好,XML重新定义了SGML的一些内部值和参数,去掉了大量的很少用到的功能,这些繁杂的功能使得SGML在设计网站时显得复杂化。XML保留了SGML的结构化功能,这样就使得网站设计者可以定义自己的文档类型,XML同时也推出一种新型文档类型,使得开发者也可以不必定义文档类型。 编辑本段简明语法   SGML常用来定义针对HTML的文档类型定义(DTD),同时它也常用于编写XML的DTD。SGML的问题就在于,它允许出现一些奇怪的语法,这让创建HTML的解析器成为一个大难题:   1 某些起始标签不允许出现结束标签,例如HTML中标签。包含了结束标签就会出现错误。   2 某些起始标签可以选择性出现结束标签或者隐含了结束标签   3 某些起始标签要求必须出现结束标签,例如HTML中[removed]标签。   4 标签可以以任何顺序嵌套。即使结束标签不按照起始标签的逆序出现也是允许的,例如,This is a sample string是正确的。   5 某些特性要求必须包含值,例如中的src特性。   6 某些特性不要求一定有值,例如中的nowrap特性。   7 定义特性的两边有没有加上双引号都是可以的,所以都是允许的。   这些问题使建立一个SGML语言的解析器变成了一项艰巨的任务。判断何时应用以上规则的困难导致了SGML语言的定义一直停滞不前。以这些问题作为出发点,XML逐渐步入我们的视野。   XML去掉了之前令许多开发人员头疼的SGML的随意语法。在XML中,采用了如下的语法:   1 任何的起始标签都必须有一个结束标签。   2 可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如XML解析器会将其翻译成。   3 标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如this is a samplestring。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。   4 所有的特性都必须有值。   5 所有的特性都必须在值的周围加上双引号。   这些规则使得开发一个XML解析器要简便得多,而且也除去了解析SGML中花在判断何时何地应用那些奇怪语法规则上的工作。仅仅在XML出现后的前六年就衍生出多种不同的语言,包括MathML、SVG、RDF、RSS、SOAP、XSLT、XSL-FO,而同时也将HTML改进为XHTML。 WEB技术 HTML HTML ▪ XHTML ▪ HTML 5 ▪ CSS ▪ TCP/IP XML XMLXSLXSLT ▪ XSL-FO ▪ XPath ▪ XPointer ▪ XLink ▪ DTD ▪ XML Schema ▪ DOM ▪ XForms ▪ SOAP ▪ WSDL ▪ RDF ▪ RSS ▪ WAP ▪ Web Services Web脚本 JavaScript ▪ HTML DOM ▪ DHTML ▪ VBScript ▪ AJAX ▪ jQuery ▪ JSON ▪ E4X ▪ WMLScript Serv脚本 SQL ▪ ASP ▪ ADO ▪ PHP .NET Microsoft.NET ▪ ASP.NET ▪ .NET Mobile 多媒体 SMIL ▪ SVG 扩展阅读: 1 因为XML是W3C制定的,XML的标准化工作由W3C的XML工作组负责,该小组成员由来自各个地方和行业的专家组成,他们通过email交流对XML标准的意见,并提出自己的看法 (www.w3.org/TR/WD-xml)。因为XML 是个公共格式, (它不专属于任何一家公司),你不必担心XML技术会成为少数公司的盈利工具,XML不是一个依附于特定浏览器的语言。
C# XML入门经典——C#编程人员必备的XML技能 作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 第1章 在C#中使用XML的原因1.1 使用XML的原因1.1.1 开放性1.1.2 简单性1.1.3 自我描述性1.1.4 互操作性1.1.5 结构1.1.6 分开结构和内容1.1.7 可扩展性1.2 什么是XML1.2.1 XML涉及多种语言1.2.2 XML文档1.3 使用XML的对象1.3.1 内容表示1.3.2 B2B电子商务1.3.3 远程过程调用1.3.4 数据存储和访问1.3.5 不使用XML的情况1.4 XML标准1.4.1 什么是W3C1.4.2 XML标准1.4.3 与XML相关的标准1.4.4 标准重要的原因1.5 XML如何适应.NET1.5.1 在.NET Framework中使用XML1.5.2 .NET中的XML支持1.6 小结第2章 XML概述2.1 XML的概念2.1.1 XML元素2.1.2 XML属性2.1.3 XML解析器2.1.4 构建XML2.1.5 XML文档的各个组成部分2.2 创建格式良好的XML文档2.2.1 XML中的元素2.2.2 XML中的属性2.2.3 在XML使用注释2.3 验证XML文档的有效性2.3.1 文档类型定义2.3.2 XML Schema2.3.3 XML编码2.4 小结第3章 在.NET中使用XML3.1 XML如何适合.NET3.1.1 XML3.1.2 文档对象模型(DOM)3.1.3 命名空间3.1.4 DTD和XML Schema3.1.5 XPath 3.1.6 XSLT3.2 .NET Framework使用XML3.2.1 配置文件3.2.2 ADO.NET3.2.3 SOAP和Web服务3.3 案例分析——电话簿样式应用程序3.4 小结第4章 在.NET中读取XML4.1 流模型4.1.1 流模型和DOM的比较4.1.2 流模型中的变体4.2 XmlTextReader类4.2.1 XmlTextReader属性4.2.2 读取属性4.2.3 读取较大的数据块4.3 XmlNodeReader类4.4 XmlValidatingReader类4.5 小结第5章 在.NET中编写XML5.1 利用.NET类编写XML文档5.2 XmlWriter类5.2.1 XmlWriter方法5.2.2 XmlWriter属性5.3 XmlWriter类5.3.1 XmlTextWriter构造函数5.3.2 XmlTextWirter属性5.3.3 处理XmlTextWirter5.3.4 写入较大的数据块5.4 小结第6章 在.NET中实现DOM6.1 文档对象模型6.1.1 文档对象模型与流模型6.1.2 .NET DOM继承模型6.2 XmlNode类6.2.1 XmlNode的定义6.2.2 XmlNode的属性6.2.3 XmlNode的方法6.3 XmlDocument类6.3.1 创建节点6.3.2 加载和保存6.3.3 迭代XmlDocument实例6.3.4 编辑XML文档6.4 案例分析6.4.1 体系结构6.4.2 应用程序详细信息6.4.3 加载用户联系人6.4.4 搜索联系人6.4.5 导出联系人6.4.6 导入其他联系人6.5 小结第7章 XPath和.NET7.1 System.Xml.XPath命名空间7.2 .NET中的XPath类7.2.1 XPathDocument类

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧