【问题标题】:XSD extension to enable any element containing particular nodeXSD 扩展以启用包含特定节点的任何元素
【发布时间】:2017-01-23 10:20:24
【问题描述】:

我有一个 XML 和一个 XSD 方案,目前验证工作正常! 现在,在某些特定情况下,我想让任何 XML 元素都包含特定节点。

例如对于给定的 XML

<Root>
   <Element1 Name="test1>Text1</Element1>
   <Element2 Name="test2>
   </Element2>
</Root>

我想扩展 XSD 以便任何元素都可以包含节点 文本。

例如

<Root>
   <Template>element within Root</Template> 
   <Element1 Name="test1>Text1<Template>element inline</Template></Element1>
   <Element2 Name="test2>
      <Template>element within Element2</Template> 
   </Element2>
</Root>

非常感谢任何帮助!

BR

【问题讨论】:

  • 当您说“包含节点文本”时,您的意思是“包含字符数据以及子元素”?还是“包含模板元素”?或者是什么?问题似乎不清楚。
  • 对不起,是的,表达的不够清楚。这个想法是在任何地方添加一个节点

标签: xml xsd


【解决方案1】:

在 XSD 1.0 中很难做到这一点,您需要将 元素放置在您希望“任何”元素出现的位置。

然而它并不是那么简单,将 放置在错误的位置会产生歧义(并且是不允许的),这将涵盖您想要放置它们的几乎所有地方!

在 XSD 1.1 中,您可以使用 openContent (brief tutorial),但同样存在问题,.Net 本身不支持 XSD 1.1,但如果您在 java 中工作,那么 Xerces 支持 XSD 1.1(至少是 beta 版)我上次查看时可用)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 2013-03-21
    • 1970-01-01
    • 2017-08-28
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多