繁体   English   中英

针对架构和数据库的XML验证

[英]XML Validation against Schema and Database

我有一个这样的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)。 哪种模式验证更适合这种情况(DTD-XSD-XDR)?
3)。 关于在<genre>元素的情况下如何形象化建议值和现有值的任何建议?

任何提示或代码段均表示赞赏。

是一些示例XML模式(XSD)。 您基本上可以只将shiporder元素替换为book元素,它甚至涉及如何验证数据类型并提供正则表达式。

我不确定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]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM