我有一个像这样的XML示例:
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer # Sci-Fi</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy # Teen</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
目标是对XML结构和数据完整性进行验证
示例:
1)。 “图书”必须包含<author>
,<title>
,<genre>
,<price>
等。还必须检查其数据类型。
2)。元素<genre>
的值必须针对数据库中的表进行验证,并确定它们是否存在(有效)。在有效的情况下,我们将从该表中提供替代(通用)值,以便我们可以选择是否坚持旧值或建议值。
问题:
1)。我应该使用哪个DTD标记来确定某个元素必须针对数据库进行验证?
2)。什么样的Schema验证更适合这种情况(DTD-XSD-XDR)?
3)。关于如何在<genre>
元素的情况下可视化建议值和现有值的任何建议?
赞赏任何提示或代码片段。
答案 0 :(得分:0)
Here是一些示例XML模式(XSD)。您基本上可以只为您的book元素交换shiporder
元素,它甚至可以用于验证数据类型并提供正则表达式。
我不确定validated again a table in database
是什么意思。实际值是否必须在数据库中才能生效?对generalized
类型的建议是将该类型拆分为#
并使用第一个令牌?然后可以将其建议为一种类型。
var dom = new XmlDocument();
dom.Load("catalog.xml");
var res = dom.SelectNodes("//book/genre", mgr);
foreach(XmlNode node in res){
string s = node.InnerText();
string[] tokens= s.Split('#');
CheckAgainstDatabase(tokens[0]);
}