XSD Key/KeyRef 以及如何引用

发布于 2024-10-14 16:46:45 字数 858 浏览 1 评论 0原文

我们使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪荡不羁 2024-10-21 16:46:45

在 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文