XSD Key/KeyRef 以及如何引用
我们使用 XML 定义模型,稍后用它来生成代码。该文件看起来像这样:
<def xmlns="http://tempuri.org/schema.xsd" xmlns:xsi="http://tempuri.org/schema.xsd">
<ns xmlns="" name="asd">
<alias name="NicknameType" ref="String" />
<alias name="SomethingType" ref="o3" />
<obj1 name="o1">
<element name="Nick" ref="NicknameType" />
</obj1 >
<obj2 name="o2">
<action name="a1">
<attribute name="TheObject1" ref="o1" />
</action>
</obj2 >
<obj3 name="o3">
<element name="SomeText" ref="int32" />
</obj3 >
</ns>
</def>
我真正想要强制执行的是,任何标记的 ref 属性都与别名标记、obj1 标记或 obj2 标记的名称标记或某些预定义值(例如 字符串或int32。 我已经在 XSD 中定义了该文件必须具有的一般结构。我想要通过 XSD 实现的目标是否可能实现?
谢谢
We use XML to define a model which we later use to generate code. The file looks something like this:
<def xmlns="http://tempuri.org/schema.xsd" xmlns:xsi="http://tempuri.org/schema.xsd">
<ns xmlns="" name="asd">
<alias name="NicknameType" ref="String" />
<alias name="SomethingType" ref="o3" />
<obj1 name="o1">
<element name="Nick" ref="NicknameType" />
</obj1 >
<obj2 name="o2">
<action name="a1">
<attribute name="TheObject1" ref="o1" />
</action>
</obj2 >
<obj3 name="o3">
<element name="SomeText" ref="int32" />
</obj3 >
</ns>
</def>
What I would really like to enforce is that the ref-attribute of any tag matches the name tag of either an alias-tag, an obj1-tag or an obj2 tag or some predefined values such as String or int32.
I already defined the general structure that the file has to have in XSD. Is what I would like to achieve even possible with XSD?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在 XSD 1.1 中可以使用断言,但在 XSD 1.0 中则不行。
Saxon 和 Xerces 中最新版本的模式处理器都支持断言。
It's possible in XSD 1.1, using assertions, but not in XSD 1.0.
The latest releases of the schema processors in Saxon and Xerces both have support for assertions.