【问题标题】:Add an array to an XSD file to assign users to a permissions specification将数组添加到 XSD 文件以将用户分配给权限规范
【发布时间】:2010-09-03 03:24:30
【问题描述】:

我不是程序员,所以这可能有意义,也可能没有意义,但我希望能够将外部数据文件链接到 XSD 文件以指定用户是否属于某个组。

没有链接,代码目前为:

<xs:element name="user">
    <xs:simpleType>
      <xs:restriction base="xs:string">
          <xs:enumeration value="user1">
          <xs:enumeration value="user2">
          <xs:enumeration value="user3">
      </xs:restriction>
   </xs:simpleType>
</xs:element>

当由此创建 XML 文件时,用户必须来自列出的值之一。

我不想在 XSD 文件中列出各种枚举值,而是想链接到一个可以轻松更新的外部文件,以便将允许的用户添加到 XSD 文件中。

【问题讨论】:

    标签: xml schema xsd


    【解决方案1】:

    这在 XML 模式中是不可能的。选择是在架构内枚举(但很难添加值)或编写额外的外部验证代码(但你有代码要编写)。

    【讨论】:

    • 我不反对编写更多代码,并且在某个时候我们将为这个项目聘请一名程序员。当您谈论外部验证时,您指的是什么类型的代码?
    • 你有一些选择。要么使用 Schematron 之类的东西,要么必须自己用 Java 编写(例如,通过使用 JAXB 加载 XML 文档)
    • 感谢您的帮助,我会调查这些。
    【解决方案2】:

    您能解释一下这个模式是如何被使用的吗?这可能有助于为您找到一个好的解决方案。

    但是 xcut 是正确的,一般的答案是您所要求的无法完成。当然除了粘贴

     <xs:enumeration value="user4">
    

    当你有一个新用户时进入模式,这实际上很容易......

    【讨论】:

    • 我认为最好使用某种类型的 Java 编程(很可能是 Xcut 提到的 JAXB)来处理我想做的事情。显然,粘贴枚举值会添加新用户,但我希望设置一个值,该值将由具有可能用户列表的外部文件确定。从长远来看,希望将 XSD 文件保持为尽可能静态,并且只更改外部文件/文件以将用户添加/删除到各种权限级别。管理员/访客/等等。
    • 这实际上很容易做到……只需将 simpleType 定义为它在单独模式中的自己命名类型(与上面的匿名类型相反)。此架构将是您的外部用户文件。然后在您的主模式中,导入用户一个并仅引用该 simpleType。因此,您将用户放在一个单独的文件中,只是语法将采用 XSD 格式,但这没什么大不了的。
    猜你喜欢
    • 1970-01-01
    • 2014-06-04
    • 2023-03-18
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 2016-01-22
    相关资源
    最近更新 更多