首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSD xs的使用:anyType

XSD xs的使用:anyType
EN

Stack Overflow用户
提问于 2014-10-16 09:07:38
回答 1查看 1.1K关注 0票数 1

我希望为大约20个模式提供XML解析器,它们表示不同的域数据集。实例共享一个公共的部件信息,但是有一个单独的部件数据,这在模式之间是不同的。因此,xml实例具有所有相同的元素类型信息,但对于数据有不同的元素类型。

现在,当我收到一段XML时,我首先想知道它属于哪种类型的模式。这些信息是信息的一部分。然后,我对正确的模式进行解析,以提取数据。为了找出这种类型,我想实现一个“公共”解析器,其中的数据是type=xs:anyType的,解析过程中忽略了它的内容,因为我在第二步就得到了数据。

由于我不想将所有不同的域类型都放在一个模式中,所以有一个缺点,就是事先不知道要应用的正确模式。我可以应用所有不同的解析器并检查验证错误,但这并不是非常有效。

这个解决方案是可以接受的,还是一个更好的解决方案?

非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2014-10-16 09:47:06

在你的具体情况下,很难说不潜水。

我通常不喜欢xs:anyType和种类,因为它们太通用了。模式通过这些类型/元素释放了它们的结构目的。

我认为,在您的情况下,您只需要一些灵活的多态/继承结构。

你可以考虑以下几种选择:

  • 使用xsi:type on DATA来指定它的确切类型。这可能会帮助您避免在某些环境中进行两阶段解析(例如,JAXB在JAXB中优雅地处理xsi:type )。
  • 考虑使用substitutionGroups。您可以将DATA定义为一个抽象元素,然后可以通过不同的具体元素(单独的DATA)替换它。

请记住,XML通常是定义交换协议的一种方法。因此,使用一个像any这样的完全通用的构造,基本上是说“给我发送一些东西”。如果不知道您的实现,就不可能理解所期望的内容。

对于内部用例,任何事情都是好的,但是内部的事情往往是公开的,有时是在非常短的时间内。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26400406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档