我可以在 XML 架构元素名称中使用正则表达式吗?

2023-11-30

我正在尝试为我传递的一段代码生成的 XML 创建一个 XML 架构。我将描述我的问题的简化版本。假设此代码生成的 XML 文件描述了一个文本文档;它看起来像这样:

<document>
  <r1>A line of text</r1>
  <r2 style="bold">Another line which is bold</r2>
  <r3>Yet another line</r3>
</document>

等等。我知道这不是最好的设计 - 如果行号是属性会更好,但这就是我必须处理的。它代表的是问题所在的行号。有没有某种方法可以编写一个架构,让我为一个指定正则表达式(或类似的)元素名称?我希望 XSD 文件看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://www.example.org/SimpleSchema" 
        xmlns:tns="http://www.example.org/SimpleSchema" 
        elementFormDefault="qualified">
    <xs:element name="document">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="rX" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:string">
                                <xs:attribute name="style" type="xs:string" />
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
 </xs:schema>

...第 9 行的“rX”是表示“的任何表达式”开头为的名字r以 X 结尾,它是一个整数".

我宁愿避免自己修复生成代码,所以我想看看是否可以先编写一个合适的 XML 架构。预先感谢大家。


XSD 要求按字面意思指定元素名称;我认为您想到的那种声明不受支持。

正如你所描述的(以 r 开头并以 X 结尾的名称,X 是一个整数),您想要编写的声明将在模式中产生无限数量的元素组件;我所知道的唯一支持这种事情的语法形式是 Aard van Wijngaarden 为 Algol 68 开发的两级语法。

因此,从短期来看,您最好的选择似乎是更改生成代码,或者为所需的声明发明自己的符号并从中生成合法的 XSD 架构文档。

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

我可以在 XML 架构元素名称中使用正则表达式吗? 的相关文章

