SQLServer2005中date类型XML 验证无效如何解决?

SwordShadow 2007-10-18 10:13:51
对应的schema如下:

<xs:element name="论文发表日期" type="xs:date"/>

xml数据如下:

<论文发表日期>2006-02-01</论文发表日期>

在SQLServer2005中建立一个XML类型字段后绑定了上边的schema然后插入下边的数据,结果老是提示

XML 验证: 简单类型值 '2006-02-01' 无效。

谁知道怎么解决这个问题啊?或说下怎么保存日期数据也行。

...全文
109 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ70后 2011-10-19
  • 打赏
  • 举报
回复
正确格式:2005-10-18T22:13:51Z
QQ70后 2011-10-19
  • 打赏
  • 举报
回复
正确格式:'2005-10-18T22:13:51Z
hejunbin 2007-10-20
  • 打赏
  • 举报
回复
表示省略时间段
SwordShadow 2007-10-19
  • 打赏
  • 举报
回复
太谢谢啦!成功了!
不过还有点不明白....最后加的这个Z表示什么?
SwordShadow 2007-10-19
  • 打赏
  • 举报
回复
中间的空格都是复制过来的时候被系统加上去的....
SwordShadow 2007-10-19
  • 打赏
  • 举报
回复
还是不行啊,我的全部SQL语句如下,语法都对就是不行,麻烦帮我测试一下
日期换成2007-10-18T22:13:51 也不行啊,也没加空格

USE TempDB
GO

CREATE XML SCHEMA COLLECTION testSchema
AS
N'<?xml version="1.0" ?>
<xs:schema xmlns="http://test"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://test"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="论文信息">
<xs:complexType>
<xs:sequence>
<xs:element name="论文编号" type="xs:string"/>
<xs:element name="论文发表日期" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>'

CREATE TABLE testTable
(ID int IDENTITY PRIMARY KEY,
Data xml(DOCUMENT testSchema)
)

INSERT testTable VALUES(N'
<论文信息 xmlns="http://test">
<论文编号>000001</论文编号>
<论文发表日期>2006-02-01</论文发表日期>
</论文信息>
')
hejunbin 2007-10-19
  • 打赏
  • 举报
回复


CREATE XML SCHEMA COLLECTION testSchema
AS
N'<?xml version="1.0" ?>
<xs:schema xmlns="http://test"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://test"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="论文信息">
<xs:complexType>
<xs:sequence>
<xs:element name="论文编号" type="xs:string"/>
<xs:element name="论文发表日期" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>'

CREATE TABLE testTable
(ID int IDENTITY PRIMARY KEY,
Data xml(DOCUMENT testSchema)
)

INSERT testTable VALUES(N'<论文信息 xmlns="http://test">
<论文编号>000001</论文编号>
<论文发表日期>2006-08-08Z</论文发表日期>
</论文信息>
')

这样就可以了,测试通过。。。
SwordShadow 2007-10-19
  • 打赏
  • 举报
回复
INSERT testTable VALUES(N'
<论文信息 xmlns="http://test">
<论文编号>000002</论文编号>
<论文发表日期>2005-10-18T22:13:51</论文发表日期>
</论文信息>
')

提示:
消息 6926,级别 16,状态 1,第 1 行
XML 验证: 简单类型值 '2005-10-18T22:13:51' 无效。位置: /*:论文信息[1]/*:论文发表日期[1]
hejunbin 2007-10-19
  • 打赏
  • 举报
回复

2007-10-18T22:13:51

保存成这个样子,应该可以了。。。
xml中的日期默认不要空格,另外需要加时间上去
hejunbin 2007-10-19
  • 打赏
  • 举报
回复
<论文发表日期 >2007-10-18T22:13:51</论文发表日期 >

8,907

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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