XML 模式;有效属性值列表中的多个

2023-12-31

我对使用 XML 模式相当陌生,所以如果这比我自己认为的更微不足道,请原谅我的无能。

我正在尝试创建一个必需属性,该属性必须包含列表中的 1 个或多个以空格分隔的字符串值。列表为4种典型的HTTP请求方式;get, post, put, and delete.

因此有效的元素包括:

<rule methods="get" />
<rule methods="get post" />
<rule methods="post put delete" />

而无效元素包括:

<rule methods="get get" />
<rule methods="foobar post" />
<rule methods="get;post;put" />

我尝试过用枚举和长度来愚弄,但我不相信我理解我需要做什么(或者就此而言,如果它实际上是可能的,尽管看起来似乎应该是)


这就是我现在所处的位置,感谢@tdrury:

<xs:attribute name="methods" use="required">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:whiteSpace value="collapse" />
            <xs:pattern value="(?:(?:get|post|put|delete)\s?){1,4}" />
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

哪个有效,除了重复(such as get get or post post post) 和不存在的空格 (such as getpost or postputdelete)


Edit:

经过一番尝试后,我想到了一个想法:枚举所有可能的序列。值得庆幸的是,这个列表是(暂且)固定为四种常用的运输方式,get, post, put, and delete,所以我想:

<xs:restriction base="xs:string">
    <xs:whiteSpace value="collapse" />
    <xs:enumeration value="delete" />
    <xs:enumeration value="put" />
    <xs:enumeration value="put delete" />
    <xs:enumeration value="post" />
    <xs:enumeration value="post delete" />
    <xs:enumeration value="post put" />
    <xs:enumeration value="post put delete" />
    <xs:enumeration value="get" />
    <xs:enumeration value="get delete" />
    <xs:enumeration value="get put" />
    <xs:enumeration value="get put delete" />
    <xs:enumeration value="get post" />
    <xs:enumeration value="get post delete" />
    <xs:enumeration value="get post put" />
    <xs:enumeration value="get post put delete" />
</xs:restriction>

任何人都可以看到这会的原因not是个好主意吗?


基本问题也可以通过枚举来解决:

<xs:attribute name="methods" use="required">
    <xs:simpleType>
        <xs:restriction>
            <xs:simpleType>
                <xs:list>
                    <xs:simpleType>
                        <xs:restriction base="xs:token">
                            <xs:enumeration value="get"/>
                            <xs:enumeration value="post"/>
                            <xs:enumeration value="put"/>
                            <xs:enumeration value="delete"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:list>
            </xs:simpleType>
            <xs:minLength value="1"/>
        </xs:restriction>
    </xs:simpleType>
</xs:attribute>

不幸的是,这与<xs:pattern>解决方案,并且无法验证列表中的每个令牌都是唯一的。但是它确实解决了空白问题(getpost会被拒绝)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML 模式;有效属性值列表中的多个 的相关文章