随机推荐

  • 将配置文件添加到安装程序 (msi)

    如何将带有特殊的唯一生成令牌的配置文件添加到 msi 文件中 这个想法是 用户注册客户端计算机 安装程序在配置文件中提供唯一值 我读过有关 msidb exe 的内容 但我想知道是否有更好 更干净 更简单的解决方案 有任何想法吗 添加自定义
  • 使用固定大小的可拖动图片框裁剪图像

    我正在开发一个涉及裁剪图像的 winforms 项目 我的目标是通过使用固定大小的可拖动图片框控件来实现此目的 允许用户选择他们想要保留的区域 我的问题是当我裁剪图像时 它 works 但裁剪面积略有偏移 这是我得到的结果 需要澄清的是 我
  • 从代码创建材质并将其分配给对象

    我对 Unity3d 很陌生 我有一个预制件 其中包含 6 个四边形 使其成为一个立方体 我想将图像纹理添加到立方体的不同面 我从网络服务获取图像 因此我必须在脚本中添加或更改材料 我面临的问题是 我无法在游戏对象中找到材质属性 我试过下面
  • 如何在成员方法闭包中使用struct self

    如何在闭包中调用方法 get access token方法可以基于设置新的访问令牌self get base url fn fetch access token base url String gt String String new fn
  • 我需要有关此错误的帮助:java.lang.NoSuchMethodError

    我有这个Java代码 JPA String queryString SELECT b sum v votedPoints as votedPoint FROM Bookmarks b LEFT OUTER JOIN Votes v on v
  • 在 PHP 函数中检索推文中的所有主题标签

    我想使用 PHP 函数从推文中检索所有主题标签 我知道有人问过类似的问题here 但没有提示如何在 PHP 中准确实现这一点 由于我对正则表达式不太熟悉 因此不知道如何编写一个返回推文中所有主题标签的数组的函数 那么我该如何做到这一点 使用
  • 在新线程上执行 Java 回调

    在这个项目中 一个Manager执行事件排队 并使用回调返回事件结果 回调不扩展Runnable 管理器在单独的线程上运行 调度事件 一旦事件终止 同一线程就会调用回调 这意味着在前一个事件的回调终止之前不会调度下一个事件 为了避免这种情况
  • 如何使用 HtmlService 运行服务器端功能

    我是编程新手 我正在尝试使用 Google apps script 与 jQuery 连接几个按钮 我有一个电子表格和一个添加到其中的菜单 可以从 HtmlService 打开一个对话框 在对话框中 我有两个按钮 一个关闭对话框 另一个执行
  • SQL 数据库中的量纲和单位分析

    Problem 存储各种测量值的时间序列数据的关系数据库 Postgres 每个测量值可以具有特定的 测量类型 例如温度 溶解氧等 并且可以具有特定的 测量单位 例如华氏度 摄氏度 开尔文 百分比 毫克每升等 问题 有没有人建立过类似的数据
  • 如何将表格从 HTML 导出到 Excel 并在单元格中排列图像

    我需要将表格从 HTML 导出到 Excel 我的表格由姓名 年龄 日期 金额和带有小图像的图像列组成 我有一个生成 Excel 文档的函数 function downloadsalesreport var cache this tmpl
  • 为什么我在 iPhone X 模拟器的底部看到白色区域?

    我在 stackoverflow 上读过一些答案 比如这个在 iPhone X 模拟器的顶部和底部看到黑条 但似乎有点不同 因为我的问题只发生在屏幕的底部区域 正如我们所看到的 我的loginVC 底部有一个白色区域 我希望我的 UIIma
  • PHP - 如何有效地读取大型远程文件并在循环中使用缓冲区

    我想了解如何使用读取文件的缓冲区 假设我们有一个大文件 其中包含逐行的电子邮件列表 分隔符是经典的 n 现在 我们想要以类似的检查方式将每一行与数据库中表的每条记录进行比较line of file table row 如果您有一个普通文件
  • Grails 和 MySQL 连接异常

    我有一个正在生产中的 Grails 应用程序 今天早上我收到警报 发现服务器无法解析 雄猫不停地旋转 我研究了一下 看起来这与 MySQL 导致连接在 8 小时不活动后超时有关 我在 stackoverflow 上找到了例子有类似问题的人
  • UI-Router $state.$current 任意状态的包装器

    这是用例 给定一个 stateConfig 对象 我可以访问state url 但这仅返回该配置对象中指定的 URL 而不是包含状态父级 URL 的 URL 我需要构建完整的 URL 以传递到 urlMatcherFactory compi
  • 将 Linq 与 2D 数组一起使用,未找到选择

    我想使用 Linq 查询 2D 数组 但出现错误 找不到源类型 SimpleGame ILandscape 的查询模式的实现 未找到 选择 您是否缺少对 System Core dll 的引用或 System Linq 的 using 指令
  • Python:如何检查有符号数是正数、负数还是无?

    简单来说 我正在输入一个值 我想确定该值是否为 alpha 如果它不是 alpha 我想检查它是否是数字 如果它是一个数字 我想检查它是正数还是负数 我读了很多关于检查签名号码的内容 例如 50 有两种方法 我们可以使用这样的东西 try
  • 无法在 Windows 10、Strawberry Perl 上使用 LWP::UserAgent 从 Perl 访问本地主机上的 selenium 服务器

    在 Windows 10 上 我安装了geckodriver exe from https github com mozilla geckodriver releases和 硒服务器来自https www selenium dev down
  • 在 Google Spreadsheet API 上获取合并单元格宽度

    我正在使用 Google Spreadsheet API 将包含工人轮班的文档转换为事件日历 唯一的问题是班次是由根据天和小时合并的单元格表示的 天和小时作为行 不同的工作时段作为列 当我读取某个已合并并跨越 6 个单元格的单元格时 我无法
  • Angular 9 生产错误:无法设置只有 getter 的(抽象)类 MyFilter { } 的属性 ɵfac

    我在库中有一个抽象组件 没有常春藤 带有 Directive 装饰器具有一些继承给其子级的基本属性和功能 当我尝试在任何项目中使用该库时 我在浏览器控制台中收到以下错误 Uncaught TypeError Cannot set prope
  • 我可以在 XML 架构元素名称中使用正则表达式吗?

    我正在尝试为我传递的一段代码生成的 XML 创建一个 XML 架构 我将描述我的问题的简化版本 假设此代码生成的 XML 文件描述了一个文本文档 它看起来像这样