我正在尝试为我传递的一段代码生成的 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(使用前将#替换为@)