随机推荐

  • 如何以声明方式使用数据绑定参数创建 RouteUrls?

    我正在使用 ASP NET 4 中的新路由功能 Web 表单 而不是 MVC 现在我有一个绑定到数据源的 asp ListView 其中一个属性是ClientID我想用它从 ListView 项目链接到另一个页面 在global asax我
  • 使用 Picasso 和自定义 Transform 对象加载大图像

    从 Android Gallery 使用 startActivityForResult 加载 大 图像 gt 1 5MB 时 我使用 Picasso 遇到内存不足异常 我使用自定义 Target 对象 因为我需要在位图准备就绪时对其进行预处
  • 城市街道的程序生成?

    我读过 L Systems Parish Muller 和 Kelly McCabe 并尝试实施this https stackoverflow com questions 12956334 how is l systems for roa
  • Coldfusion 为某些类添加 id

    目前我有一堆 HTML 存储在一个变量中 我将其输出到看起来有点像这样的页面 p class firstpara some stuff p p class subhead a heading p p class subsubhead a s
  • 处理 Silverlight 单元测试中的依赖对象

    一段时间以来 我一直在使用 NUnit 和 Moq 以及 Silverlight 代码编写单元测试 我一直遇到的一个问题与 DependencyObjects 有关 如果有任何东西是从 DependencyObject 派生的 那么我无法在
  • 理解和调试 `asyncio.TimeoutError from None` 错误

    我遇到了 aiohttp 的问题 出现以下错误 但不确定修复它的最佳方法 Traceback most recent call last File app app services file ingestion utils py line
  • 检查文件是否包含某些内容

    感谢之前的回答 我可以使用以下命令测试文件是否存在 if empty glob filename endif 我现在想检查该文件是否filename包含文本text 如果可能的话 我想仅使用本机 vimscript 来执行此操作 而不是调用
  • 如何覆盖 Firefox 插件中内置的 XPCOM 组件?

    我第一次涉足 Firefox 扩展开发 到目前为止进展顺利 但我遇到了一个问题 我需要做的一件事是覆盖内置的 nsIPromptService 并用我自己的东西替换它 我在这里完成了基本的 XPCOM 组件创建教程 并让 hello wor
  • 捏合缩放和平移

    我有一个以 LinearLayout 作为主要布局的活动 在该布局中 有一个按钮可将视图 R layout motor block 添加到主布局 R id layout LayoutInflater inflater LayoutInfla
  • 重写句子,同时保留语义

    是否可以使用WordNet http wordnet princeton edu 重写一个句子 使句子的语义仍然相同 或大部分相同 假设我有这样一句话 Obama met with Putin last week 是否可以使用 WordNe
  • malloc()/free() 的对齐限制

    较旧的 K R 第二版 和我读过的其他 C 语言文本讨论了动态内存分配器的实现 其风格为malloc and free 通常还会顺便提及一些有关数据类型对齐限制的内容 显然 某些计算机硬件架构 CPU 寄存器和内存访问 限制了存储和寻址某些
  • 如何通过 Chrome 内容脚本下载文件?

    This 所以答案 https stackoverflow com a 24162238 1830334详细介绍了如何通过 Chrome 扩展程序下载文件 但我使用的是内容脚本 对 Chrome API 的访问受到限制 https deve
  • 使用 C# 删除项目时自动计算列表视图中项目的总价值

    我使用列表视图作为购物车 我需要知道当我删除商品时如何重新计算购物车的总价值 这是我添加到列表视图的代码 private void btnACart Click object sender EventArgs e int value 0 f
  • 从日期时间转换为 INT

    在我的 SSIS 包中 我必须将值从 DateTime 转换为相应的 INTEGER 值 已提供以下示例 关于如何转换这些有什么想法吗 DATETIME INT 1 1 2009 39814 2 1 2009 39845 3 1 2009
  • Visual Studio Community 2015 中的空白应用程序 (XAML) 等效项

    我正在阅读 Head First C 第 3 版 文本 其中包含特定于 VS 2012 的说明 但在 VS Community 2015 中找不到等效内容 文本显示使用 Windows Store gt Blank App XAML 开始一
  • 如何使用 Cython 将 python 函数作为参数传递给 c++ 函数

    这是我的设置 我有下一个要包装的 C 类 Foo h class Foo public typedef int MyType typedef int ArgType1 typedef int ArgType2 typedef MyType
  • Symfony2 Doctrine2 与两个拥有方和 Doctrine 命令行工具的多对多关系

    在我的 Symdony2 项目中 我有两个相关实体 Service 和 ServiceGroup 这应该是多对多关系 因为每个组可以有多个服务 每个服务可以属于多个组 此外 我需要一个用户界面来管理服务和组 因此 在编辑服务时 用户应该能够
  • 无法上传应用程序 - “上传到 itunes 商店时发生错误”

    我正在尝试将我的应用程序上传到商店 这不是第一次 所以我对这个过程很熟悉 我已尝试通过管理器 首选方法 和应用程序加载器进行尝试 但两者都提供了模糊的错误消息 我最近更新到 Xcode 4 试图修复它 我的存档项目验证一切正常 但在点击提交
  • for 循环没有按预期工作

    程序将询问用户该物品的代码 然后程序会将物品的状态更改为不可用 代码工作正常 它改变了状态 但 else 内的代码仍在运行 并且找不到打印项目 这是代码 public void stopSellingItem boolean invalid
  • XML 模式;有效属性值列表中的多个

    我对使用 XML 模式相当陌生 所以如果这比我自己认为的更微不足道 请原谅我的无能 我正在尝试创建一个必需属性 该属性必须包含列表中的 1 个或多个以空格分隔的字符串值 列表为4种典型的HTTP请求方式 get post put and d